本文介绍将可选高级功能合并到现有容器应用程序中所需的步骤。 这些功能包括:
创建容器/服务器应用程序
容器/服务器应用程序是充当容器和服务器的应用程序。 Microsoft Word for Windows 就是一个示例。 你可以在其他应用程序中嵌入 Word for Windows 文档,还可以在 Word for Windows 文档中嵌入项。 将容器应用程序修改为容器和完整服务器(不能创建组合容器/微型服务器应用程序)的过程类似于创建完整服务器的过程。
“服务器:实现服务器”一文列出了实现服务器应用程序所需的许多任务。 如果将容器应用程序转换为容器/服务器应用程序,则需要执行其中一些相同的任务,将代码添加到容器。 下面列出了要考虑的重要事项:
应用程序向导创建的容器代码已初始化 OLE 子系统。 无需更改或添加支持的任何内容。
无论文档类的基类
COleDocument
在哪里,请将基类更改为COleServerDoc
。重写
COleClientItem::CanActivate
以避免在服务器本身用于就地编辑时就地编辑项。例如,MFC OLE 示例 OCLIENT 嵌入了容器/服务器应用程序创建的项。 打开 OCLIENT 应用程序并就地编辑容器/服务器应用程序创建的项。 编辑应用程序的项时,决定嵌入 MFC OLE 示例 HIERSVR 创建的项。 为此,不能使用就地激活。 必须完全打开 HIERSVR 才能激活此项。 由于 Microsoft Foundation 类库不支持此 OLE 功能,因此
COleClientItem::CanActivate
重写允许检查这种情况并防止应用程序中可能出现的运行时错误。
如果要创建新应用程序并希望它充当容器/服务器应用程序,请在应用程序向导的“OLE 选项”对话框中选择该选项,并且将自动创建此支持。 有关详细信息,请参阅文章 概述:创建 ActiveX 控件容器。 有关 MFC 示例的信息,请参阅 MFC 示例。
请注意,不能将 MDI 应用程序插入自身。 容器/服务器的应用程序不能插入到自身中,除非它是 SDI 应用程序。
嵌入对象的链接
“嵌入对象链接”功能使用户能够创建包含指向容器应用程序中嵌入对象的 OLE 链接的文档。 例如,在包含嵌入电子表格的字处理器中创建文档。 如果应用程序支持嵌入对象的链接,它可以粘贴到单词处理器文档中包含的电子表格的链接。 此功能允许应用程序使用电子表格中包含的信息,而无需知道字处理器最初获取的信息。
链接到应用程序中的嵌入对象
从
COleLinkingDoc
而不是COleDocument
从中派生文档类。使用 OLE 开发工具随附的类 ID 生成器为应用程序创建 OLE 类 ID (CLSID)。
将应用程序注册到 OLE。
创建对象
COleTemplateServer
作为应用程序类的成员。在应用程序类
InitInstance
的成员函数中,执行以下作:COleTemplateServer
通过调用对象的ConnectTemplate
成员函数将对象连接到文档模板。COleTemplateServer::RegisterAll
调用成员函数以向 OLE 系统注册所有类对象。调用
COleTemplateServer::UpdateRegistry
。 如果未使用“/Embedded”开关启动应用程序,则唯一应OAT_CONTAINER参数UpdateRegistry
。 这会将应用程序注册为可支持指向嵌入对象的链接的容器。如果使用“/Embedded”开关启动应用程序,则它不应显示其主窗口,类似于服务器应用程序。
MFC OLE 示例 OCLIENT 实现此功能。 有关如何执行此作的示例,请参阅 InitInstance
OCLIENT 中的函数。此示例应用程序的 CPP 文件。