COleLinkingDoc

CObject
 └CCmdTarget
    └CDocument
       └COleDocument
          └COleLinkingDoc


COleLinkingDoc 类是OLE容器文档的基类,它支持链接到它们所包含的嵌入项。一个支持链接到嵌入项的容器应用程序被称为“链接容器”。示例应用程序OCLIENT就是一个链接容器的例子。
当一个链接项的源是另一个文档的嵌入项时,则为了使嵌入项可以编辑,那个包容文档必须被载入。由于这个原因,当用户想要编辑链接项的源时,容器程序就必须能够由另一个容器应用程序启动。你的应用程序也必须使用COleTemplateServer类以使它在被其它的应用程序启动时能够创建文档。
为了使你的容器应用程序成为一个链接容器,请从COleLinkingDoc派生出你的文档类,而不是从COleDocument派生。同处理其它任何OLE容器程序一样,应用程序必须将自己的类设计为可存储应用程序的本地数据以及嵌入或链接项。而且,你必须为保存你的本地数据设计数据结构。如果你为你的应用程序的本地数据定义了一个CDocItem派生类,你就可以使用由COleDocument定义的界面来保存你的本地数据以及OLE数据。
为了使你的应用程序能够被另一个容器程序启动,请定义一个COleTemplateServer对象作为你的应用程序的CWinApp派生类的成员。
class COleClientApp : public CWinApp
{
  // ...
  protected:
    COleTemplateServer m_server;
  // ...
};
在你的CWinApp派生类的成员函数InitInstance中,创建一个文档模板并指定你的COleLinkingDoc派生类为一个文档类:
// CMainDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate( IDR_OCLIENTTYPE,
   RUNTIME_CLASS(CMainDoc),
   RUNTIME_CLASS(CSplitFrame),
   RUNTIME_CLASS(CMainView)
  );
pDocTemplate->SetContainerInfo( IDR_OCLIENTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);

通过调用COleTemplateServer对象的ConnectTemplate成员函数,将此COleTemplateServer对象连接到你的文档模板,并通过调用COleTemplateServer::RegisterAll函数向OLE系统注册所有的类对象。
m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();
CWinApp派生类的定义和InitInstance函数的示例,请参见MFC示例OCLIENT中的OCLIENT.H和OCLIENT.CPP。
如果要获取有关使用COleLinkingDoc的更多信息,请参见“Visual C++程序员指南”一书中的文章“容器:实现一个容器”。
#include <afxole.h>
请参阅:CDocTemplate


COleLinkingDoc类成员

构造
COleLinkingDoc构造一个COleLinkingDoc对象

操作
Register向OLE系统DLL注册此文档
Revoke撤消文档的注册

可重载
OnFindEmbeddedItem查找指定的嵌入项
OnGetLinkedItem查找指定的链接项