6.6.3 创建一般属性页对话框
本小节将介绍如何来创建一个一般属性页对话框。
【实例6-4】 创建一般属性页对话框
光盘路径 /06/dialog_4/
实例目的 创建一般属性页对话框
1.创建工程
在IDE中依次选择“File”→“New”菜单命令,或直接按快捷键“Ctrl+N”,打开“New”对话框。
在“New”对话框中单击“Projects”选项卡,在列表框中选择“MFC AppWizard(.exe)”项,在“Project name”文本框中输入“dialog_4”,其他使用默认值,单击“OK”按钮,弹出“MFC AppWizard-Step1”对话框。
在“MFC AppWizard-Step1”对话框中,选中“Multiple Document”单选按钮,其他使用默认值,然后单击“Finish”按钮,在弹出的“New Project Information”对话框中单击“OK”按钮,就可以完成工程的创建。
2.创建弹出属性页对话框的菜单
在上面创建的对话框中添加一个菜单项下挂一个菜单,菜单命令的消息响应函数用来弹出一个属性页对话框。
下面首先在菜单资源中添加菜单项和下拉菜单。
在工作区的Resource View标签中双击“dialog_4 resource”→“Menu”→“IDR_dialog_4 TYPE”条目,打开菜单资源。
选中菜单资源中的“查看”菜单,弹出下拉的菜单,选中下面的一个空白菜单项。
单击鼠标右键,选中弹出菜单的Properties菜单命令,弹出属性对话框,单击其中的Keep Visible按钮,使属性对话框始终显示在前端。
选中General标签中的Separator,在菜单资源中添加一个分隔条,同时在最下面又自动产生一个空白菜单。
选中空白菜单,在属性对话框的General中输入ID_VIEW_PROPERTIES,在Caption中输入“属性页对话框(&P)…”,同时下面又会自动增加一个空白的菜单。
此时如果编辑、链接和运行程序,可以看到新增加的菜单项是灰色的。下面为刚刚创建的菜单项增加消息响应函数。
通过菜单“View→ClassWizard”打开MFC ClassWizard对话框,在Class name项中选择CDialog_4View,在Object IDs中选择ID_VIEW_PROPERTIES,在Message中选择消息COMMAND,单击“Add Function”按钮添加菜单命令的消息响应函数。函数名取默认值。
3.添加一般属性页对话框
下面在例程dialog_4中添加一个一般属性页对话框,响应菜单命令“Dialog”→“属性页对话框…”。具体过程可以通过往工程中添加组件来实现。
通过菜单命令“Project”→“Add to Project”→“Components and Controls…”打开“Components and Controls Gallery”对话框。如图6-39所示。

图6-39 “Components and Controls Gallery”对话框
在“Components and Controls Gallery”对话框中的目录列表中双击Visual C++(www.cppentry.com) Components 条目,目录列表改变,拖动滚动条,找到Property Sheet项并选中。如图6-40所示。

图6-40 在Visual C++(www.cppentry.com) Components 条目中选择Property Sheet项
单击“Insert”按钮,在弹出的“Microsoft Visual C++(www.cppentry.com)”消息对话框中单击“确定”按钮后弹出“Property Sheet Wizard”对话框。如图6-41所示。
在“Property Sheet Wizard”对话框中选择所要添加的属性框类型。默认的是一般类型的属性框即选中的是Property Sheet ,单击“下一步”按钮,弹出如图6-42所示的对话框。

图6-41 “Property Sheet Wizard”对话框
图6-42 下一步“Property Sheet Wizard”对话框
在紧接着弹出的对话框中的Support priviewing复选框要求确认是否在属性框中添加预览功能,默认值为不添加预览功能。下部的单选按钮是确认将属性框设置为模态还是非模态类型,默认值为模态,选中的是NO保持默认值,单击“下一步”按钮。
在接着弹出的对话框中要求选择在哪个类中对属性框进行操作。通过ComboBox控件,选中CDialog_4View,单击“下一步”按钮。如图6-43所示。
在接着弹出的对话框中,要求确认属性框中的属性页个数,默认值为2。保持默认值,单击“下一步”按钮。如图6-44所示。

图6-43 ComboBox控件,选中CDialog_4View
图6-44 确认属性框中的属性页个数
在接着弹出的对话框中要求确认将要添加的CPropertySheet类和CPropertyPage类的派生类的名称。可以通过单击Change按钮来改变。保留默认值,单击“完成”按钮。如图6-45所示。

图6-45 添加的CPropertySheet类和CPropertyPage类
关闭“Components and Controls Gallery”对话框。
通过上述步骤,在程序中加入了下面的一些内容:
一个CPropertySheet 类的派生类CMyPropertySheet 。
两个CPropertyPage 类的派生类:CMyPropertyPage1和CMyPropertyPage2。
与CMyPropertyPage1类和CMyPropertyPage2类相关联的对话框资源。
在Dialog_4View.cpp 文件的头部添加了一条包含语句:
# include "MyPropertySheet.h"
在CDialog_4View类中添加了CDialog_4View::OnProperties()函数。函数内容如下:
所以,只要调用CDialog_4View::OnProperties()函数就可以弹出刚刚创建的属性页对话框。下面在菜单“Dialog”→“属性页对话框…”的响应函数中调用该函数。
定位到函数CDialog_4View::OnViewProperties(),加入下面的代码:
编译、链接和运行程序,测试属性页对话框的效果。如图6-46所示。

图6-46 属性页对话框的效果图
创建的两个属性页对话框内容基本一样,可以利用资源编辑器修改属性页的内容。
【责任编辑:
杨硕 TEL:(010)68476636-8001】