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
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