服务器:服务器项目
当容器生成服务器时,以便用户可以编辑嵌入或链接的 OLE 项,服务器应用程序创建一个 “服务器项目”。服务器项目,是类的对象从 COleServerItem派生的,提供服务器之间的接口文档和容器应用程序。
COleServerItem 类通常定义由 OLE 调用的若干可重写的成员函数,以响应从容器的请求。 服务器项目可以表示一部分的服务器文档或整个文档。 当一个 OLE 项在容器中嵌入文档,服务器项目表示整个服务器文档。 当该 OLE 项链接时,服务器项目可以表示该服务器的部件文档或整个文档,具体取决于该链接是否为部件或对总体。
在 HIERSVR 示例,例如,服务器项目类, CServerItem,具有是指向类 CServerNode的对象的成员。 CServerNode 对象是在 HIERSVR 应用程序的一个节点的文档,为树。 当 CServerNode 对象是根节点时, CServerItem 对象表示整个文档。 当 CServerNode 对象是子节点时, CServerItem 对象表示文档的部分。 对于此交互的示例参见 MFC OLE 示例 HIERSVR 。
实现服务器项目
如果使用应用程序向导产生 “应用程序的启动程序”代码,则启动程序必须执行由服务器项目代码是从 OLE 选项页中选择其中一个服务器选项的所有。 如果添加服务器项目添加到现有应用程序,请执行以下步骤:
实现服务器项目
从 COleServerItem 派生一个类。
在派生类,请重写 OnDraw 成员函数。
框架调用 OnDraw 呈现该 OLE 项到图元文件。 容器应用程序使用此图元文件呈现该项目。 您的应用程序的视图类还有一个 OnDraw 成员函数,用于呈现该项目,当服务器应用程序处于活动状态时。
实现 OnGetEmbeddedItem 重写您的服务器文档类。 有关更多信息,请参见中的文章 服务器:实现服务器文档 和 MFC OLE 示例 HIERSVR。
实现您的服务器项类的 OnGetExtent 成员函数。 框架调用该函数检索该项的大小。 默认实现不执行任何操作。
服务器项目结构的一个提示
在 实现服务器项目所述,服务器应用程序必须能够呈现项。服务器的视图和在容器应用程序使用的图元文件。 Microsoft 基础类库的应用程序结构中,视图类的 OnDraw 成员函数呈现该项目,并在编辑时 (在 类库参考 CView::OnDraw)。 服务器项目的 OnDraw 呈现该项添加到图元文件其他情况下 (请参见 COleServerItem::OnDraw)。
您可以通过编写在您的函数将中的视图和服务器项目类的 OnDraw 功能服务器记录类和调用它们的帮助器避免代码的副本。 MFC OLE 示例 HIERSVR 使用此方法:功能 CServerView::OnDraw 和 CServerItem::OnDraw 两个调用 CServerDoc::DrawTree 呈现该项目。
,因为它们在不同条件下,绘制视图和项目都具有 OnDraw 成员函数。 视图必须等因素考虑缩放,选择范围和区域, " 剪切 " 和用户界面元素 (例如滚动条。 服务器项目,另一方面,始终绘制整个 OLE 对象。
有关更多信息,请参见 CView::OnDraw、 COleServerItem、 COleServerItem::OnDraw和 COleServerDoc::OnGetEmbeddedItem 在 类库中引用。