Classe COleLinkingDoc

A classe base para documentos de contêiner OLE que dão suporte à vinculação aos itens inseridos que eles contêm.

Sintaxe

class COleLinkingDoc : public COleDocument

Membros

Construtores públicos

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

Métodos públicos

Nome Descrição
COleLinkingDoc::Register Registra o documento com as DLLs do sistema OLE.
COleLinkingDoc::Revoke Revoga o registro do documento.

Métodos protegidos

Nome Descrição
COleLinkingDoc::OnFindEmbeddedItem Localiza o item inserido especificado.
COleLinkingDoc::OnGetLinkedItem Localiza o item vinculado especificado.

Comentários

Um aplicativo de contêiner que dá suporte à vinculação a itens inseridos é chamado de "contêiner de link". O aplicativo de exemplo OCLIENT é um exemplo de um contêiner de link.

Quando a origem de um item vinculado é um item inserido em outro documento, esse documento deve ser carregado para que o item inserido seja editado. Por esse motivo, um contêiner de link deve ser capaz de ser iniciado por outro aplicativo de contêiner quando o usuário quiser editar a origem de um item vinculado. Seu aplicativo também deve usar a classe COleTemplateServer para que ele possa criar documentos quando iniciado programaticamente.

Para tornar seu contêiner um contêiner de link, derive sua classe de documento de COleLinkingDoc em vez de COleDocument. Assim como acontece com qualquer outro contêiner OLE, você deve projetar sua classe para armazenar os dados nativos do aplicativo, bem como itens inseridos ou vinculados. Além disso, você deve criar estruturas de dados para armazenar seus dados nativos. Se você definir uma classe derivada de CDocItem para os dados nativos do aplicativo, poderá usar a interface definida por COleDocument para armazenar tanto seu dados nativos quanto seus dados OLE.

Para permitir que seu aplicativo seja iniciado programaticamente por outro contêiner, declare um objeto COleTemplateServer como membro da classe derivada de CWinApp do aplicativo:

class COleContainerApp : public CWinApp
{
protected:
   COleTemplateServer m_server;
   // remainder of class declaration omitted

Na função membro InitInstance da classe derivada de CWinApp, crie um modelo de documento e especifique sua classe derivada de COleLinkingDoc como a classe do documento:

// CMyLinkDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_LINKDOCTYPE,
   RUNTIME_CLASS(CMyLinkDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CMyLinkView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_OLECONTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);

Conecte seu objeto COleTemplateServer aos modelos de documento chamando a função membro ConnectTemplate do objeto e registre todos os objetos de classe com o sistema OLE chamando COleTemplateServer::RegisterAll:

m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();

Para obter um exemplo de definição de classe derivada de CWinApp e função InitInstance, consulte OCLIENT.H e OCLIENT.CPP no OCLIENT de exemplo do MFC.

Para obter mais informações sobre como usar COleLinkingDoc, consulte os artigos Contêineres: implementar um contêiner e Contêineres: recursos avançados.

Hierarquia de herança

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

Requisitos

Cabeçalho: afxole.h

COleLinkingDoc::COleLinkingDoc

Constrói um objeto COleLinkingDoc sem iniciar comunicações com as DLLs do sistema OLE.

COleLinkingDoc();

Comentários

Você deve chamar a função membro Register para informar ao OLE que o documento está aberto.

COleLinkingDoc::OnFindEmbeddedItem

Chamado pela estrutura para determinar se o documento contém um item OLE inserido com o nome especificado.

virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);

Parâmetros

lpszItemName
Ponteiro para o nome do item OLE inserido solicitado.

Valor de retorno

Um ponteiro para o item especificado; NULL se o item não for encontrado.

Comentários

A implementação padrão pesquisa na lista de itens inseridos um item com o nome especificado (a comparação de nomes diferencia maiúsculas e minúsculas). Substitua essa função se você tiver seu próprio método de armazenar ou nomear itens OLE inseridos.

COleLinkingDoc::OnGetLinkedItem

Chamado pela estrutura para verificar se o documento contém um item de servidor vinculado com o nome especificado.

virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);

Parâmetros

lpszItemName
Ponteiro para o nome do item OLE vinculado solicitado.

Valor de retorno

Um ponteiro para o item especificado; NULL se o item não for encontrado.

Comentários

A implementação COleLinkingDoc padrão sempre retorna NULL. Essa função é substituída na classe COleServerDoc derivada para pesquisar a lista de itens do servidor OLE para um item vinculado com o nome especificado (a comparação de nomes diferencia maiúsculas de minúsculas). Substitua essa função se você tiver implementado seu próprio método de armazenar ou recuperar itens de servidor vinculados.

COleLinkingDoc::Register

Informa às DLLs do sistema OLE que o documento está aberto.

BOOL Register(
    COleObjectFactory* pFactory,
    LPCTSTR lpszPathName);

Parâmetros

pFactory
Ponteiro para um objeto de alocador OLE (pode ser NULL).

lpszPathName
Ponteiro para o caminho totalmente qualificado do documento de contêiner.

Valor de retorno

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

Comentários

Chame essa função ao criar ou abrir um arquivo nomeado para registrar o documento com as DLLs do sistema OLE. Não é necessário chamar essa função se o documento representar um item inserido.

Se você estiver usando COleTemplateServer em seu aplicativo, Register será chamado para você pela implementação do COleLinkingDoc de OnNewDocument, OnOpenDocument e OnSaveDocument.

COleLinkingDoc::Revoke

Informa às DLLs do sistema OLE que o documento não está mais aberto.

void Revoke();

Comentários

Chame essa função para revogar o registro do documento com as DLLs do sistema OLE.

Você deve chamar essa função ao fechar um arquivo nomeado, mas geralmente não precisa chamá-la diretamente. Revoke é chamado para você pela implementação de COleLinkingDoc de OnCloseDocument, OnNewDocument, OnOpenDocument e OnSaveDocument.

Confira também

OCLIENT de exemplo do MFC
Classe COleDocument
Gráfico da hierarquia
Classe CDocTemplate