Partilhar via


Classe COleServerDoc

A classe base para documentos do servidor OLE.

Sintaxe

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Membros

Construtores públicos

Nome Descrição
COleServerDoc::COleServerDoc Constrói um objeto COleServerDoc.

Métodos públicos

Nome Descrição
COleServerDoc::ActivateDocObject Ativa o documento DocObject associado.
COleServerDoc::ActivateInPlace Ativa o documento para edição in-loco.
COleServerDoc::DeactivateAndUndo Desativa a interface do usuário do servidor.
COleServerDoc::DiscardUndoState Descarta informações de desfazer estado.
COleServerDoc::GetClientSite Recupera um ponteiro para a interface subjacente IOleClientSite.
COleServerDoc::GetEmbeddedItem Retorna um ponteiro para um item que representa todo o documento.
COleServerDoc::GetItemClipRect Retorna o retângulo de recorte atual para edição in-loco.
COleServerDoc::GetItemPosition Retorna o retângulo de posição atual, em relação à área de cliente do aplicativo de contêiner, para edição in-loco.
COleServerDoc::GetZoomFactor Retorna o fator de zoom em pixels.
COleServerDoc::IsDocObject Determina se o documento é um DocObject.
COleServerDoc::IsEmbedded Indica se o documento está inserido em um documento de contêiner ou em execução de forma autônoma.
COleServerDoc::IsInPlaceActive Retorna TRUE se o item estiver ativado no momento.
COleServerDoc::NotifyChanged Notifica os contêineres de que o usuário alterou o documento.
COleServerDoc::NotifyClosed Notifica os contêineres de que o usuário fechou o documento.
COleServerDoc::NotifyRename Notifica os contêineres de que o usuário renomeou o documento.
COleServerDoc::NotifySaved Notifica os contêineres de que o usuário salvou o documento.
COleServerDoc::OnDeactivate Chamado pela estrutura quando o usuário desativa um item que foi ativado no local.
COleServerDoc::OnDeactivateUI Chamado pela estrutura para destruir controles e outros elementos de interface do usuário criados para ativação in-loco.
COleServerDoc::OnDocWindowActivate Chamado pela estrutura quando a janela do quadro do documento do contêiner é ativada ou desativada.
COleServerDoc::OnResizeBorder Chamado pela estrutura quando a janela de quadro do aplicativo de contêiner ou a janela do documento é redimensionada.
COleServerDoc::OnShowControlBars Chamado pela estrutura para mostrar ou ocultar barras de controle para edição in-loco.
COleServerDoc::OnUpdateDocument Chamado pela estrutura quando um documento de servidor que é um item inserido é salvo, atualizando a cópia do item do contêiner.
COleServerDoc::RequestPositionChange Altera a posição do quadro de edição in-loco.
COleServerDoc::SaveEmbedding Informa ao aplicativo de contêiner para salvar o documento.
COleServerDoc::ScrollContainerBy Rola o documento do contêiner.
COleServerDoc::UpdateAllItems Notifica os contêineres de que o usuário alterou o documento.

Métodos protegidos

Nome Descrição
COleServerDoc::CreateInPlaceFrame Chamado pela estrutura para criar uma janela de quadro para edição in-loco.
COleServerDoc::DestroyInPlaceFrame Chamado pela estrutura para destruir uma janela de quadro para edição in-loco.
COleServerDoc::GetDocObjectServer Substitua essa função para criar um novo objeto CDocObjectServer e indique que este documento é um contêiner DocObject.
COleServerDoc::OnClose Chamado pela estrutura quando um contêiner solicita fechar o documento.
COleServerDoc::OnExecOleCmd Executa um comando especificado ou exibe ajuda para o comando.
COleServerDoc::OnFrameWindowActivate Chamado pela estrutura quando a janela do quadro do documento do contêiner é ativada ou desativada.
COleServerDoc::OnGetEmbeddedItem Chamado para obter um COleServerItem que representa todo o documento; usado para obter um item inserido. Implementação exigida.
COleServerDoc::OnReactivateAndUndo Chamado pela estrutura para desfazer as alterações feitas durante a edição in-loco.
COleServerDoc::OnSetHostNames Chamado pela estrutura quando um contêiner define o título da janela para um objeto inserido.
COleServerDoc::OnSetItemRects Chamado pela estrutura para posicionar a janela de quadro de edição in-loco dentro da janela do aplicativo de contêiner.
COleServerDoc::OnShowDocument Chamado pela estrutura para exibir ou ocultar o documento.

Comentários

Um documento do servidor pode conter objetos COleServerItem, que representam a interface do servidor para itens inseridos ou vinculados. Quando um aplicativo de servidor é iniciado por um contêiner para editar um item inserido, o item é carregado como seu próprio documento de servidor; o objeto COleServerDoc contém apenas um objeto COleServerItem, que consiste em todo o documento. Quando um aplicativo de servidor é iniciado por um contêiner para editar um item vinculado, um documento existente é carregado do disco; uma parte do conteúdo do documento é realçada para indicar o item vinculado.

COleServerDoc os objetos também podem conter itens da classe COleClientItem. Isso permite que você crie aplicativos de servidor de contêiner. A estrutura fornece funções para armazenar corretamente os itens COleClientItem enquanto atende os objetos COleServerItem.

Se o aplicativo de servidor não der suporte a links, um documento de servidor sempre conterá apenas um item de servidor, que representa todo o objeto inserido como um documento. Se o aplicativo de servidor oferecer suporte a links, ele deverá criar um item de servidor sempre que uma seleção for copiada para a Área de Transferência.

Para usar COleServerDoc, derive uma classe deste e implemente a função de membro OnGetEmbeddedItem, que permite que o servidor dê suporte a itens inseridos. Derive uma classe de COleServerItem implementar os itens em seus documentos e retorne objetos dessa classe de OnGetEmbeddedItem.

Para dar suporte a itens vinculados, COleServerDoc fornece a função de membro OnGetLinkedItem. Você pode usar a implementação padrão ou substituí-la se tiver sua própria maneira de gerenciar itens de documento.

Você precisa de uma classe derivada de COleServerDoc para cada tipo de documento de servidor compatível com seu aplicativo. Por exemplo, se o aplicativo de servidor der suporte a planilhas e gráficos, você precisará de duas classes derivadas de COleServerDoc.

Para mais informações sobre servidores, confira o artigo Servidores: como implementar um servidor.

Hierarquia de herança

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

COleServerDoc

Requisitos

Cabeçalho: afxole.h

COleServerDoc::ActivateDocObject

Ativa o documento DocObject associado.

void ActivateDocObject();

Comentários

Por padrão, COleServerDoc não dá suporte a documentos ativos (também conhecidos como DocObjects). Para habilitar esse suporte, consulte GetDocObjectServer e a classe CDocObjectServer.

COleServerDoc::ActivateInPlace

Ativa o item para edição in-loco.

BOOL ActivateInPlace();

Valor de retorno

Diferente de zero em caso de êxito; caso contrário, 0, que indica que o item está totalmente aberto.

Comentários

Essa função executa todas as operações necessárias para ativação in-loco. Ele cria uma janela de quadro in-loco, ativa-a e dimensiona-a para o item, configura menus compartilhados e outros controles, rola o item para a exibição e define o foco para a janela de quadros in-loco.

Essa função é chamada pela implementação padrão de COleServerItem::OnShow. Chame essa função se o aplicativo der suporte a outro verbo para ativação in-loco (como Play).

COleServerDoc::COleServerDoc

Constrói um objeto COleServerDoc sem se conectar com as DLLs do sistema OLE.

COleServerDoc();

Comentários

Você deve chamar COleLinkingDoc::Register para abrir comunicações com o OLE. Se você estiver usando COleTemplateServer em seu aplicativo, COleLinkingDoc::Register será chamado para você pela COleLinkingDocimplementação de OnNewDocument, OnOpenDocument e OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

A estrutura chama essa função para criar uma janela de quadro para edição in-loco.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Parâmetros

pParentWnd
Ponteiro para a janela do quadro do aplicativo de contêiner.

Valor de retorno

Um ponteiro para a janela de quadro in-loco ou NULL, se não tiver êxito.

Comentários

A implementação padrão usa informações especificadas no modelo de documento para criar o quadro. A exibição usada é a primeira exibição criada para o documento. Essa exibição é temporariamente desanexada do quadro original e anexada ao quadro recém-criado.

Essa é uma substituição avançada.

COleServerDoc::DeactivateAndUndo

Chame essa função se o aplicativo der suporte a Desfazer e o usuário escolher Desfazer depois de ativar um item, mas antes de editá-lo.

BOOL DeactivateAndUndo();

Valor de retorno

Diferente de zero em caso de êxito. Caso contrário, 0.

Comentários

Se o aplicativo de contêiner for gravado usando a biblioteca Microsoft Foundation Class, chamar essa função fará com que COleClientItem::OnDeactivateAndUndo seja chamado, o que desativa a interface do usuário do servidor.

COleServerDoc::DestroyInPlaceFrame

A estrutura chama essa função para destruir uma janela de quadro in-loco e retornar a janela de documento do aplicativo de servidor ao seu estado antes da ativação in-loco.

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Parâmetros

pFrameWnd
Ponteiro para a janela de quadro in-loco a ser destruída.

Comentários

Essa é uma substituição avançada.

COleServerDoc::DiscardUndoState

Se o usuário executar uma operação de edição que não pode ser desfeita, chame essa função para forçar o aplicativo contêiner a descartar suas informações de estado de desfazer.

BOOL DiscardUndoState();

Valor de retorno

Diferente de zero em caso de êxito. Caso contrário, 0.

Comentários

Essa função é fornecida para que os servidores que dão suporte a Desfazer possam liberar recursos que, de outra forma, seriam consumidos por informações de estado de desfazer que não podem ser usadas.

COleServerDoc::GetClientSite

Recupera um ponteiro para a interface subjacente IOleClientSite.

LPOLECLIENTSITE GetClientSite() const;

Valor de retorno

Recupera um ponteiro para a interface subjacente IOleClientSite.

COleServerDoc::GetDocObjectServer

Substitua essa função para criar um novo item CDocObjectServer e retorne um ponteiro para ele.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Parâmetros

pDocSite
Ponteiro para a interface IOleDocumentSite que conectará este documento ao servidor.

Valor de retorno

Um ponteiro para um CDocObjectServer; NULL se a operação falhou.

Comentários

Quando um servidor DocObject é ativado, o retorno de um ponteiro não NULL mostra que o cliente pode dar suporte a DocObjects. A implementação padrão retorna NULL.

Uma implementação típica para um documento que dá suporte ao DocObjects simplesmente alocará um novo objeto CDocObjectServer e o retornará ao chamador. Por exemplo:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

Chame essa função para obter um ponteiro para um item que representa todo o documento.

COleServerItem* GetEmbeddedItem();

Valor de retorno

Um ponteiro para um item que representa todo o documento; NULL se a operação falhou.

Comentários

Ele chama COleServerDoc::OnGetEmbeddedItem, uma função virtual sem implementação padrão.

COleServerDoc::GetItemClipRect

Chama a função membro GetItemClipRect para obter as coordenadas do retângulo de recorte do item que está sendo editado no local.

void GetItemClipRect(LPRECT lpClipRect) const;

Parâmetros

lpClipRect
Ponteiro para uma estrutura RECT ou um objeto CRect para receber as coordenadas de retângulo de recorte do item.

Comentários

As coordenadas estão em pixels em relação à área de cliente da janela do aplicativo de contêiner.

O desenho não deve ocorrer fora do retângulo de recorte. Normalmente, o desenho é restrito automaticamente. Use essa função para determinar se o usuário rolou para fora da parte visível do documento; em caso afirmativo, role o documento do contêiner conforme necessário por meio de uma chamada para ScrollContainerBy.

COleServerDoc::GetItemPosition

Chame a função membro GetItemPosition para obter as coordenadas do item que está sendo editado no local.

void GetItemPosition(LPRECT lpPosRect) const;

Parâmetros

lpPosRect
Ponteiro para uma estrutura RECT ou um objeto CRect para receber as coordenadas de retângulo de recorte do item.

Comentários

As coordenadas estão em pixels em relação à área de cliente da janela do aplicativo de contêiner.

A posição do item pode ser comparada com o retângulo de recorte atual para determinar até que ponto o item está visível (ou não visível) na tela.

COleServerDoc::GetZoomFactor

A função membro GetZoomFactor determina o "fator zoom" de um item que foi ativado para edição in-loco.

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

Parâmetros

lpSizeNum
Ponteiro para um objeto de classe CSize que conterá o numerador do fator de zoom. Pode ser NULL.

lpSizeDenom
Ponteiro para um objeto de classe CSize que conterá o numerador do fator de zoom. Pode ser NULL.

lpPosRect
Ponteiro para um objeto de classe CRect que descreve a nova posição do item. Se esse argumento for NULL, a função usará a posição atual do item.

Valor de retorno

Diferente de zero se o item estiver ativado para edição in-loco e seu fator de zoom for diferente de 100% (1:1); caso contrário, 0.

Comentários

O fator de zoom, em pixels, é a proporção do tamanho natural do item em sua extensão atual. Se o aplicativo de contêiner não tiver definido a extensão do item, sua extensão natural (conforme determinado por COleServerItem::OnGetExtent) será usada.

A função define seus dois primeiros argumentos para o numerador e o denominador do "fator zoom" do item. Se o item não estiver sendo editado no local, a função definirá esses argumentos como um valor padrão de 100% (ou 1:1) e retornará zero. Para obter mais informações, consulte Technical Note 40, Redimensionamento e zoom de MFC/OLE in-loco.

COleServerDoc::IsDocObject

Determina se o documento é um DocObject.

BOOL IsDocObject() const;

Valor de retorno

TRUE se o documento for um DocObject; caso contrário, FALSE.

COleServerDoc::IsEmbedded

Chame a função membro IsEmbedded para determinar se o documento representa um objeto inserido em um contêiner.

BOOL IsEmbedded() const;

Valor de retorno

Diferente de zero se o objeto COleServerDoc for um documento que representa um objeto inserido em um contêiner; caso contrário, 0.

Comentários

Um documento carregado de um arquivo não é inserido, embora possa ser manipulado por um aplicativo de contêiner como um link. Um documento inserido em um documento de contêiner é considerado inserido.

COleServerDoc::IsInPlaceActive

Chame a função membro IsInPlaceActive para determinar se o item está atualmente no estado ativo in-loco.

BOOL IsInPlaceActive() const;

Valor de retorno

Diferente de zero se o objeto COleServerDoc estiver ativo no local; caso contrário, 0.

COleServerDoc::NotifyChanged

Chame essa função para notificar todos os itens vinculados conectados ao documento que o documento foi alterado.

void NotifyChanged();

Comentários

Normalmente, você chama essa função depois que o usuário altera alguns atributos globais, como as dimensões do documento do servidor. Se um item OLE estiver vinculado ao documento com um link automático, o item será atualizado para refletir as alterações. Em aplicativos de contêiner escritos com a biblioteca Microsoft Foundation Class, a função de membro OnChange de COleClientItem é chamada.

Observação

Essa função está incluída para compatibilidade com o OLE 1. Novos aplicativos devem usar UpdateAllItems.

COleServerDoc::NotifyClosed

Chame essa função para notificar os contêineres de que o documento foi fechado.

void NotifyClosed();

Comentários

Quando o usuário escolhe o comando Fechar no menu Arquivo, NotifyClosed é chamado pela implementação de COleServerDoc da função membro OnCloseDocument. Em aplicativos de contêiner escritos com a biblioteca Microsoft Foundation Class, a função de membro OnChange de COleClientItem é chamada.

COleServerDoc::NotifyRename

Chame essa função depois que o usuário renomear o documento do servidor.

void NotifyRename(LPCTSTR lpszNewName);

Parâmetros

lpszNewName
Ponteiro para uma cadeia de caracteres especificando o novo nome do documento do servidor; Normalmente, esse é um caminho totalmente qualificado.

Comentários

Quando o usuário escolhe o comando Salvar como no menu Arquivo, NotifyRename é chamado pela implementação de COleServerDoc da função membro OnSaveDocument. Essa função notifica as DLLs do sistema OLE, que, por sua vez, notificam os contêineres. Em aplicativos de contêiner escritos com a biblioteca Microsoft Foundation Class, a função de membro OnChange de COleClientItem é chamada.

COleServerDoc::NotifySaved

Chame essa função depois que o usuário renomear o documento do servidor.

void NotifySaved();

Comentários

Quando o usuário escolhe o comando Salvar no menu Arquivo, NotifySaved é chamado pela implementação de COleServerDoc da função membro OnSaveDocument. Essa função notifica as DLLs do sistema OLE, que, por sua vez, notificam os contêineres. Em aplicativos de contêiner escritos com a biblioteca Microsoft Foundation Class, a função de membro OnChange de COleClientItem é chamada.

COleServerDoc::OnClose

Chamado pela estrutura quando um contêiner solicita que o documento do servidor seja fechado.

virtual void OnClose(OLECLOSE dwCloseOption);

Parâmetros

dwCloseOption
Um valor da enumeração OLECLOSE. Esse parâmetro pode ter um dos seguintes valores:

  • OLECLOSE_SAVEIFDIRTY O arquivo será salvo se tiver sido modificado.

  • OLECLOSE_NOSAVE O arquivo é fechado sem ser salvo.

  • OLECLOSE_PROMPTSAVE Se o arquivo tiver sido modificado, o usuário será solicitado a salvá-lo.

Comentários

A implementação padrão chama CDocument::OnCloseDocument.

Para obter mais informações e valores adicionais, consulte OLECLOSE no SDK do Windows.

COleServerDoc::OnDeactivate

Chamado pela estrutura quando o usuário desativa um item inserido ou vinculado que está ativo in-loco no momento.

virtual void OnDeactivate();

Comentários

Essa função restaura a interface do usuário do aplicativo de contêiner para o estado original, ocultando menus e outros controles que foram criados para ativação in-loco.

As informações de desfazer estado devem ser liberadas incondicionalmente neste momento.

Para saber mais, confira o artigo Ativação.

COleServerDoc::OnDeactivateUI

Chamada quando o usuário desativa um item que foi ativado no local.

virtual void OnDeactivateUI(BOOL bUndoable);

Parâmetros

bUndoable
Especifica se as alterações de edição podem ser desfeitas.

Comentários

Essa função restaura a interface do usuário do aplicativo de contêiner para o estado original, ocultando menus e outros controles que foram criados para ativação in-loco.

A estrutura sempre define bUndoable como FALSE. Se o servidor for compatível com desfazer e houver uma operação que possa ser desfeita, chame a implementação da classe base com bUndoable definido como TRUE.

COleServerDoc::OnDocWindowActivate

A estrutura chama essa função para ativar ou desativar uma janela de documento para edição in-loco.

virtual void OnDocWindowActivate(BOOL bActivate);

Parâmetros

bActivate
Especifica se a janela do documento deve ser ativada ou desativada.

Comentários

A implementação padrão remove ou adiciona os elementos de interface do usuário no nível do quadro conforme apropriado. Substitua essa função se você quiser executar ações adicionais quando o documento que contém o item for ativado ou desativado.

Para saber mais, confira o artigo Ativação.

COleServerDoc::OnExecOleCmd

A estrutura chama essa função para executar um comando especificado ou exibir ajuda para o comando.

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

Parâmetros

pguidCmdGroup
Um ponteiro para um GUID que identifica um conjunto de comandos. Pode ser NULL para indicar o grupo de comandos padrão.

nCmdID
O comando a ser executado. Deve estar no grupo identificado por pguidCmdGroup.

nCmdExecOut
A maneira como o objeto deve executar o comando, um ou mais dos seguintes valores da enumeração OLECMDEXECOPT:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
Ponteiro para um VARIANTARG que contém argumentos de entrada para o comando. Pode ser NULL.

pvarargOut
Ponteiro para um VARIANTARG para receber os valores de retorno de saída do comando. Pode ser NULL.

Valor de retorno

Retorna S_OK se tiver êxito; caso contrário, retorna um dos seguintes códigos de erro:

Valor Descrição
E_UNEXPECTED Ocorreu um erro inesperado
E_FAIL Ocorreu um erro
E_NOTIMPL Indica que o próprio MFC deve tentar traduzir e expedir o comando
OLECMDERR_E_UNKNOWNGROUP O pguidCmdGroup não é NULL, mas não especifica um grupo de comandos reconhecido
OLECMDERR_E_NOTSUPPORTED O nCmdID não é reconhecido como um comando válido no grupo pguidCmdGroup
OLECMDERR_DISABLED O comando identificado por nCmdID está desabilitado e não pode ser executado
OLECMDERR_NOHELP O chamador pediu ajuda no comando identificado por nCmdID, mas nenhuma ajuda está disponível
OLECMDERR_CANCELED O usuário cancelou a execução

Comentários

COleCmdUI pode ser usado para habilitar, atualizar e definir outras propriedades dos comandos de interface do usuário do DocObject. Depois que os comandos forem inicializados, você poderá executá-los com OnExecOleCmd.

A estrutura chama a função antes de tentar traduzir e expedir um comando de documento OLE. Você não precisa substituir essa função para lidar com comandos de documento OLE padrão, mas deve fornecer uma substituição para essa função se quiser manipular seus próprios comandos personalizados ou lidar com comandos que aceitam parâmetros ou retornam resultados.

A maioria dos comandos não aceita argumentos nem retorna valores. Para a maioria dos comandos, o chamador pode passar NULLs para pvarargIn e pvarargOut. Para comandos que esperam valores de entrada, o chamador pode declarar e inicializar uma variável VARIANTARG e passar um ponteiro para a variável em pvarargIn. Para comandos que exigem um único valor, o argumento pode ser armazenado diretamente no VARIANTARG e passado para a função. Vários argumentos devem ser empacotados no VARIANTARG usando um dos tipos com suporte (como IDispatch e SAFEARRAY).

Da mesma forma, se um comando retornar argumentos, espera-se que o chamador declare um VARIANTARG, inicialize-o para VT_EMPTY e passe seu endereço em pvarargOut. Se um comando retornar um único valor, o objeto poderá armazenar esse valor diretamente no pvarargOut. Vários valores de saída devem ser empacotados de alguma forma apropriada para o VARIANTARG.

A implementação da classe base dessa função percorrerá as estruturas de OLE_COMMAND_MAP associadas ao destino de comando e tentará expedir o comando para um manipulador apropriado. A implementação da classe base funciona apenas com comandos que não aceitam argumentos ou retornam valores. Se você precisar lidar com comandos que aceitam argumentos ou retornar valores, substitua essa função e trabalhe com os parâmetros pvarargIn e pvarargOut por conta própria.

COleServerDoc::OnFrameWindowActivate

A estrutura chama essa função quando a janela de quadro do aplicativo de contêiner é ativada ou desativada.

virtual void OnFrameWindowActivate(BOOL bActivate);

Parâmetros

bActivate
Especifica se a janela do quadro está sendo ativada ou desativada.

Comentários

A implementação padrão cancela todos os modos de ajuda em que a janela de quadros pode estar. Substitua essa função se você quiser executar processamento especial quando uma exibição for ativada ou desativada.

Para saber mais, confira o artigo Ativação.

COleServerDoc::OnGetEmbeddedItem

Chamado pela estrutura quando um aplicativo de contêiner chama o aplicativo de servidor para criar ou editar um item inserido.

virtual COleServerItem* OnGetEmbeddedItem() = 0;

Valor de retorno

Um ponteiro para um item que representa todo o documento; NULL se a operação falhou.

Comentários

Não há implementação padrão. Você deve substituir essa função para retornar um item que representa todo o documento. Esse valor retornado deve ser um objeto de uma classe derivada de COleServerItem.

COleServerDoc::OnReactivateAndUndo

A estrutura chama essa função quando o usuário opta por desfazer as alterações feitas em um item que foi ativado no local, alterado e desativado posteriormente.

virtual BOOL OnReactivateAndUndo();

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

A implementação padrão não faz nada, exceto retornar FALSE para indicar falha.

Substitua essa função se o aplicativo der suporte a desfazer. Normalmente, você executaria a operação de desfazer e ativaria o item chamando ActivateInPlace. Se o aplicativo de contêiner for gravado com a biblioteca Microsoft Foundation Class, chamar COleClientItem::ReactivateAndUndo fará com que essa função seja chamada.

COleServerDoc::OnResizeBorder

A estrutura chama essa função quando a janela de quadro do aplicativo de contêiner é ativada ou desativada.

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

Parâmetros

lpRectBorder
Ponteiro para uma estrutura RECT ou um objeto CRect que especifica as coordenadas da borda.

lpUIWindow
Ponteiro para um objeto de classe IOleInPlaceUIWindow que possui a sessão de edição in-loco atual.

bFrame
TRUE se lpUIWindow apontar para a janela de quadro de nível superior do aplicativo de contêiner ou FALSE se lpUIWindow apontar para a janela de quadro no nível do documento do aplicativo contêiner.

Comentários

Essa função redimensiona e ajusta barras de ferramentas e outros elementos de interface do usuário de acordo com o novo tamanho da janela.

Para obter mais informações, confira IOleInPlaceUIWindow no SDK do Windows.

Essa é uma substituição avançada.

COleServerDoc::OnSetHostNames

Chamado pela estrutura quando o contêiner define ou altera os nomes de host deste documento.

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parâmetros

lpszHost
Ponteiro para uma cadeia de caracteres que especifica o nome do aplicativo de contêiner.

lpszHostObj
Ponteiro para uma cadeia de caracteres que especifica o nome do contêiner para o documento.

Comentários

A implementação padrão altera o título do documento para todas as exibições que se referem a este documento.

Substitua essa função se o aplicativo definir os títulos por meio de um mecanismo diferente.

COleServerDoc::OnSetItemRects

A estrutura chama esta função para posicionar a janela de quadro de edição in-loco dentro da janela do aplicativo de contêiner.

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Parâmetros

lpPosRect
Ponteiro para uma estrutura RECT ou um objeto CRect que especifica a posição da janela do quadro in-loco em relação à área de cliente do aplicativo contêiner.

lpClipRect
Ponteiro para uma estrutura RECT ou um objeto CRect que especifica a posição da janela do quadro in-loco em relação à área de cliente do aplicativo contêiner.

Comentários

Substitua essa função para atualizar o fator de zoom do modo de exibição, se necessário.

Essa função geralmente é chamada em resposta a uma chamada RequestPositionChange, embora possa ser chamada a qualquer momento pelo contêiner para solicitar uma alteração de posição para o item in-loco.

COleServerDoc::OnShowControlBars

A estrutura chama essa função para mostrar ou ocultar as barras de controle do aplicativo de servidor associadas à janela de quadro identificada pelo pFrameWnd.

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Parâmetros

pFrameWnd
Ponteiro para a janela de quadro cujas barras de controle devem ser ocultas ou mostradas.

bShow
Determina se as barras de controle são mostradas ou ocultas.

Comentários

A implementação padrão enumera todas as barras de controle pertencentes a essa janela de quadro e as oculta ou mostra.

COleServerDoc::OnShowDocument

A estrutura chama a função OnShowDocument quando o documento do servidor deve estar oculto ou mostrado.

virtual void OnShowDocument(BOOL bShow);

Parâmetros

bShow
Especifica se a interface do usuário para o documento deve ser mostrada ou oculta.

Comentários

Se bShow for TRUE, a implementação padrão ativará o aplicativo de servidor, se necessário, e fará com que o aplicativo de contêiner role a janela para que o item fique visível. Se bShow for FALSE, a implementação padrão desativará o item por meio de uma chamada para OnDeactivate, em seguida, destruirá ou ocultará todas as janelas de quadro que foram criadas para o documento, exceto a primeira. Se nenhum documento visível permanecer, a implementação padrão ocultará o aplicativo do servidor.

COleServerDoc::OnUpdateDocument

Chamado pela estrutura ao salvar um documento que é um item inserido em um documento composto.

virtual BOOL OnUpdateDocument();

Valor de retorno

Diferente de zero se o documento foi salvo com êxito; caso contrário, 0.

Comentários

A implementação padrão chama as funções de membro COleServerDoc::NotifySaved e COleServerDoc::SaveEmbedding e marca o documento como limpo. Substitua essa função se você quiser executar um processamento especial ao atualizar um item inserido.

COleServerDoc::RequestPositionChange

Chame essa função de membro para que o aplicativo de contêiner altere a posição do item.

void RequestPositionChange(LPCRECT lpPosRect);

Parâmetros

lpPosRect
Ponteiro para uma estrutura RECT ou um objeto CRect que contém a nova posição do item.

Comentários

Essa função geralmente é chamada (em conjunto com UpdateAllItems) quando os dados em um item ativo in-loco são alterados. Após essa chamada, o contêiner pode ou não executar a alteração chamando OnSetItemRects. A posição resultante pode ser diferente da solicitada.

COleServerDoc::SaveEmbedding

Chame essa função para informar ao aplicativo de contêiner para salvar o objeto inserido.

void SaveEmbedding();

Comentários

Essa função é chamada automaticamente de OnUpdateDocument. Observe que essa função faz com que o item seja atualizado no disco, portanto, ele geralmente é chamado apenas como resultado de uma ação específica do usuário.

COleServerDoc::ScrollContainerBy

Chame a função membro ScrollContainerBy para rolar o documento do contêiner pela quantidade, em pixels, indicada por sizeScroll.

BOOL ScrollContainerBy(CSize sizeScroll);

Parâmetros

sizeScroll
Indica até que ponto o documento de contêiner deve rolar.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Valores positivos indicam a rolagem para baixo e para a direita; valores negativos indicam a rolagem para cima e para a esquerda.

COleServerDoc::UpdateAllItems

Chame essa função para notificar todos os itens vinculados conectados ao documento que o documento foi alterado.

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parâmetros

pSender
Ponteiro para o item que modificou o documento ou NULL se todos os itens forem atualizados.

lHint
Contém informações sobre a modificação.

pHint
Ponteiro para um objeto que armazena informações sobre a modificação.

nDrawAspect
Determina como o item deve ser desenhado. Este é um valor da enumeração DVASPECT. Esse parâmetro pode ter um dos seguintes valores:

  • DVASPECT_CONTENT O item é representado de maneira que ele possa ser exibido como um objeto inserido dentro do respectivo contêiner.

  • DVASPECT_THUMBNAIL O item é renderizado em uma representação de "miniatura" para que ele possa ser exibido em uma ferramenta de navegação.

  • DVASPECT_ICON O item é representado por um ícone.

  • DVASPECT_DOCPRINT O item é representado como se tivesse sido impresso usando o comando Imprimir no menu Arquivo.

Comentários

Normalmente, você chama essa função depois que o usuário altera o documento do servidor. Se um item OLE estiver vinculado ao documento com um link automático, o item será atualizado para refletir as alterações. Em aplicativos de contêiner escritos com a biblioteca Microsoft Foundation Class, a função de membro OnChange de COleClientItem é chamada.

Essa função chama a função membro OnUpdate para cada um dos itens do documento, exceto o item de envio, passando pHint, lHint e nDrawAspect. Use esses parâmetros para passar informações para as exibições sobre as modificações feitas no documento. É possível codificar informações usando IHint ou você pode definir uma classe derivada de CObject para armazenar informações sobre as modificações e passar um objeto dessa classe usando pHint. Substitua a função membro OnUpdate em sua classe derivada de COleServerItem para otimizar a atualização de cada item, dependendo se a apresentação foi alterada.

Confira também

HIERSVR de exemplo do MFC
Classe COleLinkingDoc
Gráfico da hierarquia
Classe COleDocument
Classe COleLinkingDoc
Classe COleTemplateServer