Compartilhar via


Servidores: Itens do Servidor

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 COleServerItem classe define várias funções de membro substituíveis 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 CServerNode objeto é 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. Consulte o EXEMPLO DE OLE do MFC HIERSVR para obter 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

  1. Derivar uma classe de COleServerItem.

  2. Em sua classe derivada, substitua a OnDraw função membro.

    A estrutura chama OnDraw para 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 uma OnDraw função de membro, que é usada para renderizar o item quando o aplicativo de servidor está ativo.

  3. Implemente uma substituição da OnGetEmbeddedItem classe server-document. Para obter mais informações, consulte o artigo Servidores: Implementando Documentos do Servidor e o EXEMPLO de OLE do MFC HIERSVR.

  4. Implemente a função de membro da classe de item de OnGetExtent servidor. A estrutura chama essa função para recuperar o tamanho do item. A implementação padrão não tem ação.

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 no modo de exibição do servidor quanto em um metafilo 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 item do OnDraw servidor renderiza o item em um metafile em todos os outros casos (consulte COleServerItem::OnDraw).

Você pode evitar a duplicação de código escrevendo funções auxiliares em sua classe de servidor-documento e chamando-as das OnDraw funções em sua exibição e classes de item de servidor. O HIERSVR de exemplo OLE do MFC usa essa estratégia: as funções CServerView::OnDraw e CServerItem::OnDraw ambas as chamadas CServerDoc::DrawTree para renderizar o item.

A exibição e o item têm OnDraw funções de membro 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 desenha 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.

Consulte também

Servidores