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