Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Quando um contêiner inicia um servidor para que um usuário possa editar um item OLE incorporado ou vinculado, o aplicativo de 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 do servidor e o aplicativo contêiner.
A COleServerItem classe define várias funções de membro substituíveis que são chamadas por OLE, geralmente em resposta a solicitações do contêiner. Os itens de servidor podem representar parte do documento do servidor ou o documento inteiro. Quando um item OLE é incorporado no documento de contêiner, o item de servidor representa todo o documento do servidor. Quando o item OLE está vinculado, o item de servidor pode representar uma parte do documento do servidor ou o documento inteiro, dependendo se o link é para uma parte ou para o todo.
No exemplo HIERSVR , por exemplo, a classe server-item, CServerItem, tem um membro que é um ponteiro para um objeto da classe CServerNode. O objeto CServerNode é um nó do documento da aplicação HIERSVR, que é uma árvore. Quando o CServerNode objeto é o nó raiz, o CServerItem objeto representa todo o documento. Quando o CServerNode objeto é um nó filho, o CServerItem objeto representa uma parte do documento. Consulte o exemplo OLE MFC HIERSVR para obter um exemplo dessa interação.
Implementando itens de servidor
Se você usar o assistente de aplicativo para produzir código "starter" para seu aplicativo, tudo o que você precisa fazer para incluir itens de servidor em seu código inicial é escolher uma das opções de servidor na página Opções OLE. Se você estiver adicionando itens de servidor a um aplicativo existente, execute as seguintes etapas:
Para implementar um item de servidor
Derivar uma classe de
COleServerItem.Na classe derivada, substitua a
OnDrawfunção de membro.A estrutura chama
OnDrawpara renderizar o item OLE em um metaarquivo. O aplicativo contêiner usa esse metarquivo para renderizar o item. A classe de exibição do seu aplicativo também tem umaOnDrawfunção de membro, que é usada para renderizar o item quando o aplicativo de servidor está ativo.Implemente uma substituição de
OnGetEmbeddedItempara a sua classe de documentos servidor. Para obter mais informações, consulte o artigo Servers: Implementing Server Documents e o exemplo de MFC OLE HIERSVR.Implemente a função de membro da classe de item do servidor
OnGetExtent. A estrutura chama essa função para recuperar o tamanho do item. A implementação padrão não faz nada.
Uma dica para a arquitetura Server-Item
Conforme observado em Implementando itens do servidor, os aplicativos de servidor devem ser capazes de renderizar itens na exibição do servidor e em um metarquivo usado pelo aplicativo contêiner. Na arquitetura de aplicativo da Microsoft Foundation Class Library, a função de membro da OnDraw classe de exibição renderiza o item quando ele está sendo editado (consulte CView::OnDraw na Referência da Biblioteca de Classes). O item do servidor OnDraw renderiza o item em um metaarquivo nos restantes casos (consulte COleServerItem::OnDraw).
Você pode evitar a duplicação de código escrevendo funções auxiliares em sua classe de documento de servidor e chamando-as das OnDraw funções em suas classes de exibição e item de servidor. O exemplo OLE MFC HIERSVR usa esta estratégia: as funções CServerView::OnDraw e CServerItem::OnDraw ambas chamam CServerDoc::DrawTree para renderizar o item.
A vista e o item têm funções de membro OnDraw porque são renderizados sob diferentes condições. A exibição deve levar em conta fatores como zoom, tamanho e extensão da seleção, recorte e elementos da interface do usuário, como barras de rolagem. O item de servidor, por outro lado, sempre desenha o objeto OLE inteiro.
Para obter mais informações, consulte CView::OnDraw, COleServerItem, COleServerItem::OnDraw e COleServerDoc::OnGetEmbeddedItem na Referência da Biblioteca de Classes.