活动文档容器
活动文档容器,例如 Microsoft Office 活页夹或 Internet Explorer,以便使用线程的文档在单个帧中不同的应用程序类型 (而不是强制为每创建和使用多个应用程序框架文件类型)。
MFC 提供激活完全支持文档在 COleDocObjectItem 类的容器。 可以使用 MFC 应用程序向导创建活动通过选择在 MFC 应用程序向导的 复合文档支持 页的 Active document container 复选框文档容器。 有关更多信息,请参见 创建活动文档容器应用程序。
有关激活的更多信息文档容器,请参见:
容器要求
激活在活动文档支持文档容器提示更多的接口实现:它还要求使用一个包含对象的接口知识。 同样适用于活动文档扩展,容器必须还可以使用中的这些扩展接口文档。
活动文档集成活动文档必须的容器:
能够处理对象存储是通过 IPersistStorage 接口,也就是说,它必须提供 IStorage 实例来对有效的每个文档。
支持 OLE 基本嵌入的功能文档,需要 “网站”对象 (一个) 每个文档或嵌入) 实现 IOleClientSite 和 IAdviseSink。
支持嵌入对象的就地激活或活动文档。 容器的站点对象必须实现 IOleInPlaceSite ,并且该容器的帧对象必须提供 IOleInPlaceFrame。
通过实现 IOleDocumentSite 为容器提供框架支持激活文件的扩展名与文档连接。 或者,容器可以实现活动文档界面 IOleCommandTarget 和 IContinueCallback 选取简单命令 (如打印或保存。
帧对象、视图对象和容器对象可以选择实现 IOleCommandTarget 支持某些命令计划,如 命令目标所述。 视图和容器对象还可以实现 IPrint 和 IContinueCallback,支持以编程方式打印,如 编程打印所述。
下图演示容器及其组件之间的概念关系 (在左侧),因此,活动文档及其视图 (右侧)。 活动文档存储和管理数据,因此,视图显示或选择数据的打印。 在粗体接口用于激活所需的这些文档参与;这些粗体和斜体是可选的。 需要其他接口。
只支持单个视图的文档可以实现视图和文档元素 (即相应的接口) 在一个具体类。 此外,一次只支持一个视图的容器站点可以将文档站点和视图站点添加到一个具体站点类。 容器的帧对象,但是,必须保持清单,并且,容器的文档元素只包含此处提供体系结构的一个全面介绍;它不影响的受激活的文档包容体系结构。
文档站点对象
在活动文档中包容体系结构,文档网站与在 OLE 的客户端站点对象文档添加 IOleDocument 接口的:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
文档站点概念上是一项或多项容器 “视图网站”对象。 每个视图站点对象与文档站点管理文档的各个视图对象。 如果容器只支持单个视图中每个文档站点,则它可以实现文档站点和视图站点具有一个具体类的。
查看网站对象
容器的视图站点对象管理文档的特定视图的显示空间。 除了支持标准 IOleInPlaceSite 接口外,视图网站通常还实现编程打印控件的 IContinueCallback 。 (视图对象为 IContinueCallback 从查询的说明,以便它在容器中。) 的所有对象实际上可能实现
支持多视图的容器必须能够创建在文档网站中的多个视图的网站对象。 这提供了每个视图在单独激活和停用服务根据通过 IOleInPlaceSite。
帧对象
容器的帧对象是,以便大部分,对于就地激活使用在 OLE 文档,即,一个处理菜单和工具栏协商的同一帧。 视图对象对此帧对象的通过 IOleInPlaceSite::GetWindowContext,还提供对表示容器的容器对象文档 (可以处理窗格级工具栏协商和包含的对象枚举)。
活动文档容器可以通过添加 IOleCommandTarget扩充帧。 这使它接收方式与则源自有效的文件的用户界面的命令此接口允许容器发送相同的命令 (例如 File New, 打开, 另存为, 打印; Edit Copy、 粘贴, 撤消和其他) 到活动文档。 有关更多信息,请参见 命令目标。