CDocObjectServer 类
实现将常规 COleDocument
服务器接入完整 DocObject 服务器所需的其他 OLE 接口: IOleDocument
、 IOleDocumentView
、 IOleCommandTarget
和 IPrint
。
语法
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
派生你自己的类,并替代其视图设置函数 OnActivateView、OnApplyViewState 和 OnSaveViewState。 你需要提供类的新实例来响应框架调用。
有关 DocObject 的详细信息,请参阅 MFC 参考中的 CDocObjectServerItem 和 COleCmdUI。
继承层次结构
CDocObjectServer
要求
标头:afxdocob.h
CDocObjectServer::ActivateDocObject
调用此函数以激活(但不显示)文档对象服务器。
void ActivateDocObject();
注解
ActivateDocObject
调用 IOleDocumentSite
的 ActivateMe
方法,但不显示视图,因为它会等待有关如何设置和显示视图的特定说明,这是在对 CDocObjectServer::OnActivateView 的调用中给出的。
ActivateDocObject
和 OnActivateView
一起激活并显示 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
以读取该信息,并在新激活视图时将它应用于视图。