按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
Cancel )按钮,并为 IDD_TESTPAGE1 添加合适的控件。完成控件的添加后,
“取消”(
IDD_TESTPAGE1 就是要创建的属性页对话框的第一个属性页模板。
图 4…22 属性页模板的风格设置
2 .为属性页添加属性页类
创建完属性页模板后,需要用 ClassWizard 为每个属性页添加 CPropertyPage 的派生类,
并添加相应的控件变量和消息处理函数,以及添加属性表按钮被单击的消息处理函数。其步
骤如下:
(1)在 IDE 主菜单栏中依次选择菜单“View|ClassWizard ”,或者在开发环境的界面下直
接使用快捷键 Ctrl+W,打开“ClassWizard ”对话框。同时它会检测到添加了新的对话框资源,
并打开“Adding a Class ”对话框,提示用户是否为新建的对话框添加一个对话框类。
(2 )在“Adding a Class ”对话框中,选中“Create a new class ”单选框,意思是要为对
话框资源创建一个新的类,单击“OK ”按钮确认后打开“New Class ”对话框。
(3 )在“New Class ”对话框中,ClassWizard 要为新添加的 IDD_TESTPAGE1 模板创建
·83 ·
…………………………………………………………Page 93……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
一个新的类。在“Name ”输入框中输入 CTestPage1 ,在“Base class ”下拉列表框中选择
CPropertyPage,如图 4…23 所示。单击“OK ”按钮关闭“New Class ”对话框,返回“ClassWizard ”
对话框,就可以看见“ClassWizard ”对话框中的“Class name ”下拉列表框中已经自动选择
了新创建的类 CTestPage1 。
图 4…23 创建属性页类的对话框
(4 )依照 4。1。3 第 2 到第 4 部分的讲解,为 CTestPage1 添加合适的控件变量和控件消息
处理函数。
(5 )为 CTestPage1 添加合适的属性页消息处理函数 。在已经打开的“ClassWizard ”对话
框中,单击“Message Maps ”选项卡,在“Class name ”下拉列表框中选择 CTestPage1,在
“Object IDs ”列表框中选择 CTestPage1,在“Messages ”列表框中选择表 4…1 中出现的合适
的消息处理函数,单击“Add Function ”按钮,就可以添加对应的消息处理函数。
在实例 Sample4_1 中,由于 CTestPage1 作为向导对话框的第一个属性页,因此显示测试
页 1 时向导对话框中只有“下一个”(Next )按钮。这就需要为 CTestPage1 添加 OnSetActive()
函数。在“Messages ”列表框中选择 OnSetActive,单击“Add Function ”按钮添加该函数。
再 单 击 “ Edit Function ” 按 钮 , 关 闭 “ ClassWizard ” 对 话 框 , IDE 自 动 定 位 到
CTestPage1::OnSetActive()函数,修改函数代码如下:
BOOL CTestPage1::OnSetActive()
{
// TODO: Add your specialized code here and/or call the base class
// 获得父窗口,即属性表 CPropertySheet 类
CPropertySheet* psheet = (CPropertySheet*) GetParent();
// 设置属性表只有“下一步”按钮
psheet…》SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
经过上述步骤,就为属性页 IDD_TESTPAGE1 添加了对应的属性页类 CTestPage1 。
·84 ·
…………………………………………………………Page 94……………………………………………………………
第 4 章 对话框
3 .创建其余的属性页和对应的属性页类
为实例 Sample4_1 创建其余的属性页,包括第二页 IDD_TESTPAGE2 和最后一页
IDD_TESTPAGE3 ,对应的属性页类为 CTestPage2 和 CTestPage3 。步骤如下:
(1)参照第 1 部分,为实例 Sample4_1 创建第二个属性页模板 IDD_TESTPAGE2 。
(2 )参照第 2 部分,为 IDD_TESTPAGE2 创建属性页类 CTestPage2,为 CTestPage2 添加
合适的控件变量和控件消息处理函数,注意在 CTestPage2 中不用添加 OnSetActive()消息处理
函数。
如果用户想为向导对话框添加更多的中间步骤,可以重复步骤 1 和 2 。
(3 )参照第 1 部分,为实例 Sample4_1 创建最后一个属性页模板 IDD_TESTPAGE3 。
(4 )参照第 2 部分,为 IDD_TESTPAGE3 创建属性页类 CTestPage3,为 CTestPage3 添加
合适的控件变量和控件消息处理函数。注意在 CTestPage3 中需要添加 OnSetActive()和
OnWizardFinish()消息处理函数。
添加 CTestPage3::OnSetActive() 函数,使得向导对话框进行到最后一页时只有“完成”
(
Finish )按钮。在已经打开的 ClassWizard 对话框中,单击“Message Maps ”选项卡,在“Class
name ”下拉列表框中选择 CTestPage1,在“Object IDs ”列表框中选择 CTestPage3,在“Messages ”
列表框中选择 OnSetActive,单击“Add Function ”按钮添加该函数。再单击“Edit Function ”
按钮,关闭“ClassWizard ”对话框,IDE 自动定位到 CTestPage3::OnSetActive()函数,修改函
数代码如下:
BOOL CTestPage3::OnSetActive()
{
// TODO: Add your specialized code here and/or call the base class
CPropertySheet* psheet = (CPropertySheet*) GetParent();
//设置属性表只有“完成”按钮
psheet…》SetFinishText(〃完成〃);
return CPropertyPage::OnSetActive();
}
重 复 前 面 的 过 程 , 在 “ Messages ” 列 表 框 中 选 择 OnWizardFinish , 添 加
CTestPage3::OnWizardFinish()函数,使得完成向导对话框时提示用户,添加的函数代码如下:
BOOL CTestPage3::OnWizardFinish()
{
// TODO: Add your specialized code here and/or call the base class
MessageBox(〃您已经完成向导!〃);
return CPropertyPage::OnWizardFinish();
}
这样就完成了向导对话框的所有属性页模板和相应属性页类的创建。
4 .创建属性表类
创建完向导对话框的所有属性页类后,就可以为实例 Sample4_1 添加属性表 CPropertySheet
·85 ·
…………………………………………………………Page 95……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
类的派生类,用于操作向导对话框。其步骤如下:
(1)在 IDE 的主菜单中选择“View| ClassWizard ”菜单命令,或按快捷键 Ctrl+W