首页 理论教育VC++MFC视频教程:属性表和属性页的用法

VC++MFC视频教程:属性表和属性页的用法

【摘要】:属性表和属性页,是MFC封装的多页管理类。属性页用于与子页面窗口关联,属性表用于关联管理子页的父窗口。使用MFC应用程序向导,创建一个工程名为“prop”的对话框程序,演示使用属性页和属性表管理多个分页子窗口。图9-25 插入分页子窗口2)子页窗口的标题栏要保留,它将在属性表窗口中显示,如图9-26所示。8)在主对话框内添加的控件与第4节中的完全一样,见表9-9。属性表默认是标签模式显示,调用SetWizardMode函数后以向导模式显示。

属性表(CPropertySheet)和属性页(CPropertyPage),是MFC封装的多页管理类。属性页用于与子页面窗口关联,属性表用于关联管理子页的父窗口。属性表默认使用标签模式管理多个页面;调用CPropertySheet::SetWizardMode类成员函数,可以将属性表设置为向导模式。

使用MFC应用程序向导,创建一个工程名为“prop”的对话框程序,演示使用属性页和属性表管理多个分页子窗口。在资源视图中插入3个对话框作为属性页子窗口,但不需要插入父窗口,因为属性表就是封装好的分页管理窗口。

1)插入三个子窗口内部的控件与本章第4节完全相同,如图9-25所示(可以通过打开RC文件的方式来拖入前一个工程的对话框资源)。

978-7-111-46378-8-Chapter09-57.jpg

图9-25 插入分页子窗口

2)子页窗口的标题栏要保留,它将在属性表窗口中显示,如图9-26所示。

978-7-111-46378-8-Chapter09-58.jpg

图9-26 编辑分页对话框资源

3)创建与分页对话框关联的CPropertyPage派生类(注意不是CDialog),如图9-27所示。

978-7-111-46378-8-Chapter09-59.jpg

图9-27 创建分页对话框的关联类

4)三个子页的关联类全都要由CPropertyPage类派生,关联变量与本章第4节完全相同,如图9-28所示。

5)在每个分页对话框类上单击鼠标右键,在弹出的快捷菜单中,选择“Add Virtual Function”命令,如图9-29所示。

978-7-111-46378-8-Chapter09-60.jpg

图9-28 添加数据型关联变量

978-7-111-46378-8-Chapter09-61.jpg

图9-29 添加虚函数回调

6)选中OnSetActive再单击“Add and Edit”按钮,用于在分页切换时的处理,如图9-30所示。

978-7-111-46378-8-Chapter09-62.jpg

图9-30 添加OnSetActive虚函数

7)修改三个分页对话框类中新添加的虚函数OnSetActive的代码。

978-7-111-46378-8-Chapter09-63.jpg(www.chuimin.cn)

8)在主对话框内添加的控件与第4节中的完全一样,见表9-9。

表9-9 主对话框的控件属性

978-7-111-46378-8-Chapter09-64.jpg

9)在主对话框类中建立列表控件的关联变量(m_list),并修改对话框初始化函数。

978-7-111-46378-8-Chapter09-65.jpg

978-7-111-46378-8-Chapter09-66.jpg

10)在主对话框类中,建立“添加”按钮的消息映射函数并修改代码。

978-7-111-46378-8-Chapter09-67.jpg

11)编译并运行,测试代码,如图9-31所示。

978-7-111-46378-8-Chapter09-68.jpg

图9-31 查看运行结果

外层对话框就是MFC封装了CPropertySheet产生的效果。属性表初始化时会对所有分页设置系统默认字体,因此,编辑各个分页的对话框资源时最好选用系统默认字体(宋体,9号)。属性表默认是标签模式显示,调用SetWizardMode函数后以向导模式显示。

12)继续在主对话框中,建立“修改”按钮的消息映射函数并修改代码。

978-7-111-46378-8-Chapter09-69.jpg

978-7-111-46378-8-Chapter09-70.jpg

13)添加双击列表控件的消息反射函数OnDblclkList,并修改代码。

978-7-111-46378-8-Chapter09-71.jpg

14)编译并运行,测试代码,如图9-32所示。

978-7-111-46378-8-Chapter09-72.jpg

图9-32 查看运行结果

修改时不调用SetWizardMode函数,显示默认的标签模式。