CDocObjectServer 类

实现将常规 COleDocument 服务器接入完整 DocObject 服务器所需的其他 OLE 接口: IOleDocumentIOleDocumentViewIOleCommandTargetIPrint

语法

class CDocObjectServer : public CCmdTarget

成员

公共构造函数

名称 描述
CDocObjectServer::CDocObjectServer 构造 CDocObjectServer 对象。

公共方法

名称 描述
CDocObjectServer::ActivateDocObject 激活文档对象服务器,但不显示它。

受保护方法

名称 描述
CDocObjectServer::OnActivateView 显示 DocObject 视图。
CDocObjectServer::OnApplyViewState 还原 DocObject 视图的状态。
CDocObjectServer::OnSaveViewState 保存 DocObject 视图的状态。

备注

CDocObjectServer 派生自 CCmdTarget,并且与 COleServerDoc 密切合作以公开接口。

DocObject 服务器文档可以包含 CDocObjectServerItem 对象,这些对象表示 DocObject 项的服务器接口。

若要自定义 DocObject 服务器,请从 CDocObjectServer 派生你自己的类,并替代其视图设置函数 OnActivateViewOnApplyViewStateOnSaveViewState。 你需要提供类的新实例来响应框架调用。

有关 DocObject 的详细信息,请参阅 MFC 参考中的 CDocObjectServerItemCOleCmdUI

继承层次结构

CObject

CCmdTarget

CDocObjectServer

要求

标头:afxdocob.h

CDocObjectServer::ActivateDocObject

调用此函数以激活(但不显示)文档对象服务器。

void ActivateDocObject();

注解

ActivateDocObject 调用 IOleDocumentSiteActivateMe 方法,但不显示视图,因为它会等待有关如何设置和显示视图的特定说明,这是在对 CDocObjectServer::OnActivateView 的调用中给出的。

ActivateDocObjectOnActivateView 一起激活并显示 DocObject 视图。 DocObject 激活不同于其他类型的 OLE 就地激活。 DocObject 激活会绕过显示就地阴影边框和对象装饰(例如调整大小句柄)、忽略对象范围函数,并在视图矩形内绘制滚动条,而不是在该矩形外部绘制它们(像在正常就地激活中一样)。

CDocObjectServer::CDocObjectServer

构造并初始化一个 CDocObjectServer 对象。

explicit CDocObjectServer(
    COleServerDoc* pOwner,
    LPOLEDOCUMENTSITE pDocSite = NULL);

参数

pOwner
指向作为 DocObject 服务器的客户端的客户端站点文档的指针。

pDocSite
指向容器实现的 IOleDocumentSite 接口的指针。

注解

当 DocObject 处于活动状态时,客户端站点 OLE 接口 ( IOleDocumentSite) 允许 DocObject 服务器与其客户端(容器)进行通信。 激活 DocObject 服务器时,它会首先检查容器是否实现 IOleDocumentSite 接口。 如果实现了,则会调用 COleServerDoc::GetDocObjectServer 以查看容器是否支持 DocObject。 默认情况下,GetDocObjectServer 返回 NULL。 必须替代 COleServerDoc::GetDocObjectServer 才能构造新的 CDocObjectServer 对象或自己的派生对象,指向 COleServerDoc 容器及其 IOleDocumentSite 接口的指针作为构造函数的参数。

CDocObjectServer::OnActivateView

调用此函数以显示 DocObject 视图。

virtual HRESULT OnActivateView();

返回值

返回错误或警告值。 默认情况下,如果成功,则返回 NOERROR;否则返回 E_FAIL。

注解

此函数创建就地框架窗口、在视图中绘制滚动条、设置服务器与其容器共享的菜单、添加框架控件、设置活动对象,最后显示就地框架窗口并设置焦点。

CDocObjectServer::OnApplyViewState

替代此函数以还原 DocObject 视图的状态。

virtual void OnApplyViewState(CArchive& ar);

参数

ar
要从中串行化视图状态的 CArchive 对象。

注解

此函数会在实例化后第一次显示视图时调用。 OnApplyViewState 指示视图根据以前使用 OnSaveViewState 保存的 CArchive 对象中的数据重新初始化自身。 视图必须验证 CArchive 对象中的数据,因为容器不会以任何方式尝试解释视图状态数据。

可以使用 OnSaveViewState 存储特定于视图状态的持久信息。 如果替代 OnSaveViewState 以存储信息,则需要替代 OnApplyViewState 以读取该信息,并在新激活视图时将它应用于视图。

CDocObjectServer::OnSaveViewState

替代此函数以保存有关 DocObject 视图的额外状态信息。

virtual void OnSaveViewState(CArchive& ar);

参数

ar
视图状态会串行化到的 CArchive 对象。

注解

状态可能包括视图类型、缩放因子、插入和选择点等属性。 容器通常在停用视图之前调用此函数。 稍后可以通过 OnApplyViewState 还原保存的状态。

可以使用 OnSaveViewState 存储特定于视图状态的持久信息。 如果替代 OnSaveViewState 以存储信息,则需要替代 OnApplyViewState 以读取该信息,并在新激活视图时将它应用于视图。

另请参阅

CCmdTarget 类
层次结构图
CDocObjectServerItem 类