C O leTemplateServer

COleTemplateServer 类 用 于 OLE 可 视 编 辑 服 务 器 、自 动 化 服 务 器 和 链 接 容 器(支持 链 接 到 嵌 入 项 的 应 用 程 序 ) 。 该 类 从 COleObjectFactory 类 中 派 生 , 通 常 应 用程 序 可 直 接 使 用 COleTemplateServer 而 无 需 使 用 一 个 CDocTemplate 对 象 来 管

理 服 务 器 程 序 文 档 。 可 使 用 COleTemplateServer 来 实 现 一 个 服 务 器 应 用 程 序 , 即 一 个 可 作 为 独 立 的 应 用 程 序 运 行 的 服 务 器 应 用 程 序 。 全 服 务 器 应 用 程 序 一 般是 多 文 档 界 面 ( M D I ) 应 用 程 序 , 尽 管 单 文 档 界 面 ( SD I) 应 用 程 序 也 被 支 持 。必 须 为 应 用 程 序 所 支 持 的 每 种 服 务 器 程 序 文 档 类 型 提 供 一 个COleTemplateServer 对 象 ; 即 , 如 果 服 务 器 应 用 程 序 支 持 电 子 数 据 表 格 和 图 标 , 那 么 必 须 有 两 个 COleTemplateServer 对 象 。

COleTemplateServer 重 载 了 由 COleObjectFactory 所 定 义 的 OnCreateInstance 成员 函 数 。 这 个 成 员 函 数 由 框 架 调 用 来 创 建 一 个 适 当 类 型 的 C++ 对 象 。

#include <afxdisp.h>

请 参 阅 COleServerDoc, COleServerItem

CO leTemplateServer 类 成 员

Construction

ColeTemplateServer 构 造 一 个 COleTemplateServer 对 象

Operations

ConnectTemplate 将 一 个 文 档 模 板 连 接 到 基 础 COle ObjectFactory 对

象 上

UpdateRegistry 向 OLE 系 统 注 册 表 中 注 册 这 个 文 档 类 型

成 员 函 数

CO leTemplateServer::COleTemplateServer

COleTemplateServer();

说 明

构 造 一 个 COleTemplateServer 对 象 。

有 关 使 用 COleTemplateServer 类 的 简 短 描 述 , 参 见 COleLinkingDoc 概 述 。

CO leTemplateServer::ConnectTemplate

void ConnectTemplate( REFCLSID clsid , CDocTemplate* pDocTemplate , BOOL bMultiInstance );

参 数

clsid

对 模 板 所 请 求 的 OLE 类 ID 的 引 用 。

pDocTemplate

指 向 文 档 模 板 的 指 针 。

bMultiInstance

指 示 单 个 应 用 程 序 是 否 能 支 持 多 个 实 例 。 如 果 该 参 数 为 TRUE , 则 为 每一 个 创 建 对 象 的 请 求 , 启 动 应 用 程 序 的 多 个 实 例 。

说 明

此 函 数 将 pDocTemplate 所 支 持 的 文 档 模 板 连 接 到 基 COleObjectFactory 对 象 。 如 果 要 获 取 更 多 的 信 息 , 请 参 见 “ OLE 2 程 序 员 参 考 , 卷 1 ” 中 的 CLSID Key 。请 参 阅 CDocTemplate

CO leTemplateServer::UpdateRegistry

void UpdateRegistry( OLE_APPTYPE nAppType = OAT_INPLACE_SERVER, LPCSTR* rglpszRegister = NULL, LPCSTR FAR* rglpszOverwrite = NULL );

参 数

nAppType

一 个 OLE_APPTYPE 枚 举 类 型 值 , 该 枚 举 是 在 AFXDISP.H 中 定 义 的 。它 可 以 是 下 列 值 之 一 :

  • OAT_INPLACE_SERVER 服 务 器 具 有 全 服 务 器 用 户 界 面 。

  • OAT_SERVER 服 务 器 值 支 持 嵌 入 。

  • OAT_CONTAINER 容 器 支 持 到 嵌 入 项 的 链 接 。

  • OAT_DISPATCH_OBJECT 对 象 是 能 够 ID ispatch 的 。

  • OAT_DOCOBJECT_SERVER 服 务 器 支 持 嵌 入 和 复 合 模 式 的 文 档

    对象 。

rglpszRegister

  • 个 项 的 列 表 , 只 有 在 没 有 项 存 在 时 才 要 写 入 注 册 表 中

rglpszOverwrite

  • 个 项 的 列 表 , 不 管 是 否 有 项 存 在 都 要 写 入 注 册 表 中 。

说 明

此 函 数 从 文 档 模 板 串 中 装 载 文 件 类 型 的 信 息 , 并 将 该 信 息 放 进 OLE 系 统 注 册表 中 。

注 册 信 息 通 过 调 用 CDocTemplate::GetDocString 来 装 载 。 所 获 取 的 子 串 是 由 索引 regFileType Id , regFileTypeName 和 fileNewName 所 标 识 的 那 些 子 串 , 如GetDocString 参 考 页 上 所 描 述 的 。

如 果 regFileType Id 子 串 为 空 , 或 GetDocString 调 用 由 于 某 种 原 因 失 败 , 则

UpdateRegistry 函 数 失 败 , 文 件 信 息 未 写 入 注 册 表 中 。

参 数 rglpszRegisterrglpszOverwrite 中 的 信 息 通 过 调 用

AfxOleRegisterServerClass 函 数 来 写 入 注 册 表 。 当 这 两 个 参 数 为 NULL 时 , 注册 表 的 缺 省 信 息 适 用 于 多 数 应 用 程 序 。 有 关 这 些 参 数 中 的 信 息 结 构 的 信 息 , 参见 AfxOleRegisterServerClass 。

如 果 要 获 取 更 多 的 信 息 ,请 参 见“ W in32 SDK OLE 程 序 员 参 考 ”中 的 IDispatch 。

请 参 阅 CDocTemplate::GetDocString, AfxOleRegisterServerClass