C O lePropertyPage
COlePropertyPage 类 以 类 似 于 对 话 框 的 图 形 化 界 面 来 显 示 定 制 控 件 的 属 性 。 例如 , 一 个 属 性 页 可 能 会 包 含 一 个 编 辑 控 件 , 允 许 用 户 查 看 和 修 改 控 件 的 标 题 属
每 一 个 定 制 的 或 普 通 的 控 件 属 性 都 可 以 有 一 个 对 话 框 控 件 来 允 许 控 件 的 用 户 查看 当 前 的 属 性 值 , 如 果 有 必 要 的 话 还 可 以 修 改 这 个 值 。
要 获 取 更 多 有 关 使 用 COlePropertyPage 的 信 息 , 请 参 见 “ Visual C++ 程 序 员 指南 ” 一 书 中 的 文 章 “ ActiveX 控 件 : 属 性 页 ” , 和 “ Visual C++ 教 程 ” 中 的 “ 修改 缺 省 的 属 性 页 ” 。
#include <afxctl.h>
请 参 阅 CDialog
CO lePropertyPage 类 成 员
Construction
ColePropertyPage 构 造 一 个 ColePropertyPage 对 象
Operation s GetObjectArray 返 回 由 属 性 页 编 辑 的 对 象 数 组
Operation s SetModifiedFlag 设 置 一 个 标 志 , 该 标 志 用 来 表 明 用 户 是 否 修 改 了
属 性 页
IsModified 表 明 用 户 是 否 修 改 了 属 性 页
GetPageSite 返 回 一 个 指 向 属 性 页 的 IpropertyPageSite 接 口 的 指针
SetDialogResource 设 置 属 性 页 的 对 话 框 资 源
SetPageName 设 置 属 性 页 的 名 称 ( 标 题 )
SetHelpInfo 设 置 属 性 页 的 简 短 帮 助 文 本 , 帮 助 文 件 的 名 称 , 以 及 帮 助 的 上 下 文
GetControlStatus 表 明 用 户 是 否 修 改 了 控 件 中 的 值SetControlStatus 设 置 一 个 标 志 来 表 明 用 户 是 否 修 改 了 控 件 中 的 值IgnoreApply 确 定 是 哪 一 个 控 件 没 有 使 能 Apply 按 钮
Overridable s OnEditProperty 当 用 户 编 辑 一 项 属 性 时 由 框 架 调 用
OnHelp 当 用 户 激 活 帮 助 时 由 框 架 调 用
OnInitDialog 当 初 始 化 属 性 页 时 由 框 架 调 用
OnObjectsChanged 当 选 择 了 其 它 具 有 新 属 性 的 OLE 控 件 时 由 框 架 调
用
OnSetPageSite 当 属 性 框 架 提 供 页 面 的 位 置 时 由 框 架 调 用
成 员 函 数
CO lePropertyPage::COlePropertyPage COlePropertyPage( UINT idDlg , UINT idCaption ); 参 数
idDlg
对 话 框 模 板 的 资 源 ID 。
idCaption
属 性 页 的 标 题 的 资 源 ID 。
说 明
当 你 实 现 COlePropertyPage 的 一 个 子 类 的 时 候 , 这 个 子 类 的 构 造 函 数 应 该 使 用COlePropertyPage 的 构 造 函 数 来 标 识 对 话 框 模 板 资 源 , 这 个 资 源 是 实 现 页 的 基础 , 并 且 字 符 串 资 源 包 含 了 它 的 标 题 。
CO lePropertyPage::GetControlStatus
BOOL GetControlStatus( UINT nID );
返 回 值
如 果 控 件 值 被 改 变 则 返 回 TRU E ; 否 则 返 回 FALSE 。
nID
一 个 实 现 页 控 件 的 资 源 ID 。
说 明
此 函 数 用 来 确 定 用 户 是 否 修 改 了 属 性 控 件 的 值 , 这 个 属 性 页 控 件 由 资 源 ID 确定 。
请 参 阅 COlePropertyPage::SetControlStatus
CO lePropertyPage::GetObjectArray
LPDISPATCH FAR* GetObjectArray( ULONG FAR* pnObjects );
指 向 一 个 IDispatch 指 针 数 组 的 指 针 , 该 指 针 数 组 用 来 访 问 属 性 页 面 上 的 每 一 个控 件 的 属 性 。 调 用 者 不 用 释 放 这 些 接 口 指 针 。
参 数
pnObjects
指 向 一 个 无 符 号 长 整 型 数 的 指 针 , 此 整 型 数 用 来 接 收 被 这 个 页 面 编 辑 的 对象 数 。
说 明
每 个 属 性 页 面 对 象 维 持 一 个 指 针 数 组 , 这 些 指 针 指 向 被 页 面 编 辑 的 对 象 的ID ispatch 接 口 。 这 个 函 数 将 它 的 参 数 pnObjects 设 置 为 指 针 数 组 的 元 素 个 数 , 并 返 回 一 个 指 向 数 组 中 的 第 一 个 元 素 的 指 针 。
CO lePropertyPage::GetPageSite
LPPROPERTYPAGESITE GetPageSite();
返 回 值
指 向 属 性 页 的 IPropertyPageSite 接 口 的 指 针 。
说 明
此 函 数 用 来 获 取 一 个 指 向 属 性 页 的 IPropertyPageSite 接 口 的 指 针 。
控 件 和 容 器 互 相 配 合 , 以 使 用 户 能 够 浏 览 和 修 改 控 件 的 属 性 。 控 件 提 供 属 性 页面 , 每 一 个 页 面 都 是 一 个 OLE 对 象 , 允 许 用 户 编 辑 一 个 相 关 的 属 性 集 合 。 容器 提 供 一 个 用 来 显 示 属 性 页 面 的 属 性 框 架 。 对 应 每 一 个 页 面 , 属 性 框 架 提 供 一个 页 面 位 置 , 它 支 持 IPropertyPageSite 接 口 。
CO lePropertyPage::IgnoreApply
void IgnoreApply( UINT nID );
参 数
nID
将 被 忽 略 的 控 件 的 ID 。
说 明
只 有 当 属 性 页 控 件 的 值 被 改 变 时 , 属 性 页 上 的 Apply 按 钮 才 会 被 使 能 。 这 个 函数 用 来 指 定 一 些 控 件 , 即 使 这 些 控 件 的 值 被 改 变 了 , 也 不 会 引 起 Apply 按 钮 被使 能 。
CO lePropertyPage::IsModified
BOOL IsModified ();
返 回 值
如 果 属 性 页 被 修 改 则 返 回 TRU E 。
说 明
此 函 数 用 来 确 定 用 户 是 否 改 变 了 属 性 页 上 的 值 。
请 参 阅 COlePropertyPage::SetModifiedFlag
virual BOOL OnEditProperty( DISPID dispid );
返 回 值
缺 省 实 现 返 回 FALSE 。 重 载 这 个 函 数 后 将 返 回 TRUE 。
参 数
dispid
被 编 辑 的 属 性 的 分 配 ID 。
说 明
当 一 个 特 定 的 属 性 被 编 辑 时 框 架 调 用 这 个 函 数 。 为 了 将 焦 点 设 置 到 页 面 上 特 定的 控 件 中 , 你 可 以 重 载 这 个 函 数 。 缺 省 的 实 现 什 么 也 不 做 , 并 返 回 FALSE 。
virtual BOOL OnHelp( LPCTSTR lpszHelpDir );
返 回 值
缺 省 实 现 返 回 FALSE 。
参 数
lpszHelpDir
包 含 属 性 页 的 帮 助 文 件 的 目 录 。
说 明
当 用 户 请 求 联 机 帮 助 的 时 候 框 架 调 用 这 个 函 数 。 在 用 户 访 问 帮 助 的 时 候 , 如 果你 的 属 性 页 面 需 要 执 行 任 何 特 定 的 操 作 , 请 重 载 这 个 函 数 。 缺 省 的 实 现 什 么 也
不 做 并 返 回 FALSE , 这 指 示 框 架 去 调 用 W inHelp 。
CO lePropertyPage::OnInitDialog
virtual BOOL OnInitDialog();
返 回 值
缺 省 实 现 返 回 FALSE 。
说 明
当 属 性 页 的 对 话 框 被 初 始 化 时 , 框 架 调 用 这 个 函 数 。 如 果 在 对 话 框 被 初 始 化 时需 要 执 行 任 何 特 定 的 操 作 , 请 重 载 这 个 函 数 。 缺 省 的 实 现 调 用 了CDialog::OnInitDialog, 返 回 FALSE 。
请 参 阅 CDialog::OnInitDialog
CO lePropertyPage::OnObjectsChanged
virtual void OnObjectsChanged();
说 明
当 在 开 发 环 境 中 查 看 一 个 OLE 控 件 的 属 性 时 , 一 个 无 模 式 对 话 框 被 用 来 显 示它 的 属 性 页 面 。 如 果 选 择 了 另 一 个 控 件 , 就 必 须 显 示 一 个 具 有 不 同 设 置 的 属 性页 面 用 来 显 示 一 个 新 的 属 性 集 合 。 框 架 调 用 这 个 函 数 来 通 知 属 性 页 面 这 个 改变 。
CO lePropertyPage::OnSetPageSite
virtual void OnSetPageSite();
当 属 性 框 架 提 供 了 属 性 页 的 页 面 位 置 时 , 框 架 调 用 这 个 函 数 。 缺 省 的 实 现 载 入页 面 的 标 题 , 并 尝 试 从 对 话 框 资 源 来 确 定 页 面 的 大 小 。 如 果 你 的 属 性 页 需 要 任何 进 一 步 的 动 作 , 请 重 载 这 个 函 数 。
请 参 阅 COlePropertyPage::GetPageSite
CO lePropertyPage::SetControlStatus
BOOL SetControlStatus( UINT nID , BOOL IsDirty );
返 回 值
如 果 指 定 的 控 件 已 被 设 置 则 返 回 TRUE ; 否 则 返 回 FALSE 。
nID
包 含 一 个 属 性 页 控 件 的 ID 。
IsDirty
表 明 属 性 页 的 某 个 域 是 否 被 修 改 。 如 果 域 被 修 改 则 被 设 置 为 TRUE , 如果 还 没 有 被 修 改 则 被 设 置 为 FALSE 。
说 明
这 个 函 数 用 来 改 变 属 性 页 控 件 的 状 态 。
当 属 性 页 被 关 闭 或 Apply 按 钮 被 选 择 时 , 如 果 属 性 页 控 件 的 状 态 是 变 脏 了 的 , 则 控 件 的 属 性 将 会 被 用 适 当 的 值 更 新 。
请 参 阅 COlePropertyPage::GetControlStatus
CO lePropertyPage::SetDialogResource void SetDialogResource( HGLOBAL hDialog ); 参 数
hDialog
属 性 页 的 对 话 框 资 源 的 句 柄 。
说 明
此 函 数 用 来 设 置 属 性 页 的 对 话 框 资 源 。
CO lePropertyPage::SetHelpInfo
void SetHelpInfo( LPCTSTR lpszDocString , LPCTSTR lpszHelpFile = NULL, DWORD dwHelpContext = 0 );
参 数
lpszDocString
是 一 个 包 含 简 短 帮 助 信 息 的 字 符 串 , 用 来 显 示 在 状 态 条 或 其 他 的 位 置 中 。
lpszHelpFile
属 性 页 的 帮 助 文 件 的 名 称 。
dwHelpContext
属 性 页 的 帮 助 上 下 文 。
说 明
这 个 函 数 用 来 为 属 性 页 指 定 “ 工 具 提 示 ” 信 息 , 帮 助 文 件 名 , 和 帮 助 上 下 文 。
请 参 阅 COlePropertyPage ::OnHelp
CO lePropertyPage::SetModifiedFlag
void SetModifiedFlag( BOOL bModified = TRUE );
参 数
bModified
为 属 性 页 的 修 改 标 志 指 定 新 值 。
说 明
此 函 数 用 来 表 明 用 户 是 否 修 改 了 属 性 页 面 。
请 参 阅 COlePropertyPage::IsModified
CO lePropertyPage::SetPageName
void SetPageName( LPCTSTR lpszPageName );
参 数
lpszPageName
是 一 个 字 符 串 指 针 , 该 字 符 串 包 含 属 性 页 的 名 称 。
说 明
此 函 数 用 来 设 置 属 性 页 的 名 字 , 这 个 名 字 是 属 性 框 架 特 别 显 示 在 页 面 标 签 上的 。