10.4.2 属性表对话框的创建
因为属性表是对话框的一种,所以属性表对话框的创建与普通对话框是相同的。但是因为是特殊的对话框,因此,步骤略有不同。创建属性表对话框的步骤如下:
(1)为每个属性页创建对应的对话框资源。这些属性页对话框资源的大小可以不同,框架会使用其中最大的对话框资源的大小分配属性表中每个属性页的大小。在为属性页创建对话框模板资源时,必须指定如下属性。
在General选项卡下的Caption编辑框设置要显示在标签上的文本。
在Styles选项卡下的Style列表框中选择Child选项。
在Styles选项卡下的Border列表框中选择Thin选项。
选择Styles选项卡下的Titlebar复选框。
选择More Styles选项卡下的Disabled复选框。
(2)按照前面介绍过的方法,使用类向导为每个属性页对话框模板创建派生自CPropertyPage的类。
(3)使用类向导,创建存放属性页对象的成员变量。
(4)在源代码中构造CPropertySheet对象,调用CPropertySheet::AddPage()成员函数将每个页面添加到属性表中。调用CPropertySheet::DoModal()函数或Create()函数分别以模态方式和非模态方式显示属性表。以下是打开属性表的代码。
- void CDialogExampleDlg::OnButtonOpenSheet()// 打
开属性表按钮处理函数 - {
- CPropertySheet Sheet; // 定
义属性表 - Sheet.SetTitle("信息管理"); // 设
置属性表的标题 - CPageStudent page1; // 定
义学生页变量 - CPageTeacher page2; // 定义
教师页变量 - Sheet.AddPage(&page1); // 向属
性表中增加学生页 - Sheet.AddPage(&page2); // 向属性
表中增加教师页 - Sheet.DoModal(); // 显示属性表
- }
上面代码中的CPageStudent类和CPageTeacher类都是派生自CPropertyPage类的属性页类,并在程序中定义了对应的对话框资源。创建了这两个对象后,调用CPropertySheet对象的AddPage()成员函数将这两页增加到属性表中,最后调用DoModal()函数显示属性表。程序运行效果如图10-17所示。
|
| 图10-17 属性页程序效果图 |
(5)根据需要,按照前面介绍过的方法处理属性页和属性表之间的数据交换。