Servidores: Servidor itens
Quando um contêiner inicia um servidor para que um usuário pode editar um item incorporado ou vinculado OLE, o aplicativo servidor cria um "item de servidor". O item de servidor, que é um objeto de uma classe derivada de COleServerItem, fornece uma interface entre o documento de servidor e aplicativo de contêiner.
O COleServerItem classe define várias funções de membro substituíveis que são chamadas por OLE, geralmente em resposta a solicitações do recipiente.Itens do servidor podem representar uma parte do documento do servidor ou o documento inteiro.Quando um item OLE é incorporado no documento contêiner, o item de servidor representa o documento do servidor inteiro.Quando o item OLE é vinculado, o item de servidor pode representar uma parte do documento do servidor ou todo o documento, dependendo se o link para uma parte ou todo.
No HIERSVR exemplo, por exemplo, a classe de item do servidor CServerItem, tem um membro é um ponteiro para um objeto da classe CServerNode.O CServerNode objeto é um nó no documento do aplicativo HIERSVR, que é uma árvore.Quando o CServerNode objeto é o nó raiz, o CServerItem objeto representa o documento inteiro.Quando o CServerNode objeto é um nó filho, o CServerItem objeto representa uma parte do documento.Consulte o MFC OLE exemplo HIERSVR para obter um exemplo dessa interação.
Implementação de itens do servidor
Se você usar o Assistente de aplicativo para produzir código "inicial" para seu aplicativo, tudo que você precisa fazer para incluir itens de servidor em seu código do starter é escolher uma das opções de servidor na página Opções de OLE.Se você estiver adicionando itens do servidor para um aplicativo existente, execute as seguintes etapas:
Para implementar um item de servidor
Derivar uma classe de COleServerItem.
Em sua classe derivada, substituir o OnDraw função de membro.
O framework chama OnDraw para processar o item OLE em um metarquivo.O aplicativo de contêiner usa esse metarquivo para processar o item.Classe de modo de exibição do aplicativo também tem um OnDraw função de membro, que é usada para processar o item quando o aplicativo de servidor está ativo.
Implementar uma substituição do OnGetEmbeddedItem para sua classe de documento do servidor.Para obter mais informações, consulte o artigo servidores: Implementando documentos servidor e o exemplo MFC OLE HIERSVR.
Implementar sua classe de item do servidor OnGetExtent função de membro.A estrutura chama esta função para recuperar o tamanho do item.A implementação padrão não faz nada.
Uma dica para arquitetura de Item do servidor
Conforme observado na Implementar itens de servidor, aplicativos de servidor devem ser capazes de processar itens no modo de exibição do servidor e em um metarquivo usado pelo aplicativo recipiente.Da biblioteca Microsoft Foundation Class aplicativo arquitetura, a classe de modo de exibição do OnDraw função de membro processa o item quando ele está sendo editado (consulte CView::OnDraw na Referência de biblioteca de classe).O item de servidor OnDraw apresenta o item em um metarquivo em todos os outros casos (consulte COleServerItem::OnDraw).
Você pode evitar a duplicação de código escrever funções auxiliares em sua classe de documento do servidor e chamando-os do OnDraw funções em suas classes view e o item de servidor.O MFC OLE exemplo HIERSVR usa essa estratégia: as funções CServerView::OnDraw e CServerItem::OnDraw chamam CServerDoc::DrawTree para processar o item.
O modo de exibição e o item tem OnDraw funções de membro porque eles desenhar sob condições diferentes.O modo de exibição deve levar em consideração tais fatores como zoom, tamanho da seleção e extensão, recorte e elementos de interface do usuário, como barras de rolagem.O item de servidor, por outro lado, sempre desenha todo o objeto OLE.
Para obter mais informações, consulte CView::OnDraw, classe derivada COleServerItem, COleServerItem::OnDraw, e COleServerDoc::OnGetEmbeddedItem na Referência de biblioteca de classe.