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 函 数 失 败 , 文 件 信 息 未 写 入 注 册 表 中 。
参 数 rglpszRegister 和 rglpszOverwrite 中 的 信 息 通 过 调 用
AfxOleRegisterServerClass 函 数 来 写 入 注 册 表 。 当 这 两 个 参 数 为 NULL 时 , 注册 表 的 缺 省 信 息 适 用 于 多 数 应 用 程 序 。 有 关 这 些 参 数 中 的 信 息 结 构 的 信 息 , 参见 AfxOleRegisterServerClass 。
如 果 要 获 取 更 多 的 信 息 ,请 参 见“ W in32 SDK OLE 程 序 员 参 考 ”中 的 IDispatch 。
请 参 阅 CDocTemplate::GetDocString, AfxOleRegisterServerClass