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
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 COleLinkingDoc
implementaçã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