容器:高级功能

本文介绍需的步骤合并选项高级功能到现有的容器应用程序中。 这些功能包括:

  • 是容器和服务器的应用程序

  • 一个嵌入对象的一个 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 链接创建文档到您的容器应用程序内的嵌入对象。 例如,创建一个文档在包含嵌入式电子表格的字处理应用程序。 如果应用程序支持连接到嵌入对象,它可以粘贴链接到字处理器的包含电子表格文档。 此功能允许应用程序使用在电子表格包含的信息,而无需了解字处理器的最初获得它。

可在应用程序中嵌入对象链接

  1. 派生对文档从 COleLinkingDoc 的类 (而不是 COleDocument

  2. 创建 OLE 类 ID (CLSID) 应用程序中使用包含的类 ID 生成器用 OLE 开发工具。

  3. 注册 OLE 的应用程序。

  4. 创建一 COleTemplateServer 对象作为应用程序类的成员。

  5. 在应用程序类的 InitInstance 成员函数,请执行以下操作:

    • 连接到您的 COleTemplateServer 对象通过调用对象的成员函数 ConnectTemplate 文档模板。

    • 调用 COleTemplateServer::RegisterAll 成员函数向注册该 OLE 系统的所有类的对象。

    • 调用 COleTemplateServer::UpdateRegistry。 ,如果应用程序没有发生与 “/Embedded”开关,用于 UpdateRegistry 的唯一参数应为 OAT_CONTAINER 。 此注册应用程序充当可支持连接到嵌入对象的容器。

      如果应用程序生成与 “/Embedded”开关,则不应显示其主窗口,与服务器应用程序。

MFC OLE 示例 OCLIENT 实现此功能。 有关了如何实现此方法的示例,请参见本示例应用程序 OCLIENT.CPP 文件的 InitInstance 功能。

请参见

概念

容器

服务器