容器:高级功能
本文介绍需的步骤合并选项高级功能到现有的容器应用程序中。这些功能包括:
是容器和服务器的应用程序
一个嵌入对象的一个 OLE 链接
创建容器/服务器应用程序
容器/服务器应用程序是作为容器和服务器的应用程序。窗口的 Microsoft Word 是这样的示例。在其他应用程序中嵌入窗口的 Word 文档,因此,您在窗口的 Word 还可以嵌入项目文档。修改的容器应用程序处理是容器和完整的服务器 (不能创建组合容器/miniserver 应用程序) 类似于创建的完全服务器进程。
这篇文章 服务器:实现服务器 列出的很多任务实现服务器应用程序。如果将容器应用到容器/服务器应用程序,则需要执行一些相同的任务,将代码添加到容器。下面列出了重要的操作考虑:
应用程序向导创建的容器代码已经初始化该 OLE 子系统。无需更改或添加任何内容承载的支持。
记录类的基类是 COleDocument,将基类。 COleServerDoc。
例如,在服务器中仍存在时,编辑重写 COleClientItem::CanActivate 避免编辑项目。
例如, MFC OLE 示例 OCLIENT 嵌入了容器/服务器应用程序创建的项目。您打开 OCLIENT 应用程序,以及就地编辑您的容器/服务器应用程序创建的项目中。在编辑应用程序的项目时,您决定要嵌入 MFC OLE 示例创建的项目 HIERSVR。为此,您不能使用就地激活。必须完全打开 HIERSVR 激活该项目。由于 Microsoft 基础类库不支持此 OLE 功能,重写 COleClientItem::CanActivate 允许检查此情况和阻止应用程序的一个可能的运行时错误。
如果创建新应用程序并希望将作为容器/服务器应用程序中,选择 " OLE 选项 " 对话框的选项卡应用程序向导和属性支持将自动创建。有关更多信息,请参见中的文章 概述:创建 Activex 控件容器。有关 MFC 示例的信息,请参见 MFC 示例。
注意无法插入到 MDI 应用程序本身中。是容器/服务器的应用程序不能插入到自身,除非它是 SDI 应用程序。
嵌入对象的链接
嵌入对象功能的链接使用户在一个 OLE 链接创建文档到您的容器应用程序内的嵌入对象。例如,创建一个文档在包含嵌入式电子表格的字处理应用程序。如果应用程序支持连接到嵌入对象,它可以粘贴链接到字处理器的包含电子表格文档。此功能允许应用程序使用在电子表格包含的信息,而无需了解字处理器的最初获得它。
可在应用程序中嵌入对象链接
派生对文档从 COleLinkingDoc 的类 (而不是 COleDocument。
创建 OLE 类 ID (CLSID) 应用程序中使用包含的类 ID 生成器用 OLE 开发工具。
注册 OLE 的应用程序。
创建一 COleTemplateServer 对象作为应用程序类的成员。
在应用程序类的 InitInstance 成员函数,请执行以下操作:
连接到您的 COleTemplateServer 对象通过调用对象的成员函数 ConnectTemplate 文档模板。
调用 COleTemplateServer::RegisterAll 成员函数向注册该 OLE 系统的所有类的对象。
调用 COleTemplateServer::UpdateRegistry。,如果应用程序没有发生与 “/Embedded”开关,用于 UpdateRegistry 的唯一参数应为 OAT_CONTAINER 。此注册应用程序充当可支持连接到嵌入对象的容器。
如果应用程序生成与 “/Embedded”开关,则不应显示其主窗口,与服务器应用程序。
MFC OLE 示例 OCLIENT 实现此功能。有关了如何实现此方法的示例,请参见本示例应用程序 OCLIENT.CPP 文件的 InitInstance 功能。