Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.
Quando um contêiner inicia um servidor para que um usuário possa editar um item OLE inserido ou vinculado, o aplicativo de servidor cria um "item de servidor". O item do servidor, que é um objeto de uma classe derivada COleServerItem, fornece uma interface entre o documento do servidor e o aplicativo de contêiner.
A classe COleServerItem define várias funções de membro que podem ser substituídas e que são chamadas pelo OLE, geralmente em resposta a solicitações do contêiner. Os itens de servidor podem representar parte do documento do servidor ou do documento inteiro. Quando um item OLE é inserido no documento de contêiner, o item do servidor representa todo o documento do servidor. Quando o item OLE está vinculado, o item do servidor pode representar uma parte do documento do servidor ou do documento inteiro, dependendo se o link é para uma parte ou para o todo.
No exemplo HIERSVR , por exemplo, a classe de item de servidor tem CServerItemum membro que é um ponteiro para um objeto da classe CServerNode. O objeto CServerNode é um nó no documento do aplicativo 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. Veja o exemplo de OLE do MFC HIERSVR para um exemplo dessa interação.
Implementando itens de servidor
Se você usar o assistente de aplicativo para produzir o código "starter" para seu aplicativo, tudo o que você precisa fazer para incluir itens de servidor no código inicial é escolher uma das opções do 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 função membro
OnDraw.A estrutura chama
OnDrawpara renderizar o item OLE em um metafile. O aplicativo de contêiner usa esse metafile para renderizar o item. A classe de exibição do 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 classe de documento do servidor. Para obter mais informações, consulte o artigo Servidores: Implementando Documentos do Servidor e o EXEMPLO de OLE do MFC HIERSVR.Implemente a função membro
OnGetExtentda classe de item de servidor. A estrutura chama essa função para recuperar o tamanho do item. A implementação padrão não faz nada.
Uma dica para arquitetura de Server-Item
Conforme observado na Implementação de Itens de Servidor, os aplicativos de servidor devem ser capazes de renderizar itens tanto na visão do servidor quanto em um metafile usado pelo aplicativo de contêiner. Na arquitetura de aplicativo da Biblioteca de Classes do Microsoft Foundation, a função 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 OnDraw do item de servidor renderiza o item em um meta-arquivo em todos os outros casos (consulte COleServerItem::OnDraw).
Você pode evitar a duplicação de código escrevendo funções auxiliares na sua classe de documento do servidor e chamando-as a partir das funções OnDraw nas suas classes de exibição e de item do servidor. O exemplo OLE do MFC HIERSVR usa essa estratégia: ambas as funções CServerView::OnDraw e CServerItem::OnDraw chamam CServerDoc::DrawTree para renderizar o item.
A exibição e o item têm funções membro OnDraw porque desenham em condições diferentes. A exibição deve levar em conta fatores como zoom, tamanho e extensão da seleção, recorte e elementos de interface do usuário, como barras de rolagem. O item do servidor, por outro lado, sempre renderiza todo o objeto OLE.
Para obter mais informações, consulte CView::OnDraw, COleServerItem, COleServerItem::OnDraw e COleServerDoc::OnGetEmbeddedItem na Referência da Biblioteca de Classes.