
3.3 设置对话框的属性
前面介绍了如何创建一个简单的对话框程序,但那个对话框的属性都是默认的。这一节对对话框的属性进行修改,这里说的属性是指对话框的大小、标题、字体、边框等。在Visual C++2013中,修改对话框的属性有两种方式,一种是可视化修改方式,另一种是代码修改方式,前一种比较简单,是在对话框属性视图上用鼠标即可设置,但这种方式只能在程序运行前进行设置;后一种需要写代码,稍微复杂,但可以在程序运行的时候动态修改。作为一个Visual C++程序员,这两种方式都要学会,尤其是后者,因为后者才能真正体现出Visual C++这个开发工具的强大和灵活。考虑到学习的循序性,这里只介绍可视化方式设置对话框的属性,代码方式可以在本章的高级话题里看到。
这里介绍下对话框的主要属性。
(1)ID属性和Caption属性
ID属性:对话框资源的标识符。它就是一个整数,并且在整个项目中是唯一的,即一个项目中不同的资源的ID是不可以相同的。系统是根据资源的ID来识别不同的资源的。资源的ID可以设置,并且最好能做到见名知意,比如IDD_TEST_DIALOG, ID开头表示这个属性是ID,第3个字母D表示这个ID是对话框(Dialog)的ID, TEST表示项目名称,最后DIALOG表示这个ID是该项目中的主对话框(因为一个项目中可能有多个对话框)。ID的定义通常有系统定义,定义的地方在项目的resource.h中。
Caption属性:在对话框标题栏中显示的文本。它是一个字符串,通过该属性可以修改对话框的标题文字,比如设置对话框标题文字为“用户登录”。
(2)X Pos、Y Pos和Center属性
● X Pos:程序运行后,对话框左上角在屏幕上所处的X坐标,以像素为单位,方向朝右。
● Y Pos:程序运行后,对话框左上角在屏幕上所处的Y坐标,以像素为单位,方向朝下。
● Center属性:对话框运行是否处于屏幕中央。
(3)Visible属性
对话框是否可见,值为True时,对话框可以显示;值为False时,对话框不显示。
(4)Border属性
设置对话框的边框样式,有4个值:
● None:对话框没有边框和标题栏
● Thin:对话框有细的边框
● Resizing:对话框边框可调整大小,方法程序运行后,鼠标放到对话框边框处,当箭头改变的时候,就可以按住左键进行拖拉
● Dialog Frame:对话框的边框,且显示标题栏,这是Border属性默认值
(5)Font(Size)属性
对话框的字体属性,包括字的大小、字形(粗体、斜体等)、字符集等。单击Font属性后面的省略号按钮,会出现系统设置字体对话框。设置后,对话框所有控件上的文本字体都会发生改变。
(6)Disabled属性
是否在程序刚运行的时候禁用对话框。值为True时对话框有效,此时对话框可以响应各种事件;值为False时对话框无效,不响应事件,此时,对话框对关闭、拖动等操作都没反应,所以运行后无法通过正常途径关闭,只能在任务管理器中结束其进程。
(7)Absolute Align属性
设置对话框相对于屏幕对齐。值为True时,对话框运行后将位于屏幕左上角,对话框的左边和上边将和屏幕的左边和上边对齐;值为False时,对话框不对齐。
(8)Maximize Box和Minimize Box属性
这两个属性用来显示对话框标题栏上的最大化和最小化按钮。值为True时候,则为显示;值为False时,则不显示。默认情况下是不显示的。
(9)Title Bar属性
表示对话框是否显示标题栏。值为True时,显示标题栏;值为False时,不显示标题栏。默认是显示标题栏的。
3.3.1 打开对话框资源的属性视图
把【例3.1】的工程复制到硬盘,即把光盘\路径为code\ch03\3.1\下的Test文件复制到硬盘,比如D盘,然后打开文件夹D:\Test。
【例3.2】 可视化设置对话框属性
把Test文件夹复制过来后,可以看到有如图3-5所示内容:

图3-5
其中,可以看到Test文件夹下还有一个Test文件夹,这样有两层Test文件夹,其实外层的Test文件夹叫解决方案文件夹,里层Test文件夹叫项目文件夹(源码文件都是放在里层Test文件夹里的); Debug文件夹里有我们最终生成的可执行程序(这里是Test.exe文件);用线框起来的那个Test文件叫解决方案文件,这个文件的后缀名是sln,这里没有显示后缀名,只能根据图标来判定了。建议大家设置操作系统显示后缀名,这里提下设置方法,选择菜单“组织”|“文件夹和搜索选项”,弹出“文件夹选项”对话框,如图3-6所示。
在“文件夹选项”对话框上,单击“查看”,然后在“高级设置”里把“隐藏已知文件类型的扩展名”前的勾去掉,再单击“确定”按钮。这样文件后面的后缀名就会显示了。
这样查看文件就一目了然了,此时Test文件夹下的内容就变成了如图3-7所示。

图3-6

图3-7
以后讲述文件时都将带有后缀名。双击Test.sln可以打开Test这个解决方案,注意一个解决方案里可以有多个项目,在这里我们只有一个项目。
双击Test.sln文件来打开解决方案,然后在Visual C++ 2013中选择菜单“视图”|“其他窗口”|“资源视图”,此时会出现资源视图,在资源视图上双击 “Test.rc”|“Dialog”|“IDDTEST-DIALOG”,如图3-8所示。

图3-8
其中,IDD-TEST-DIALOG是我们这个工程中的对话框的资源名字,双击它可以出现对话框资源编辑界面,如图3-9所示。
在这个编辑界面上,我们可以放置控件,设置对话框的属性风格等。在对话框资源编辑界面上右击,在右击菜单上选择“属性”,此时会出现该对话框的属性视图,如图3-10所示。

图3-9

图3-10
3.3.2 设置对话框的边框
在对话框的属性视图上就能对对话框属性进行设置,比如让对话框没有边框,可以在属性Border旁边选择“None”(表示对话框不显示边框和标题栏),如图3-11所示。

图3-11
设置后,对话框就没有边框和标题栏了,可以在左边编辑界面上看到变化。本例中设置Border属性为Resizing。
3.3.3 设置对话框的标题
如果要设置对话框的标题,可以在属性Caption的右边输入“我的对话框”或其他文字,注意,标题是显示在标题栏上面的,所以Border属性不能为None,否则边框标题栏都没有了,也就看不到对话框的标题了,如图3-12所示。

图3-12
3.3.4 设置对话框运行后所处的坐标
比如,我们要让对话框运行后在屏幕(100,0)坐标处显示出来,可以对属性视图的X Pos设置100, Y Pos设置0,如图3-13所示。

图3-13
注意,屏幕坐标是X轴朝右,Y轴朝下的。
3.3.5 设置对话框的大小
在对话框资源的编辑界面上,可以看到对话框的右边和下边各有3个小黑点,把鼠标放到对话框的边上的小黑点上,此时鼠标图形会发生改变,然后就可以按下鼠标左键拖拉边框,达到所需的大小后再释放鼠标左键,此时对话框的大小发生了改变。
3.3.6 设置对话框的字体
在属性视图上,在最末尾的Font(Size)属性右边的小按钮进行单击,可以出现字体对话框,在字体对话框上即可选择所需的字体及其大小,如图3-14所示。

图3-14
本例中设置字体为华文彩云,字形为粗斜体,大小为小五。
3.3.7 设置对话框的最大化和最小化按钮
在属性视图上找到Maximize Box和Minimize Box属性,然后设置它们的值为True。可以看到左边对话框的右上角多了2个按钮了。
通过上面几项设置后,再运行程序,得到运行结果如图3-15所示。

图3-15
小技巧:如果设置过程中,发现效果不好,可以按住键盘“Ctrl+Z”组合键来恢复本次设置前的状态。