COleServerDoc Classe
A classe base para documentos do servidor OLE.
Sintaxe
class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc
Membros
Construtores Públicos
Designação | Descrição |
---|---|
COleServerDoc::COleServerDoc | Constrói um objeto COleServerDoc . |
Métodos Públicos
Designação | Descrição |
---|---|
COleServerDoc::ActivateDocObject | Ativa o documento DocObject associado. |
COleServerDoc::ActivateInPlace | Ativa o documento para edição in-loco. |
COleServerDoc::D eactivateAndUndo | Desativa a interface do usuário do servidor. |
COleServerDoc::D iscardUndoState | Descarta informações de desfazer. |
COleServerDoc::GetClientSite | Recupera um ponteiro para a interface IOleClientSite subjacente. |
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, relativo à área do cliente do aplicativo 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á incorporado em um documento contêiner ou em execução independente. |
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 da 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 ou janela de documento do aplicativo contêiner é 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 do servidor que é um item incorporado é salvo, atualizando a cópia do contêiner do item. |
COleServerDoc::RequestPositionChange | Altera a posição do quadro de edição in-loco. |
COleServerDoc::SaveEmbedding | Diz ao aplicativo 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
Designação | Descrição |
---|---|
COleServerDoc::CreateInPlaceFrame | Chamado pela estrutura para criar uma janela de quadro para edição in-loco. |
COleServerDoc::D estroyInPlaceFrame | 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 o fechamento do documento. |
COleServerDoc::OnExecOleCmd | Executa um comando especificado ou exibe ajuda para o comando. |
COleServerDoc::OnFrameWindowActivate | Chamado pela estrutura quando a janela de quadro do contêiner é ativada ou desativada. |
COleServerDoc::OnGetEmbeddedItem | Chamado para obter um COleServerItem que represente todo o documento; usado para obter um item incorporado. Implementação necessária. |
COleServerDoc::OnReactivateAndUndo | Chamado pela estrutura para desfazer 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 incorporado. |
COleServerDoc::OnSetItemRects | Chamado pela estrutura para posicionar a janela de quadro de edição in-loco dentro da janela do aplicativo contêiner. |
COleServerDoc::OnShowDocument | Chamado pela estrutura para mostrar ou ocultar o documento. |
Comentários
Um documento de servidor pode conter objetos de COleServerItem, que representam a interface do servidor para itens incorporados ou vinculados. Quando um aplicativo de servidor é iniciado por um contêiner para editar um item incorporado, o item é carregado como seu próprio documento de servidor; O objeto COleServerDoc
contém apenas um objeto COleServerItem
, consistindo 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
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 adequadamente os itens COleClientItem
durante a manutenção dos objetos COleServerItem
.
Se o aplicativo de servidor não oferecer suporte a links, um documento de servidor sempre conterá apenas um item de servidor, que representa todo o objeto incorporado 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 dela e implemente a função de membro OnGetEmbeddedItem, que permite que seu servidor ofereça suporte a itens incorporados. Derive uma classe de COleServerItem
para implementar os itens em seus documentos e retorne objetos dessa classe de OnGetEmbeddedItem
.
Para dar suporte a itens vinculados, COleServerDoc
fornece o OnGetLinkedItem função de membro. 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 COleServerDoc
para cada tipo de documento de servidor suportado pelo seu aplicativo. Por exemplo, se seu aplicativo de servidor oferece suporte a planilhas e gráficos, você precisará de duas classes derivadas do COleServerDoc
.
Para obter mais informações sobre servidores, consulte o artigo Servers: Implementing a Server.
Hierarquia de herança
COleServerDoc
Requerimentos
Cabeçalho: afxole.h
COleServerDoc::ActivateDocObject
Ativa o documento DocObject associado.
void ActivateDocObject();
Comentários
Por padrão, COleServerDoc
não suporta documentos ativos (também conhecido como DocObjects). Para habilitar esse suporte, consulte GetDocObjectServer e classe CDocObjectServer.
COleServerDoc::ActivateInPlace
Ativa o item para edição in-loco.
BOOL ActivateInPlace();
Valor de retorno
Diferente de zero se for bem-sucedido; caso contrário, 0, que indica que o item está totalmente aberto.
Comentários
Esta função executa todas as operações necessárias para a 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 visualização e define o foco para a janela de quadro in-loco.
Esta função é chamada pela implementação padrão do COleServerItem::OnShow. Chame essa função se seu aplicativo suportar 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 ligar para COleLinkingDoc::Register para abrir comunicações com OLE. Se você estiver usando COleTemplateServer em seu aplicativo, COleLinkingDoc::Register
será chamado para você pela implementação do COleLinkingDoc
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 pai do aplicativo 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. O modo de exibição usado é o primeiro modo de exibição criado para o documento. Esta vista é temporariamente separada da moldura original e anexada à moldura recém-criada.
Este é um avançado substituível.
COleServerDoc::D eactivateAndUndo
Chame essa função se seu aplicativo suportar 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 no sucesso; caso contrário, 0.
Comentários
Se o aplicativo contêiner for escrito usando a Microsoft Foundation Class Library, chamar essa função fará com que COleClientItem::OnDeactivateAndUndo seja chamado, o que desativa a interface do usuário do servidor.
COleServerDoc::D estroyInPlaceFrame
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 moldura in-loco a ser destruída.
Comentários
Este é um avançado substituível.
COleServerDoc::D iscardUndoState
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 no sucesso; caso contrário, 0.
Comentários
Essa função é fornecida para que os servidores que suportam 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 IOleClientSite
subjacente.
LPOLECLIENTSITE GetClientSite() const;
Valor de retorno
Recupera um ponteiro para o subjacente IOleClientSite interface.
COleServerDoc::GetDocObjectServer
Substitua essa função para criar um novo item de CDocObjectServer
e retornar 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 suportar DocObjects. A implementação padrão retorna NULL.
Uma implementação típica para um documento que suporta 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 o documento inteiro.
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
Chame a função de membro GetItemClipRect
para obter as coordenadas de recorte-retângulo 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 recorte-retângulo do item.
Comentários
As coordenadas estão em pixels em relação à área do cliente da janela do aplicativo contêiner.
O desenho não deve ocorrer fora do retângulo de corte. Normalmente, o desenho é automaticamente restringido. Use esta função para determinar se o usuário rolou para fora da parte visível do documento; em caso afirmativo, role o documento contêiner conforme necessário por meio de uma chamada para ScrollContainerBy.
COleServerDoc::GetItemPosition
Chame a função de membro GetItemPosition
para obter as coordenadas do item que está sendo editado no lugar.
void GetItemPosition(LPRECT lpPosRect) const;
Parâmetros
lpPosRect
Ponteiro para uma estrutura RECT
ou um objeto CRect
para receber as coordenadas do item.
Comentários
As coordenadas estão em pixels em relação à área do cliente da janela do aplicativo 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 de membro GetZoomFactor
determina o "fator de 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 manterá o numerador do fator de zoom. Pode ser NULL.
lpSizeDenom
Ponteiro para um objeto de classe CSize
que manterá o denominador 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 do item em sua extensão atual. Se o aplicativo 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 denominador do "fator de 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 a Nota Técnica 40, MFC/OLE In-Place Redimensionamento e Zoom.
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 de membro IsEmbedded
para determinar se o documento representa um objeto incorporado em um contêiner.
BOOL IsEmbedded() const;
Valor de retorno
Diferente de zero se o objeto COleServerDoc
for um documento que representa um objeto incorporado em um contêiner; caso contrário, 0.
Comentários
Um documento carregado de um arquivo não é incorporado, embora possa ser manipulado por um aplicativo contêiner como um link. Um documento incorporado em um documento contêiner é considerado incorporado.
COleServerDoc::IsInPlaceActive
Chame a função de 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 lugar; caso contrário, 0.
COleServerDoc::NotifyChanged
Chame essa função para notificar todos os itens vinculados conectados ao documento de que o documento foi alterado.
void NotifyChanged();
Comentários
Normalmente, você chama essa função depois que o usuário altera algum atributo global, 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 Microsoft Foundation Class Library, o OnChange função de membro do COleClientItem
é chamado.
Observação
Esta função está incluída para compatibilidade com OLE 1. Novos aplicativos devem usar UpdateAllItems.
COleServerDoc::NotifyClosed
Chame essa função para notificar o(s) contêiner(es) 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 do COleServerDoc
da função de membro do OnCloseDocument. Em aplicativos de contêiner escritos com a Microsoft Foundation Class Library, o OnChange função de membro do COleClientItem
é chamado.
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; Este é normalmente um caminho totalmente qualificado.
Comentários
Quando o usuário escolhe o comando Salvar como no menu Arquivo, NotifyRename
é chamado pela implementação do COleServerDoc
da função de membro do OnSaveDocument. Esta função notifica as DLLs do sistema OLE, que por sua vez notificam os contêineres. Em aplicativos de contêiner escritos com a Microsoft Foundation Class Library, o OnChange função de membro do COleClientItem
é chamado.
COleServerDoc::NotifySaved
Chame essa função depois que o usuário salvar o documento do servidor.
void NotifySaved();
Comentários
Quando o usuário escolhe o comando Salvar no menu Arquivo, NotifySaved
é chamado por COleServerDoc
implementação do OnSaveDocument. Esta função notifica as DLLs do sistema OLE, que por sua vez notificam os contêineres. Em aplicativos de contêiner escritos com a Microsoft Foundation Class Library, o OnChange função de membro do COleClientItem
é chamado.
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. Este parâmetro pode ter um dos seguintes valores:
OLECLOSE_SAVEIFDIRTY O ficheiro é guardado se tiver sido modificado.
OLECLOSE_NOSAVE O ficheiro é fechado sem ser guardado.
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 incorporado ou vinculado que está ativo no momento.
virtual void OnDeactivate();
Comentários
Essa função restaura a interface do usuário do aplicativo contêiner ao seu estado original e destrói todos os menus e outros controles que foram criados para ativação in-loco.
As informações do estado de desfazer devem ser liberadas incondicionalmente neste momento.
Para obter mais informações, consulte o artigo Activation.
COleServerDoc::OnDeactivateUI
Chamado 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 contêiner ao seu estado original, ocultando todos os menus e outros controles que foram criados para ativação in-loco.
A estrutura sempre define bUndoable como FALSE. Se o servidor suportar desfazer e houver uma operação que possa ser desfeita, chame a implementação de 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
bAtivar
Especifica se a janela do documento deve ser ativada ou desativada.
Comentários
A implementação padrão remove ou adiciona os elementos da interface do usuário no nível do quadro, conforme apropriado. Substitua essa função se quiser executar ações adicionais quando o documento que contém o item for ativado ou desativado.
Para obter mais informações, consulte o artigo Activation.
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 contendo 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
Devolve S_OK se for bem-sucedido; caso contrário, 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 despachar o comando |
OLECMDERR_E_UNKNOWNGROUP | pguidCmdGroup não é NULL, mas não especifica um grupo de comandos reconhecido |
OLECMDERR_E_NOTSUPPORTED | nCmdID não é reconhecido como um comando válido no grupo pguidCmdGroup |
OLECMDERR_DISABLED | O comando identificado por nCmdID está desativado e não pode ser executado |
OLECMDERR_NOHELP | Chamador pediu ajuda no comando identificado por nCmdID mas nenhuma ajuda está disponível |
OLECMDERR_CANCELED | Usuário cancelou a execução |
Comentários
COleCmdUI
pode ser usado para habilitar, atualizar e definir outras propriedades dos comandos da interface do usuário DocObject. Depois que os comandos forem inicializados, você poderá executá-los com OnExecOleCmd
.
A estrutura chama a função antes de tentar traduzir e despachar um comando de documento OLE. Você não precisa substituir essa função para manipular 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 manipular comandos que aceitam parâmetros ou retornam resultados.
A maioria dos comandos não usa argumentos ou valores de retorno. 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 dentro do VARIANTARG usando um dos tipos suportados (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á armazená-lo diretamente em pvarargOut. Vários valores de saída devem ser empacotados de alguma forma apropriada para o VARIANTARG.
A implementação de classe base dessa função percorrerá as estruturas de OLE_COMMAND_MAP associadas ao destino do comando e tentará despachar o comando para um manipulador apropriado. A implementação de classe base funciona apenas com comandos que não aceitam argumentos ou valores de retorno. Se você precisar lidar com comandos que aceitam argumentos ou valores de retorno, você deve substituir essa função e trabalhar com os parâmetros pvarargIn e pvarargOut.
COleServerDoc::OnFrameWindowActivate
A estrutura chama essa função quando a janela de quadro do aplicativo contêiner é ativada ou desativada.
virtual void OnFrameWindowActivate(BOOL bActivate);
Parâmetros
bAtivar
Especifica se a janela do quadro deve ser ativada ou desativada.
Comentários
A implementação padrão cancela todos os modos de ajuda em que a janela do quadro possa estar. Substitua essa função se quiser executar um processamento especial quando a janela do quadro estiver ativada ou desativada.
Para obter mais informações, consulte o artigo Activation.
COleServerDoc::OnGetEmbeddedItem
Chamado pela estrutura quando um aplicativo de contêiner chama o aplicativo de servidor para criar ou editar um item incorporado.
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á nenhuma implementação padrão. Você deve substituir essa função para retornar um item que representa o documento inteiro. Esse valor de retorno deve ser um objeto de uma classe derivada de COleServerItem
.
COleServerDoc::OnReactivateAndUndo
A estrutura chama essa função quando o usuário escolhe desfazer alterações feitas em um item que foi ativado no local, alterado e posteriormente desativado.
virtual BOOL OnReactivateAndUndo();
Valor de retorno
Diferente de zero se for bem-sucedido; caso contrário, 0.
Comentários
A implementação padrão não faz nada além de retornar FALSE para indicar falha.
Substitua essa função se seu aplicativo suportar desfazer. Normalmente, você executaria a operação de desfazer e, em seguida, ativaria o item chamando ActivateInPlace
. Se o aplicativo contêiner for escrito com a Microsoft Foundation Class Library, chamar COleClientItem::ReactivateAndUndo
fará com que essa função seja chamada.
COleServerDoc::OnResizeBorder
A estrutura chama essa função quando as janelas de quadro do aplicativo contêiner mudam de tamanho.
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 contêiner, ou FALSE se lpUIWindow apontar para a janela de quadro de nível de documento do aplicativo contêiner.
Comentários
Esta função redimensiona e ajusta barras de ferramentas e outros elementos da interface do usuário de acordo com o novo tamanho da janela.
Para obter mais informações, consulte IOleInPlaceUIWindow no SDK do Windows.
Este é um avançado substituível.
COleServerDoc::OnSetHostNames
Chamado pela estrutura quando o contêiner define ou altera os nomes de host para este documento.
virtual void OnSetHostNames(
LPCTSTR lpszHost,
LPCTSTR lpszHostObj);
Parâmetros
lpszHost
Ponteiro para uma cadeia de caracteres que especifica o nome do aplicativo 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 todos os modos de exibição referentes a este documento.
Substitua essa função se seu aplicativo definir os títulos por meio de um mecanismo diferente.
COleServerDoc::OnSetItemRects
A estrutura chama essa função para posicionar a janela de quadro de edição in-loco dentro da janela de quadro do aplicativo 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 de quadro in-loco em relação à área do cliente do aplicativo contêiner.
lpClipRect
Ponteiro para uma estrutura RECT
ou um objeto CRect
que especifica o retângulo de recorte da janela de quadro in-loco em relação à área do cliente do aplicativo contêiner.
Comentários
Substitua essa função para atualizar o fator de zoom da exibição, se necessário.
Esta 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 por pFrameWnd.
virtual void OnShowControlBars(
CFrameWnd* pFrameWnd,
BOOL bShow);
Parâmetros
pFrameWnd
Ponteiro para a janela do quadro cujas barras de controle devem ser ocultadas ou mostradas.
bMostrar
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 ser oculto ou mostrado.
virtual void OnShowDocument(BOOL bShow);
Parâmetros
bMostrar
Especifica se a interface do usuário para o documento deve ser mostrada ou ocultada.
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 contêiner role sua janela para que o item fique visível. Se bShow for FALSE, a implementação padrão desativa o item por meio de uma chamada para OnDeactivate
e, em seguida, destrói ou oculta 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 de servidor.
COleServerDoc::OnUpdateDocument
Chamado pela estrutura ao salvar um documento que é um item incorporado em um documento composto.
virtual BOOL OnUpdateDocument();
Valor de retorno
Diferente de zero se o documento foi atualizado com sucesso; caso contrário, 0.
Comentários
A implementação padrão chama o COleServerDoc::NotifySaved e COleServerDoc::SaveEmbedding funções de membro e, em seguida, marca o documento como limpo. Substitua essa função se quiser executar processamento especial ao atualizar um item incorporado.
COleServerDoc::RequestPositionChange
Chame essa função de membro para que o aplicativo 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
Esta função é geralmente chamada (em conjunto com UpdateAllItems
) quando os dados em um item ativo in-loco foram 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 dizer ao aplicativo contêiner para salvar o objeto incorporado.
void SaveEmbedding();
Comentários
Esta função é chamada automaticamente a partir de OnUpdateDocument
. Observe que essa função faz com que o item seja atualizado no disco, por isso geralmente é chamado apenas como resultado de uma ação específica do usuário.
COleServerDoc::ScrollContainerBy
Chame a função de membro ScrollContainerBy
para rolar o documento contêiner pela quantidade, em pixels, indicada por sizeScroll
.
BOOL ScrollContainerBy(CSize sizeScroll);
Parâmetros
sizeScroll
Indica até onde o documento contêiner deve rolar.
Valor de retorno
Diferente de zero se for bem-sucedido; caso contrário, 0.
Comentários
Valores positivos indicam rolagem para baixo e para a direita; valores negativos indicam rolagem para cima e para a esquerda.
COleServerDoc::UpdateAllItems
Chame essa função para notificar todos os itens vinculados conectados ao documento de 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 devem ser 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 . Este parâmetro pode ter um dos seguintes valores:
DVASPECT_CONTENT Item é representado de tal forma que pode ser exibido como um objeto incorporado dentro de seu contêiner.
DVASPECT_THUMBNAIL Item é renderizado em uma representação de "miniatura" para que possa ser exibido em uma ferramenta de navegação.
DVASPECT_ICON Item é representado por um ícone.
DVASPECT_DOCPRINT Item é representado como se fosse impresso usando o comando Imprimir do 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 Microsoft Foundation Class Library, o OnChange função de membro do COleClientItem
é chamado.
Esta função chama a função de membro OnUpdate
para cada um dos itens do documento, exceto o item de envio, passando pHint, lHinte nDrawAspect. Use esses parâmetros para passar informações aos itens sobre as modificações feitas no documento. Você pode codificar informações usando lHint ou 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 de membro OnUpdate
em sua classe derivada do COleServerItem
para otimizar a atualização de cada item, dependendo se sua apresentação foi alterada.
Ver também
Exemplo MFC HIERSVR
Classe COleLinkingDoc
Gráfico de Hierarquia
COleDocument Classe
Classe COleLinkingDoc
COleTemplateServer Classe