《《visual-c++程序设计教程》第四章对话框设计和windows常用控件》由会员分享,可在线阅读,更多相关《《visual-c++程序设计教程》第四章对话框设计和windows常用控件(64页珍藏版)》请在金锄头文库上搜索。
1、第4章 对话框设计和Windows常用控件,4.1 对话框应用程序介绍,1.对话框组成 对话框主要由以下两部分组成: (1) 对话框资源:定义了对话框的特性(如大小、位置和风格等)以及对话框中每个控件的类型、位置等属性。一般情况下,对话框资源在资源编辑器中静态地定义,也可以用编程的方法在程序运行时动态地创建。 (2) 对话框类:对话框类是与对话框资源相关联的,基于CDialog类的派生类,它提供编程接口来管理对话框。,2.对话框分类 对话框的分类主要有以下两种:模式(Model)对话框和非模式(Modeless)对话框。 对于模式对话框,在对话框关闭之前,用户无法在同一应用程序的其他地方进行工
2、作,如Microsoft Word中的“打开文件”对话框。而对于非模式对话框,在它仍然保留在屏幕上的同时,用户可以在同一应用程序的其他窗口中进行工作,如Microsoft Word 中的“查找与替换”对话框,在对话框保留在屏幕的同时,还可以进行光标的重定位及其他操作。,4.2 创建对话框程序,在Visual C+ 6.0中创建对话框应用程序一般分为4个步骤: (1)利用资源编辑器创建一个对话框模板,加入需要的控件并设置对话框和控件的属性。 (2)利用ClassWizard创建与对话框资源对应的CDialog的派生类。 (3)编写创建对话框的代码,通常在响应某个菜单项或者工具栏按钮时弹出对话框。
3、 (4)为对话框的控件添加响应的消息处理。,4.2.1 建立对话框程序框架,在MFC应用程序中添加对话框资源,通常按下列步骤进行: (1)利用MFC AppWizard向导生成单文档(SDI)应用程序DialogTest。选择“插入”“资源”命令,或使用Ctrl+R组合键打开“插入资源”对话框。展开资源列表中的“Dialog”项,如图4-1所示,“资源类型”列表中列出了各种类型的对话框资源。,(2)单击“新建”按钮可以创建一个资源类型列表中指定类型的新资源;单击“定制”按钮可以创建资源类型列表中没有的新类型的资源;单击“导入”按钮可以将外部已有的位图、图标等资源添加到当前应用程序中。 (3)修
4、改对话框属性。在对话框模板的空白处右击,从弹出的快捷菜单中选择“属性”命令,弹出如图4-3的“对话属性”对话框。,对话框的属性有“常规”、“样式”、“更多样式”、“扩展样式”和“更多扩展样式”5个部分,这里只介绍最常用的“常规”属性,其中各个属性说明如表4-2所示。根据需要设置各项属性即可。,4.2.2 创建对话框类,在创建了对话框模板后,就可以利用ClassWizard来创建从CDialog派生且连接到对话框模板的对话框类了,并可以添加与控件相关联的成员变量。需要注意的是,无论在创建对话框类之前还是之后,都可以向对话框资源添加控件,但只有在创建对话框类之后,才可以为对话框添加与控件关联的成员
5、变量和消息处理函数。,4.2.3 了解对话框常用函数,CDialog类是对话框的基类,用户在程序中创建的对话框类一般都是CDialog类的派生类。CDialog类从CWnd类派生而来,所以它继承了CWnd类的成员函数,用户在编写对话框程序时除了使用CDialog类的成员函数之外,还可以调用CWnd类的一些成员函数进行对话框的管理。对话框常用的成员函数主要有以下几个:,1.DoModal 该方法用于创建并显示一个模式对话框,其原型如下:virtual int DoModal(); 返回值:该方法返回一个整数值,该数值可以应用于EndDialog方法。如果返回值为-1,则表示没有创建对话框;如果为
6、IDABORT,则表示有其他错误发生。 2.Create 该方法从对话框模板中创建一个对话框资源,其原型如下: BOOL Create(LPCTSTR lpszTemplateName,CWnd*pParentWnd=NULL);BOOL Create(UINT nIDTemplate,CWnd*pParentWnd=NULL); 3.EndDialog 该函数用于退出一个模式对话框,返回nResult作为DoModal的返回值,其原型如下:void EndDialog(int nResult);,4.OnCancel 该函数在单击对话框中的“Cancel”按钮或按Esc键时由框架调用,其原型
7、如下:virtual void OnCancel(); 5.OnInitDialog 该重载函数用于响应WM_INTTDIALOG消息,对对话框进行初始化处理,其原型如下:virtual BOOL OnInitDialog(); 返回值:返回非零值,输入焦点为第一个控件。若程序已显式地设置焦点到某个控件处,则返回零。 6.OnOK 单击ID为IDOK的按钮时调用的函数,关闭对话框,并返回IDOK,其原型如下:virtual void OnOK();,4.3 使用Windows常用控件,为了与用户进行直观、方便、快捷的交互,Windows操作系统提供了各种控件。控件(Control)是一种子窗口
8、,应用程序用它来与其他窗口进行简单的交互。一般情况下,在使用对话框的时候都需要加上对话框控件,如编辑框、组合框、按钮和单选按钮等。,4.3.1 Windows常用控件介绍,1.静态文本控件(CStatic) 静态文本控件用来在屏幕上显示字符串,一般不响应消息,在运行过程中不和用户发生任何关系。当把矩形范围定位好之后,就可以直接输入文本。该控件的一个常用属性是标题(Caption)属性,用来设置在控件中显示的文本。在很多情况下,对话框中的一些说明性质的文字均可以用静态文本进行输出。管理静态文本控件的MFC类是CStatic类。,2.编辑框控件(CEdit) 编辑框控件是一个让用户从键盘输入和编辑
9、文字的矩形窗口。同时,用户也可以使用编辑框控件来编辑或修改简单的文本文件。编辑框一般和静态文本控件一起使用,当它获得焦点时,框内会出现一个闪动的插入符。 3.按钮控件(CEdit) 在Windows中按钮是随处可见的,其中常见的按钮有3种类型:按键按钮、单选按钮和复选框。按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮。单选按钮的外观是一个圆圈,当它被选中时,单选按钮中就标上一个黑点。复选框的外观是一个空心方框,当它被选中时,复选框中就加上一个对勾标记,通常复选框只有选中和没有选中两种状态。,4.列表框控件(CListBox) 列表框是一种输入控制,它可以使用户从所列的表
10、项中进行选择。用户可以在其中选择一个或多个项,这与单选按钮和复选框的功能有些相近,但不同的是,列表框中项的数目是灵活变化的,程序运行时可往列表框中添加或删除某些项。并且,当列表框中项的数目较多不能一次全部显示时,还可以通过滚动条来拓展显示范围。,5.组合框控件 组合框是列表框和编辑框的组合。在组合框中,用户除了可以在列表中对已经存在的选项进行选择外,还可以输入新的选项。 Windows提供了3种类型的组合框:简单组合框(Simple)、下拉式组合框(Dropdown)和下拉式列表框(Drop List)。简单组合框和下拉式组合框都含有列表框和编辑框控件,只不过简单组合框的列表框不是下拉式的,跟
11、正常的列表框一样。下拉式列表框则虽然有下拉式的列表,但却没有文字编辑功能。,6.滚动条控件 滚动条是窗口中常见的对象,当窗口客户区中要显示比其自身大的对象时,滚动条便非常有用了。这种滚动条与窗口一同创建,位于窗口用户区旁的非用户区,用来扩展用户区的显示范围,它被称为标准滚动条。另外,还有一种作为控件的滚动条,这是一个独立的窗口,具有直接的输入焦点,使用这种滚动条的目的未必是滚动显示窗口内容。,4.3.2 添加Windows控件,控件的创建方法有两种,一种是在对话框中指定控件,即将控件的父窗口指定为对话框,当程序启动该对话框时,Windows系统自动为对话框创建控件,当关闭对话框时,Window
12、s所创建的控件也随之被撤销。另一种是将控件看作是任意窗口的子窗口,通过调用相应的创建函数来实现。,1.通过资源编辑器添加控件 打开对话框资源编辑器弹出如图48所示的控件工具栏之后,就可以方便地在对话框中添加各种控件了。 (1)单击添加:在控件工具栏上单击要添加的控件后,将鼠标移动到对话框模板上,此时鼠标光标变成了“+”形状,在对话框上再次单击鼠标,控件就添加到对话框模板上了。 (2)拖动添加:拖动要添加的控件到对话框模板上,然后释放鼠标,也可以添加控件。,2.调用创建函数添加控件 如果希望在程序的运行过程中在对话框中添加控件,一般需要先声明一个MFC控件类的对象,然后调用Create()函数和
13、其他成员函数显示控件和设置属性。 Create()是CWnd的成员函数,其原型如下: virtual BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, Const RECT ,4.3.3 修改Windows控件属性,1.控件ID每个控件都有一个ID标识,系统给添加的每个控件指定了一个默认的ID标识,用户可以根据需要对其进行修改,以便更清楚地表达出控件的作用。控件ID以IDC_开头,命名ID时最好包括控件类型,例如,IDC_BUTTON前缀用于按钮,IDC_EDIT前缀用于编辑框。ID可以由字母、
14、数字及下划线字符组成,且必须以字母或下划线字符开头。MFC约定ID中的字母全部大写。,2.标题属性 静态文本、组框、命令按钮以及单选按钮等控件都可以显示标题,用来对控件进行文字说明。控件标题中的字符“&”使紧跟其后的字符附带下划线,按Alt+下划线上的字符将启动该控件。若控件是一个单选按钮,则按Alt+下划线上的字符将选择该按钮;若控件是命令按钮,则将激活按钮命令;若控件是一个静态文本,则将激活紧随其后的下一个控件。,3.制表站属性 该属性控制利用键盘Tab键获取对话框窗口的操作焦点,获得焦点的控件能够响应当前的键盘输入。控件获得焦点后,按Enter键就执行控件所对应的命令。任何对话框中都只能
15、由一个控件拥有焦点。,4.组属性 组属性用来对一组控件进行编组,用户可以用键盘方向键在该组控件内切换焦点。组属性常用于单选按钮和复选框,在同一组内的单选按钮具有互斥的特性,即在这些单选按钮中只能有一个是选中的。如果一个控件具有Group属性,则这个控件以及按Tab顺序紧随其后的所有控件都属于一组,直到遇到另一个有Group属性的控件为止。,4.4 对控件进行排版,在实际编程中,有时会根据需要在对话框中加入多个控件,这时就需要对控件进行适当的排版以使对话框更加美观。控件布局可以利用如图4-11所示的布局菜单,或者利用如图4-12所示的控件布局工具栏来实现。要注意的是,布局菜单和布局工具栏只有在对
16、对话框资源进行编辑时才有效,对其他资源进行编辑时无效。,4.4.1 设置Windows控件的大小,如果要设置控件的大小,可以利用控件周围的尺寸调整点实现,如图4-13所示,可看到控件周围有8个调整点。特别地,对于静态文本控件,当输入标题内容时,控件的大小会自动改变。调整控件大小的具体方法如下:,(1)单击要调整的控件并将其选中,此时控件四周显示出尺寸调整点。 (2)把鼠标光标放在调整点上,当鼠标变为双向箭头时,水平或垂直拖动鼠标以改变控件的宽度或者高度。如果希望能等比例地改变控件的宽度和高度,可以把鼠标光标放在右下脚的调整点位置进行拖动。 (3)调整为满意大小时停止拖动即可。,4.4.2 设置Windows控件的对齐模式,为了使程界面更加美观,有时需要对多个控件进行对齐排列,此时同样可以使用布局菜单或者控件布局工具栏来实现,具体方法如下: (1)选中需要对齐的多个控件。 (2)选择“排列”菜单的下一级菜单中的选项进行设置,可以进行的对齐方式有居左对齐、居右对齐、顶端对齐、底部对齐、水平居中和垂直居中。也可以使用控件布局工具栏中的工具按钮实现相同的功能。,