活动文档

活动文档扩展 OLE 多个文档技术。这些扩展提供管理视图的其他接口形式,因此,对象可以在容器中运行,仍然保留为其显示和打印功能的控件。此过程可以显示文档外部帧 (如 Microsoft Office 活页夹或 Microsoft Internet Explorer) 和在本机框架 (例如产品自己的视图端口)。

本节描述函数 激活的要求文档。活动文档拥有设置数据和访问数据可以保存和检索存储的。它可以创建和管理在其数据的一个或多个视图。除了支持 OLE 通常嵌入和就地激活接口的文档,活动文档传达它能够通过 IOleDocument创建视图。通过此接口,容器可能需要创建 (也可能是枚举) 活动文档可以将显示视图。通过此接口,活动文档还提供有关其自身的其他信息,如它是否支持多视图或复杂的矩形。

下面是 IOleDocument 接口。请注意 IEnumOleDocumentViews 接口是 IOleDocumentView * 类型的标准 OLE 枚举数。

interface IOleDocument : IUnknown

{

HRESULT CreateView(

[in] IOleInPlaceSite *pIPSite,

[in] IStream *pstm,

[in] DWORD dwReserved,

[out] IOleDocumentView **ppView);

HRESULT GetDocMiscStatus([out] DWORD *pdwStatus);

HRESULT EnumViews(

[out] IEnumOleDocumentViews **ppEnum,

[out] IOleDocumentView **ppView);

}

每个活动文档必须具有此接口的一个视图框架提供程序。如果文档中在容器中嵌入,活动文档服务器必须提供视图帧。但是,激活时,文档时在活动嵌入文档容器,容器提供视图帧。

活动文档可以创建其数据 (例如,规则、大纲,页面布局 视图 的一个或多个类型,等等)。视图象数据中看到的筛选器。即使文档只有视图的一种类型,您可能仍为支持多种视图作为支持新的 windows 函数的方法 (例如,在 窗口 菜单的 新建窗口 项目在 Office 应用程序)。

激活的要求文档

在活动中显示文档容器必须活动文档:

  • 使用 OLE 复合文件作为其存储机制通过实现 IPersistStorage

  • 支持 OLE 基本嵌入的功能文档,包括 由文件创建。这需要接口 IPersistFileIOleObjectIDataObject

  • 支持一个或多个视图,每个能够就地激活上。即视图必须支持接口 IOleDocumentView 和接口 IOleInPlaceObjectIOleInPlaceActiveObject (使用容器的 IOleInPlaceSiteIOleInPlaceFrame 接口)。

  • 支持标准活动文档界面 IOleDocumentIOleCommandTargetIPrint

了解使用容器端接口何时以及如何在这些要求提示。

视图对象的要求

活动文档可以创建其数据的一个或多个视图。从功能上来说,这些视图与在特定方法上的端口显示的数据。如果活动文档只支持单个视图中,活动文档,并使用单个类,该单一视图中实现。IOleDocument::CreateView 返回相同的对象的 IOleDocumentView 接口指针。

在活动中表示文档容器,除了 IOleDocumentView外,视图组件必须支持 IOleInPlaceObjectIOleInPlaceActiveObject :

interface IOleDocumentView : IUnknown

{

HRESULT SetInPlaceSite([in] IOleInPlaceSite *pIPSite);

HRESULT GetInPlaceSite([out] IOleInPlaceSite **ppIPSite);

HRESULT GetDocument([out] IUnknown **ppunk);

[input_sync] HRESULT SetRect([in] LPRECT prcView);

HRESULT GetRect([in] LPRECT prcView);

[input_sync] HRESULT SetRectComplex(

[in] LPRECT prcView,

[in] LPRECT prcHScroll,

[in] LPRECT prcVScroll,

[in] LPRECT prcSizeBox);

HRESULT Show([in] BOOL fShow);

HRESULT UIActivate([in] BOOL fUIActivate);

HRESULT Open(void);

HRESULT CloseView([in] DWORD dwReserved);

HRESULT SaveViewState([in] IStream *pstm);

HRESULT ApplyViewState([in] IStream *pstm);

HRESULT Clone(

[in] IOleInPlaceSite *pIPSiteNew,

[out] IOleDocumentView **ppViewNew);

}

每个视图都有关联的视图站点,封装视图框架和视 (hwnd) 和矩形区域在该窗口)。该站点通过演示此功能标准 IOleInPlaceSite 接口。请注意有多个 HWND 的视是可能的。

通常,查看每种类型的具有不同的打印表示。因此视图和对应的视图站点应实现打印接口,如果 IPrintIContinueCallback,分别。视图帧必须与视图提供程序协商通过 IPrint ,打印时启动时,因此,标题、脚注、边距和相关组件正确打印。视图提供程序通过 IContinueCallback通知与打印相关的事件帧。有关使用这些接口的更多信息,请参见 编程打印

请注意,如果激活文档只支持单个视图,然后激活文档,并使用一个具体类,唯一视图中实现。IOleDocument::CreateView 返回相同的对象的 IOleDocumentView 接口指针。为简单起见,不需要的具有两个不同对象实例,只有需要某视图。

视图对象也是命令目标。通过实现 IOleCommandTarget 视图可以接收则源自容器的用户界面的命令 (例如 新建打开另存为,在 文件 菜单的 打印 ;并 复制粘贴撤消编辑 菜单)。有关更多信息,请参见 消息处理和命令目标

请参见

概念

活动文档包容