CPropertySheet

CPropertySheet 类 对 象 表 示 属 性 表 , 或 者 说 是 标 签 对 话 框 。 一 个 属 性 表 由 一 个

CPropertySheet 对 象 和 一 个 或 多 个 CPropertyPage 对 象 构 成 。 一 个 属 性 表 由 框 架

来 显 示 , 就 象 是 一 个 具 有 一 系 列 标 签 索 引 的 窗 口 。 用 户 通 过 这 些 标 签 索 引 来 选择 当 前 的 页 , 和 一 块 用 于 当 前 所 选 页 的 区 域 。

虽 然 CPropertySheet 不 是 从 CDialog 派 生 而 来 的 , 但 是 管 理 一 个 CPropertySheet 对 象 类 似 于 管 理 一 个 CDialog 对 象 。 例 如 , 一 个 属 性 表 的 创 建 需 要 分 两 部 分 构造 : 调 用 构 造 函 数 , 然 后 对 模 式 属 性 表 调 用 DoModa l, 或 对 非 模 式 属 性 表 调 用Create 。 CPropertySheet e 有 两 种 类 型 的 构 造 函 数 : CPropertySheet::Construct 和CPropertySheet:: CPropertyShee t。

在 一 个 CPropertySheet 对 象 和 某 个 外 部 对 象 之 间 交 换 数 据 , 类 似 于 与 一 个CDialog 对 象 交 换 数 据 。 两 者 之 间 的 重 要 差 别 是 : 一 个 属 性 表 的 设 置 通 常 是CPropertyPage 对 象 的 成 员 变 量 , 而 不 是 CPropertySheet 对 象 本 身 。

你 可 以 创 建 一 种 被 称 为 向 导 的 标 签 对 话 框 , 这 种 对 话 框 包 括 一 个 属 性 表 , 该 表有 一 系 列 属 性 页 来 引 导 用 户 进 行 一 项 操 作 的 每 一 个 步 骤 , 比 如 说 设 置 一 个 设 备

或 创 建 一 个 时 事 通 讯 。 在 一 个 向 导 类 型 的 标 签 对 话 框 中 属 性 页 没 有 标 签 , 每 次只 有 一 个 属 性 页 是 可 见 的 。而 且 ,一 个 向 导 类 型 的 对 话 框 没 有 O K 和 Apply Now 按 钮 , 代 替 它 们 的 是 一 个 Back 按 钮 , 一 个 Next 或 Finish 按 钮 和 一 个 Cancel 按钮 。

要 创 建 一 个 向 导 类 型 的 对 话 框 , 其 步 骤 与 创 建 一 个 标 准 的 属 性 表 的 步 骤 是 一 样的 , 但 是 要 在 调 用 DoModal 之 前 调 用 SetWizardMode 。 为 了 使 向 导 按 钮 有 效 , 调 用 SetWizardButton s, 使 用 标 志 来 定 制 它 们 的 功 能 和 外 观 。 为 了 使 Finish 按钮 有 效 , 在 用 户 完 成 了 在 向 导 的 最 后 一 页 中 的 动 作 之 后 调 用 SetFinishTex t。#include <afxdlgs.h>

C PropertySheet 类 成 员

Data M embers

m_psh W indows PROPSHEETHEADER 结 构 。 提 供 对 基本 属 性 表 参 数 的 访 问

Construction

CpropertySheet 构 造 一 个 CPropertySheet 对象

Construct 构 造 一 个 CPropertySheet 对象

Attribute s GetActiveIndex 获 取 属 性 表 的 活 动 页 的 索 引

GetPageIndex 获 取 属 性 表 指 定 页 的 索 引

GetPageCount 获 取 属 性 表 中 的 页 数

GetPage 获 取 指 向 指 定 页 的 指 针

GetActivePage 返 回 活 动 页 对 象

SetActivePage 可 设 计 地 设 置 活 动 页 对 象

SetTitle 设 置 属 性 表 的 标 题

GetTabControl 获 取 一 个 指 向 一 个 标 签 控 件 的 指 针

SetFinishText 设 置 Finish 按 钮 的 文 本

SetWizardButtons 使 向 导 按 钮 有 效

S etWizardMode 使 向 导 模 式 有 效

EnableStacdedTabs 代 码 属 性 表 是 使 用 堆 叠 标 签 还 是 滚 动 标 签

Operation s DoModal 显 示 一 个 模 式 属 性 表

Create 显 示 一 个 无 模 式 属 性 表

AddPage 向 属 性 表 中 添 加 一 个 页

RemovePage 从 属 性 表 中 移 去 一 页

PressButton 在 一 个 属 性 表 中 模 拟 对 指 定 按 钮 的 选 择

EndDialog 终 止 属 性 表

成 员 函 数

CPropertySheet::AddPage

void Addpage(CPropertyPage * pPage );

参 数

pPage

指 向 要 被 添 加 到 属 性 表 中 去 的 页 。 不 能 是 NULL 。

说 明

此 成 员 函 数 用 来 将 所 提 供 的 页 添 加 到 属 性 表 中 , 并 使 它 具 有 最 右 边 的 标 签 。 此函 数 按 你 所 希 望 的 从 左 至 右 的 顺 序 来 添 加 页 。

AddPage 将 CPropertyPage 对 象 添 加 到 CPropertySheet 对 象 的 页 列 表 中 , 但 是 并不 为 这 些 页 实 际 地 创 建 窗 口 。 直 到 用 户 选 择 了 一 页 , 框 架 才 为 此 页 创 建 窗 口 。

当 你 用 AddPage 来 添 加 一 个 属 性 页 时 ,CPropertySheet 就 是 CPropertyPage 的 父 。为 了 获 得 从 属 性 页 对 属 性 表 的 访 问 , 可 以 调 用 CWnd::GetParent。

如 果 你 在 显 示 属 性 页 之 后 调 用 AddPage , 则 标 签 行 将 反 映 新 添 加 的 页 。

请 参 阅 CPropertySheet::RemovePage

CPropertySheet::Construct

void Construct( UINT nIDCaption , CWnd* pParentWnd = NULL, UINT

iSelectPage = 0 ):

void Construct(LPCTSTR pszCaption , CWnd* pParentWnd = NULL, UINT

iSelectPage = 0 );

参 数

nIDCaption

用 于 属 性 表 的 标 题 的 ID 。

pParentWnd

指 向 此 属 性 表 的 父 窗 口 的 指 针 。 如 果 是 NULL , 则 其 父 窗 口 就 是 应 用 程 序的 主 窗 口 。

iSelectPage

最 初 在 最 顶 上 的 页 的 索 引 。 缺 省 值 是 添 加 到 表 中 的 第 一 页 的 索 引 。

pszCaption

指 向 一 个 字 符 串 的 指 针 , 该 字 符 串 包 含 了 用 于 属 性 表 的 标 题 。 不 能 是

NULL 。

说 明

此 成 员 函 数 用 来 构 造 一 个 CPropertySheet 对 象 。 如 果 还 没 有 调 用 一 个 类 构 造 函数 , 则 调 用 此 成 员 函 数 。 例 如 , 当 你 声 明 或 分 配 CPropertySheet 对 象 数 组 时 , 就 调 用 Construct 。 在 有 数 组 的 情 况 下 , 你 必 须 为 数 组 中 的 每 一 个 成 员 调 用Construc t。

示 例

下 面 的 示 例 说 明 了 在 什 么 情 况 下 你 要 调 用 Construct 。int i;

CPropertySheet grpropsheet[4];

CPropertySheet someSheet; // 不 需 要 为 它 调 用 Construc t。

UINT rgID[4] = {IDD_SHEET1, IDD_SHEET2, IDD_SHEET3, IDD_SHEET4};

for ( i= 0; i < 4; i++) grpropsheet[i].Construct( rgID[i] );

请 参 阅 CPropertySheet:: CPropertySheet , CPropertySheet::DoModal , CPropertySheet::Create

CPropertySheet::CPropertySheet

CPropertySheet();

C PropertySheet( UINT nIDCaption , CWnd* pParentWnd = NULL, UINT

iSelectPage = 0 ) ;

CPropertySheet( LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0 ) ;

参 数

nIDCaption

用 于 属 性 表 的 标 题 的 ID 。

pParentWnd

指 向 此 属 性 表 的 父 窗 口 的 指 针 。 如 果 是 NULL , 则 其 父 窗 口 就 是 应 用 程 序的 主 窗 口 。

iSelectPage

最 初 在 最 顶 上 的 页 的 索 引 。 缺 省 值 是 添 加 到 表 中 的 第 一 页 的 索 引 。

pszCaption

指 向 一 个 字 符 串 的 指 针 , 该 字 符 串 包 含 了 用 于 属 性 表 的 标 题 。 不 能 是

NULL 。

说 明

此 函 数 用 来 构 造 一 个 CPropertySheet 对 象 。 要 显 示 此 CPropertySheet , 调 用

DoModal 或 Create 。 第 一 个 参 数 中 包 含 的 字 符 串 将 被 放 置 在 属 性 表 的 标 题 条 中 。如 果 你 有 多 个 参 数 ( 例 如 , 你 使 用 的 是 数 组 ) , 则 使 用 Construct 来 代 替

CPropertySheet 。

请 参 阅 CPropertySheet::Construct, CPropertySheet::DoModal, CPropertySheet::Create , CPropertyPage

CPropertySheet::Create

BOOL Create( CWnd* pParentWnd = NULL, DWORD dwStyle = (DWORD)-1, DWORD dwExStyle = 0 );

返 回 值

如 果 成 功 地 创 建 了 属 性 表 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pParentWnd

指 向 一 个 父 窗 口 。 如 果 是 NULL , 则 父 是 桌 面 。

dwStyle

属 性 表 窗 口 的 风 格 。 要 获 取 可 用 风 格 的 完 整 列 表 , 参 见“ W indows 风格” 。

dwExStyle

属 性 表 的 扩 展 窗 口 风 格 。 要 获 取 可 用 风 格 的 完 整 列 表 , 参 见 “ 扩 展 的 窗 口风 格 ” 。

说 明

此 成 员 函 数 用 来 显 示 一 个 无 模 式 的 属 性 表 。 可 以 在 构 造 函 数 的 内 部 调 用 Create , 也 可 以 在 激 活 构 造 函 数 之 后 调 用 它 。

当 传 递 给 参 数 dwStyle 的 值 是 -1 时 , 表 示 的 是 缺 省 风 格 , 这 种 风 格 实 际 是 :

WS_SYSMENU | WS_P O PUP | WS_CAPTION | DS_MODALFRAME |

DS_CONTEXT_HELP | W S_VISIBLE 。 当 传 递 给 参 数 dwExStyle 的 值 是 0 时, 表 示 是 缺 省 的 扩 展 风 格 , 实 际 是 : WS_EX_DLGMODALFRAME 。

在 创 建 属 性 表 之 后 , Create 成 员 函 数 立 即 返 回 。 要 销 毁 这 个 属 性 表 , 可 以 调 用

CWnd::DestroyWindow 。

调 用 Create 来 显 示 的 无 模 式 属 性 表 ,没 有 象 模 式 属 性 表 那 样 的 O K ,Cancel ,Apply Now 和 Help 按 钮 。 必 须 由 用 户 来 创 建 所 需 要 的 按 钮 。

要 显 示 一 个 模 式 属 性 表 , 可 以 调 用 DoModal 。

请 参 阅 CDialog::Create , CPropertySheet::DoModal

CPropertySheet:: DoModal

virtual int DoModal();

返 回 值

如 果 函 数 成 功 则 返 回 ID O K 或 IDCANC E L ; 否 则 返 回 0 或 -1 。 如 果 此 属 性 表 是

作 为 一 个 向 导 ( 参 见 SetWizardMode ) 建 立 的 , DoModal 返 回 ID_ W IZFINISH

或 IDCANCE L 。

说 明

此 成 员 函 数 用 来 显 示 一 个 模 式 属 性 表 。 其 返 回 值 对 应 于 用 来 关 闭 属 性 表 的 控 件的 ID 。 此 函 数 返 回 后 , W indows 响 应 这 个 属 性 表 , 所 有 的 属 性 页 都 会 被 销 毁 。而 这 些 对 象 本 身 仍 然 存 在 。 通 常 , 你 将 在 DoModal 返 回 ID O K 之 后 从CPropertyPage 对 象 检 取 数 据 。

要 显 示 一 个 无 模 式 属 性 表 , 请 调 用 Create 来 代 替 此 函 数 。

注 意 在 一 个 属 性 页 被 第 一 次 从 它 相 应 的 对 话 框 资 源 创 建 时 , 它 有 可 能引 发 一 个 第 一 次 机 会 ( first-chance ) 异 常 。 这 是 在 创 建 此 页 之 前 属 性页 将 对 话 框 资 源 的 风 格 改 变 成 了 所 需 的 风 格 的 结 果 。 因 为 资 源 通 常 来 说

是 只 读 的 , 所 以 这 导 致 了 一 个 异 常 。 这 个 异 常 由 系 统 处 理 , 系 统 会 自 动拷 贝 修 改 后 的 资 源 。 这 样 , 第 一 次 机 会 ( first-chance ) 异 常 就 被 忽 略了 。

由 于 这 个 异 常 必 须 由 操 作 系 统 来 处 理 , 所 以 不 要 用 一 个 C++ try/catch 块 来 隐 藏 调 用 CPropertySheet::DoModal , 因 为 在 一 个 C++ try/catch 块 中 catch 会 处 理 所 有 的 异 常 , 比 如 , catch(...) 。 它 将 处 理 那 些 属 于操 作 系 统 的 异 常 , 这 将 导 致 不 可 预 料 的 行 为 发 生 。 但 是 , 通 过 指 定 异 常类 型 或 结 构 化 异 常 处 理 来 处 理 C++ 异 常 就 是 安 全 的 , 在 结 构 化 异 常 处 理中 , 访 问 非 法 异 常 被 传 递 给 操 作 系 统 。

请 参 阅 CDialog::DoModa l, CPropertySheet::Create

CPropertySheet::EnableStackedTabs void EnableStackedTabs( BOOL bStacked ); 参 数

bStacked

表 明 在 属 性 表 中 堆 叠 式 标 签 是 否 是 有 效 的 。通 过 设 置 bStacked 为 FALSE , 可 以 使 堆 叠 式 行 标 签 无 效 。

说 明

此 成 员 函 数 用 来 表 明 在 一 个 属 性 表 中 是 否 使 用 堆 叠 式 标 签 行 。 缺 省 的 , 如 果 一个 属 性 表 有 很 多 标 签 , 它 们 不 能 在 属 性 表 的 宽 度 中 按 一 个 单 行 放 下 , 则 这 些 标签 将 按 多 行 堆 叠 。要 使 用 滚 动 标 签 来 代 替 堆 叠 标 签 ,请 在 调 用 DoModal 或 Create 之 前 将 bStacked 设 置 为 FALSE 来 调 用 EnableStackedTab s。

在 一 个 CPropertySheet 派 生 类 中 混 合 这 种 风 格 , 请 为 W M _CREATE 写 一 个 消息 句 柄 。 在 CWnd::OnCreate 的 重 载 版 本 中 , 在 调 用 基 类 实 现 之 前 调 用EnableStackedTabs(FALSE )。

示 例

int CMyPropertySheet::OnCreate( LPCREATESTRUCT lpCreateStruct )

{

// 设 置 为 滚 动 标 签 风 格

EnableStackedTabs( FALSE );

// 调 用 基 类

if(CPropertySheet::OnCreate( lpCreateStruct ) == -1) return – 1;

// TODO : 在 此 添 加 你 的 指 定 创 建 代 码

return 0;

CPropertySheet::End D ialog void End D ialog( int nEndID ); 参 数

nEndID

用 来 作 为 属 性 表 的 返 回 值 的 标 识 符 。

说 明

此 成 员 函 数 用 来 终 止 属 性 表 。 当 按 下 O K , Cancel 或 Close 按 钮 时 , 框 架 调 用这 个 成 员 函 数 。 如 果 发 生 了 一 个 要 改 变 此 属 性 表 的 事 件 , 则 调 用 此 成 员 函 数 。

请 参 阅 CPropertySheet::OnOK , CPropertySheet::OnCancel ,

CWnd::DestroyWindow

CPropertySheet::GetActiveIndex

int GetActiveIndex() const;

返 回 值

返 回 活 动 页 的 索 引 号 。

说 明

此 成 员 函 数 用 来 获 取 属 性 表 窗 口 中 的 活 动 页 的 索 引 号 , 然 后 用 这 个 返 回 的 索 引号 作 为 GetPage 的 参 数 。

请 参 阅 CPropertySheet::GetPage , CPropertySheet::GetActivePage

CPropertySheet::GetActivePage

CPropertyPage* GetActivePage() const;

返 回 指 向 活 动 页 的 指 针 。

说 明

此 成 员 函 数 用 来 获 取 属 性 表 窗 口 中 的 活 动 页 。 使 用 这 个 函 数 可 以 对 活 动 页 执 行某 些 动 作 。

请 参 阅 CPropertySheet::GetPage

CPropertySheet::GetPage

C PropertyPage* GetPa ge( int nPage ) const;

返 回 值

返 回 指 向 nPage 参 数 对 应 的 页 的 指 针 。

nPage

所 希 望 的 页 的 索 引 , 开 始 于 0 。 其 值 必 须 是 包 含 在 0 和 属 性 表 的 页 数 之 间 。

说 明

此 成 员 函 数 返 回 一 个 指 向 此 属 性 表 中 的 指 定 页 的 指 针 。

请 参 阅 CPropertySheet::AddPage , CPropertySheet::GetActivePage,

CPropertySheet::GetPageCoun t, CPropertySheet::RemovePage , CPropertySheet::SetTitle

CPropertySheet::GetPageIndex

int GetPageIndex(CPropertyPage* pPage ) const;

返 回 一 个 页 的 索 引 号 。

参 数

pPage

指 向 具 有 要 找 的 索 引 的 页 。 不 能 是 NULL 。

说 明

此 成 员 函 数 用 来 获 取 指 定 页 在 属 性 表 中 的 索 引 号 。例 如 ,为 了 使 用 SetActivePage

或 GetPage 你 要 用 GetPageIndex 来 获 取 页 的 索 引 。

请 参 阅 CPropertySheet::SetActivePage, CPropertySheet::GetPage

CPropertySheet::GetPageCount

int GetPageCount();

返 回 值

返 回 属 性 表 中 的 页 数 。

说 明

此 成 员 函 数 用 来 确 定 当 前 在 属 性 表 中 的 页 数 。

请 参 阅 CPropertySheet::GetPage , CPropertySheet::AddPage , CPropertySheet::RemovePage

CPropertySheet::GetTabControl

CTabCtrl* GetTabControl();

返 回 一 个 指 向 标 签 控 件 的 指 针 。

说 明

此 成 员 函 数 用 来 获 取 一 个 指 向 标 签 控 件 的 指 针 , 并 执 行 某 些 特 定 于 这 个 标 签 控件 的 操 作 ( 也 就 是 说 , 使 用 CTabCtrl 中 的 任 何 API ) 。 例 如 , 如 果 你 希 望 在 初始 化 期 间 给 每 一 个 标 签 添 加 一 个 位 图 , 你 就 可 以 调 用 这 个 函 数 。

请 参 阅 CTabCtrl::CTabCtrl

CPropertySheet::PressButton

BOOL PressButton( int nButton );

如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

nButton

此 参 数 表 明 被 按 下 的 按 钮 。 它 可 以 是 下 列 值 之 一 :

  • PSBTN_BACK 选 择 的 是 Back 按 钮 。

  • PSBTN_NEXT 选 择 的 是 Next 按 钮 。

  • PSBTN_FINISH 选 择 的 是 Finish 按 钮 。

  • PSBTN_OK 选 择 的 是 O K 按 钮 。

  • PSBTN_APPLYNOW 选 择 的 是 Apply Now 按 钮 。

  • PSBTN_CANCEL 选 择 的 是 Cancel 按 钮 。

  • PSBTN_HELP 选 择 的 是 Help 按 钮 。

说 明

此 成 员 函 数 用 来 模 拟 在 一 个 属 性 表 中 选 择 了 某 个 指 定 的 按 钮 。 参 见PSM_PRESSBUTTON 可 以 获 得 更 多 有 关 Windows SDK Pressbutton 消 息 的 信息 。

CPropertySheet::RemovePage

void RemovePage( CPropertyPage * pPage ); void RemovePage( int nPage );

参 数

pPage

指 向 要 被 从 属 性 表 中 移 走 的 页 。 不 能 是 NULL 。

nPage

要 被 移 走 的 页 的 索 引 。 其 值 必 须 是 包 含 在 0 和 属 性 表 中 的 页 数 减 1 之 间 。

说 明

此 成 员 函 数 从 属 性 表 中 移 走 一 页 , 并 销 毁 与 此 页 相 关 的 窗 口 。 但 CPropertySheet

对 象 本 身 要 直 到 自 己 的 CPropertySheet 窗 口 被 关 闭 时 才 会 被 销 毁 。

请 参 阅 CPropertySheet::AddPage

CPropertySheet::SetActivePage

BOOL SetActivePage( int nPage );

BOOL SetActivePage(CPropertyPage* pPage );

返 回 值

如 果 成 功 地 激 活 了 属 性 表 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

nPage

要 设 置 的 页 的 索 引 。 它 的 值 必 须 是 包 含 在 0 和 属 性 表 中 的 页 数 减 1 之 间 。

pPage

指 向 属 性 表 中 要 设 置 的 页 。 它 不 能 是 NULL 。

说 明

此 成 员 函 数 用 来 改 变 活 动 页 。 例 如 , 如 果 一 个 用 户 对 某 一 页 的 动 作 要 导 致 另 一页 成 为 活 动 页 , 则 可 以 使 用 SetActivePage。

CPropertySheet::SetFinishText

void SetFinishText( LPCTSTR lpszText );

lpszText

指 向 要 显 示 在 Finish 命 令 按 钮 上 的 文 本 。

说 明

此 成 员 函 数 用 来 设 置 Finish 命 令 按 钮 中 的 文 本 。 调 用 SetFinishText 来 在 Finish 命 令 按 钮 上 显 示 文 本 , 并 在 用 户 完 成 了 在 向 导 的 最 后 一 页 上 的 动 作 后 隐 藏 Next 和 Back 按 钮 。

CPropertySheet:: SetTitle

void SetT it le( LPCTSTR lpszText , UINT nStyle = 0 );

nStyle

指 定 属 性 表 标 题 的 风 格 。 此 风 格 必 须 被 指 定 为 0 或 者 是PSH_PROPTITLE 。 如 果 将 风 格 设 置 为 PS H _PRO P TITLE , 则 单 词“ Properties for” 显 示 在 指 定 作 为 标 题 的 文 本 的 前 面 。

lpszText

指 向 用 来 在 属 性 表 的 标 题 条 中 作 为 标 题 的 文 本 。

说 明

此 成 员 函 数 用 来 指 定 属 性 表 的 标 题( 显 示 在 一 个 框 架 窗 口 的 标 题 条 中 的 文 本 ) 。缺 省 的 , 一 个 属 性 表 在 属 性 表 的 构 造 函 数 中 使 用 这 个 标 题 参 数 。

请 参 阅 CPropertySheet::GetPage , CPropertySheet::GetActivePage

CPropertySheet::Set W izardButtons

void SetWizardButtons( DWORD dwFlags );

参 数

dwFlags

是 一 套 用 来 定 制 向 导 按 钮 的 功 能 和 外 观 的 标 志 。 这 个 参 数 可 以 是 下 列 值的 组 合 :

  • PS W IZB_BACK Back 按 钮 。

  • PS W IZB_NEXT Next 按 钮 。

  • PS W IZB_FINISH Finish 按 钮 。

  • PS W IZB_DISABLEDFINISH Disabled Finish 按 钮 。

此 成 员 函 数 用 来 使 一 个 向 导 属 性 表 中 的 Back , Next 或 Finish 按 钮 有 效 或 者 无效 。 只 有 在 对 话 框 打 开 之 后 才 调 用 SetWizardButton s; 你 不 能 在 调 用 DoModal 之 前 调 用 SetWizardButton s。 通 常 来 说 , 应 该 从 CPropertySheet::OnSetActive 调用 SetWizardButton s。

如 果 你 想 改 变 在 Finish 按 钮 上 的 文 本 , 或 者 想 在 用 户 完 成 向 导 的 各 个 步 骤 之 后隐 藏 Back 和 Next 按 钮 , 请 调 用 SetFinishTex t。 值 得 注 意 的 是 , Finish 和 Next 是 共 享 同 一 个 按 钮 的 。 在 某 一 个 时 间 你 可 以 显 示 Finish 或 Next 按 钮 , 但 是 不能 同 时 显 示 它 们 两 个 。

CPropertySheet::Set W izardMode

void SetWizardMode();

此 成 员 函 数 用 来 建 立 一 个 作 为 向 导 的 属 性 页 。 一 个 作 为 向 导 的 属 性 页 的 一 个 关键 特 征 就 是 : 用 户 使 用 Next 或 Finish , Back 和 Cancel 按 钮 而 不 是 标 签 来 导 航 。

在 调 用 DoModal 之 前 调 用 SetWizardMode 。 在 调 用 SetWizardMode 之 后 , DoModal 将 返 回 ID_ W IZFINISH ( 如 果 用 户 用 Finish 按 钮 来 关 闭 ) 或 者 是IDCANCE L 。

SetWizardMode 设置 PSF_WIZARD 标 志 。

示 例

CPropertySheet dlg; CPropertySheet page1,page2; dlg.AddPage( &page1 ); dlg.AddPage( &page2 ); dlg.SetWizardMode();

dlg.DoModal();

请 参 阅 CPropertySheet::DoModal

数 据 成 员

CPropertySheet::m_psh

说 明

m_psh 是 一 个 结 构 , 它 的 成 员 保 存 了 PROPSHEETHEADER 的 特 征 。 在 一 个 属性 表 被 构 造 之 后 , 并 在 用 DoModal 成 员 函 数 来 显 示 它 之 前 , 此 结 构 可 以 用 来 初始 化 这 个 属 性 表 的 外 观 。 例 如 , 将 m_p sh 的 成 员 dwSize 设 置 为 你 的 属 性 表 所要 求 的 尺 寸 。

如 果 要 获 取 更 多 有 关 这 个 结 构 的 信 息 , 包 括 它 的 成 员 列 表 , 请 参 见 “ W indows SDK 程 序 员 参 考 ” 中 的 PROPSHEETHEADER 。

请 参 阅 CPropertySheet::DoModal