C O le O b jectFactory

COleObjectFactory 类 实 现 了 OLE 类 工 厂 , 此 工 厂 创 建 诸 如 服 务 器 , 自 动 化 对象 和 文 档 之 类 的 OLE 对 象 。

COleObjectFactory 类 有 用 来 执 行 下 列 功 能 的 成 员 函 数 :

  • 管 理 对 象 的 注 册 。

  • 更新 OLE 系 统 注 册 和 运 行 时 注 册 , 运 行 时 注 册 用 来 通 知

    O LE 对 象 正 在 运行 并 准 备 接 收 信 息 。

  • 通 过 限 制 注 册 用 户 在 设 计 时 的 使 用 和 注 册 应 用 程 序 在

    运 行 时 的 使 用 来 强 迫注 册 。

  • 向 OLE 系 统 注 册 表 注 册 控 件 对 象 工 厂 。

如 果 要 获 取 更 多 有 关 对 象 创 建 的 信 息 ,请 参 见 文 章“ 数 据 对 象 和 数 据 源( OLE )” 和 “ 数 据 对 象 和 数 据 源 : 创 建 和 析 构 ” 。 更 多 与 注 册 有 关 的 信 息 , 请 参 见 文 章“ 注 册 ” 。 这 些 文 章 都 在 “ V isual C++ 程 序 员 指 南 ” 一 书 中 。

#include <afxdisp.h>

请 参 阅 COleTemplateServer

CO leObjectFactory 类 成 员

Construction

ColeObjectFactory 构 造 一 个 COleObjectFactory 对 象

Operations

Register

OLE

系 统

DLLs 注 册 这 个 对 象 工 厂

RegisterAll

OLE

系 统

DLLs 注 册 应 用 程 序 的 所 有 对 象 工 厂

Revoke

OLE

系 统

DLLs 中 撤 销 这 个 对 象 工 厂 的 注 册

RevokeAll 从 OLE 系统 DLLs 中 撤 销 应 用 程 序 所 有 对 象 工 厂的 注 册

UpdateRegistryAll 向 OLE 系 统 注 册 表 注 册 应 用 程 序 的 所 有 对 象 工 厂

Attributes

IsRegistered 指 示 对 象 工 厂 是 否 已 向 OLE 系 统 DLL 注 册

GetClassID 返 回 此 工 厂 创 建 的 对 象 的 OLE 类 ID

Overridables

OnCreateObject 由 框 架 调 用 来 创 建 这 个 工 厂 对 象 的 一 个 新 对 象UpdateRegist ry 向 OLE 系 统 注 册 表 注 册 这 个 工 厂 对 象VerifyUserLicense 检 验 控 件 是 否 为 设 计 时 使 用 许 可GetLicenseKey 从 控 件 的 DLL 请 求 一 个 唯 一 的 键VerifyLicenseKey 校 验 控 件 的 嵌 入 键 是 否 与 其 容 器 的 嵌 入 键 匹 配

成 员 函 数

CO le ObjectFactory::COleObjectFactory

COleObjectFactory( REFCLSID clsid ,CRuntimeClass* pRuntimeClass , BOOL bMultiInstance ,LPCTSTR lpszProgID );

参 数

clsid

这 个 对 象 工 厂 所 代 表 的 OLE 类 ID 的 引 用 。

pRuntimeClass

指 向 这 个 工 厂 能 够 创 建 的 C++ 对 象 的 运 行 时 类 的 指 针 。

bMultiInstance

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

lpszProgID

指 向 一 个 包 含 程 序 的 文 字 标 识 符 的 字 符 串 指 针 ,比如 说“ Microsoft Excel”。

说 明

构 造 一 个 COleObjectFactory 对 象 , 将 它 初 始 化 为 一 个 没 有 注 册 的 对 象 工 厂 , 并

将 它 添 加 到 工 厂 列 表 中 。 但 是 为 了 使 用 这 个 对 象 , 你 必 须 注 册 它 。更 多 的 信 息 参 见 “ OLE 2 程 序 员 参 考 , 卷 1 ” 中 的 CLSID Key 。

请 参 阅 CRuntimeClass

CO le ObjectFactory::GetClassID

REFCLSID GetClassID() const;

返 回 值

返 回 这 个 工 厂 所 代 表 的 OLE 类 ID 的 引 用 。

说 明

返 回 这 个 工 厂 所 代 表 的 OLE 类 ID 的 引 用 。

要 获 取 更 多 的 信 息 , 请 参 见 “ OLE 2 程 序 员 参 考 , 卷 1 ” 中 的 CLSID Key 。

请 参 阅 COleObjectFactory::COleObjectFactory

CO le ObjectFactory::GetLicenseKey

virtual BOOL GetLicenseKey( DWORD dwReserved ,BSTR * pbstrKey );

返 回 值

如 果 许 可 键 字 符 串 不 是 NULL 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

dwReserved

为 将 来 的 使 用 保 留 。

pbstrKey

指向 BSTR 的 指 针 , BSTR 是 用 来 保 存 许 可 键 的 。

说 明

从 控 件 的 DLL 中 请 求 一 个 唯 一 的 许 可 键 ,并 将 它 保 存 在 有 pbstrKey 指 向 的 BSTR

中 。

这 个 函 数 的 缺 省 实 现 返 回 0 ,而 且 不 向 BSTR 中 保 存 任 何 东 西 。如 果 你 使 用 MFC ActiveX ControlWizard 来 创 建 你 的 项 目 ,ControlWizard 提 供 一 个 重 载 后 的 函 数 , 该 函 数 获 取 控 件 的 许 可 键 。

请 参 阅 COleObjectFactory::VerifyUserLicense ,

COleObjectFactory::VerifyLicenseKey CO le ObjectFactory::IsRegistered BOOL IsRegistered() const;

返 回 值

如 果 注 册 了 这 个 工 厂 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

如 果 已 经 向 OLE 系 统 DLLs 注 册 了 这 个 工 厂 则 返 回 非 零 值 。

请 参 阅 COleObjectFactory::Registe r, COleObjectFactory::Revoke

CO le ObjectFactory::OnCreateObject virtual CCmdTarget* OnCreateObject(); 返 回 值

指 向 被 创 建 的 东 西 的 指 针 。 如 果 失 败 则 会 抛 出 一 个 内 存 异 常 。

说 明

由 框 架 调 用 来 创 建 一 个 新 对 象 。 为 了 从 某 些 不 是 传 递 给 构 造 函 数 的

CRuntimeClass 的 东 西 来 创 建 对 象 , 请 重 载 这 个 函 数 。

请 参 阅 COleObjectFactory:: COleObjectFactory, CRuntimeClass

CO le ObjectFactory::Register

BOOL Register();

返 回 值

如 果 成 功 地 注 册 了 这 个 工 厂 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

向 OLE 系 统 DLLs 注 册 这 个 对 象 工 厂 。 通 常 当 应 用 程 序 被 启 动 时 , 由

C W inApp::InitInstance 调 用 这 个 函 数 。

请 参 阅 COleObjectFactory::Revoke, COleObjectFactory::RegisterAll, CWinApp::InitInstance

CO le ObjectFactory::RegisterAll static BOOL PASCAL RegisterAll() 返 回 值

如 果 成 功 地 注 册 了 这 个 工 厂 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

向 OLE 系 统 DLLs 注 册 应 用 程 序 的 所 有 对 象 工 厂 。 通 常 当 应 用 程 序 被 启 动 时 , 由 C W inApp:: InitInstance 调 用 这 个 函 数 。

请 参 阅 COleObjectFactory::Revoke , COleObjectFactory::Register ,

C W inApp::InitInstance

CO le ObjectFactory::Revoke

void Revoke();

说 明

从 OLE 系 统 DLLs 中 撤 销 这 个 对 象 工 厂 的 注 册 。 在 应 用 程 序 终 止 前 框 架 自 动 调用 这 个 函 数 。 如 果 必 需 的 话 , 可 以 从 重 载 的 CWinApp::ExitInstance 调 用 它 。

请 参 阅 COleObjectFactory::RevokeAll , COleObjectFactory::Register, CWinApp::ExitInstance

CO le ObjectFactory::RevokeAll

static void PASCAL RevokeAll();

说 明

从 OLE 系 统 DLLs 中 撤 销 应 用 程 序 的 所 有 对 象 工 厂 的 注 册 。 在 应 用 程 序 终 止 前框 架 自 动 调 用 这 个 函 数 。 如 果 必 须 的 话 , 可 以 从 重 载 的 CWinApp::ExitInstance 调 用 它 。

请 参 阅 COleObjectFactory::Revoke, COleObjectFactory::RegisterAll, CWinApp::ExitInstance

CO le ObjectFactory::UpdateRegistry

void UpdateRegistry (LPCTSTR lpszProgID = NULL ); virtual void UpdateRegistry( BOOL bRegister ) = 0;

参 数

lpszProgID

是 指 向 一 个 字 符 串 的 指 针 , 该 字 符 串 是 人 可 阅 读 的 程 序 标 识 符 , 比 如 说

“ Excel.Docum e- nt.5 ” 。

bRegister

指 示 控 件 类 的 对 象 工 厂 是 否 已 经 被 注 册 。

说 明

下 面 是 有 关 这 个 函 数 的 两 种 形 式 的 简 短 讨 论 :

  • UpdateRegistry( lpszProgID ) 向 OLE 系 统 注 册 表 注 册 这 个 对

    象 工 厂 。 这 个函 数 通 常 由 CWinApp::InitInstance 在 应 用 程 序 被 启 动 时 调 用 。

  • UpdateRegistry( bRegister ) 该 函 数 的 这 种 形 式 是 可 重 载 的

    。 如 果 bRegister

为 TRUE , 则 此 函 数 向 系 统 注 册 表 注 册 这 个 控 件 类 。 否 则 不 注 册 这 个 类 。

如 果 你 使 用 MFC ActiveX ControlWizard 来 创 建 你 的 项 目 , ControlWizard 支持对 这 个 函 数 的 重 载 。

请 参 阅 COleObjectFactory::Revoke , COleObjectFactory::Registe r, COleObjectFactory::UpdateRegistryA ll, C W inApp:: Init Instance

CO le ObjectFactory::UpdateRegistry All static void PASCAL UpdateRegist ry All(); 说 明

向 OLE 系 统 注 册 表 注 册 应 用 程 序 的 所 有 的 对 象 工 厂 。 此 函 数 通 常 在 应 用 程 序被 启 动 时 被 CW in App::InitInstance 调 用 。

请 参 阅 COleObjectFactory::Revoke , COleObjectFactory::Registe r, COleObjectFactory::UpdateRegistry , C W inApp:: In itInstance

CO le ObjectFactory::VerifyLicenseKey

virtual BOOL VerifyLicenseKey( BSTR bstrKey );

返 回 值

如 果 运 行 时 许 可 有 效 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

bstrKey

是 一 个 用 来 保 存 容 器 的 许 可 字 符 串 版 本 的 BSTR 。

说 明

这 个 函 数 检 验 容 器 是 否 允 许 使 用 OLE 控 件 。 缺 省 的 版 本 调 用 GetLicenseKey 来获 得 一 个 有 关 控 件 的 许 可 字 符 串 的 拷 贝 , 并 将 这 个 拷 贝 与 bstrKey 中 的 字 符 串

进 行 比 较 。 如 果 两 个 字 符 串 相 匹 配 , 函 数 就 返 回 一 个 非 零 值 , 否 则 返 回 0 。为 了 提 供 可 定 制 的 许 可 检 验 , 你 可 以 重 载 这 个 函 数 。

请 参 阅 COleObjectFactory::VerifyUserLicense ,

COleObjectFactory::GetLicenseKey

CO le ObjectFactory::VerifyUserLicense

virtual BOOL VerifyUserLicense();

返 回 值

如 果 设 计 时 许 可 有 效 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

检 验 OLE 控 件 的 设 计 时 许 可 。

请 参 阅 COleObjectFactory::VerifyLicenseKey ,

COleObjectFactory::GetLicenseKey