第3章对话框和常用控件.ppt
《第3章对话框和常用控件.ppt》由会员分享,可在线阅读,更多相关《第3章对话框和常用控件.ppt(139页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章对话框和常用控件第三章对话框和常用控件3.1 对话框的使用对话框的使用3.2 控件的创建和使用方法控件的创建和使用方法 3.3 常用控件常用控件 3.4 通用对话框和消息对话框通用对话框和消息对话框 3.5 综合应用综合应用3.1对话框的使用对话框的使用 在Visual C+6.0应用程序中,使用一个对话框通常有两种情形:一是直接创建一个对话框应用程序,二是在一个应用程序中进行调用。为不失一般性,这里介绍第二种对话框使用情况的一般过程,即依次如下:(1)添加对话框资源;(2)设置对话框的属性;(3)添加和布局控件;(4)创建对话框类;(5)添加对话框代码;(6)在程序中调用对话框。显然,
2、对于第一种对话框使用情况来说,其过程通常是从(2)到(5)。3.1.1 添加对话框资源 在对话框资源添加之前,先来创建一个默认的单文档应用程序Ex_SDI:(1)在“D:Visual C+应用”文件夹中,创建本章应用程序工作文件夹“第3章”。(2)启动Visual C+6.0,选择“文件”“新建”菜单,在弹出的“新建”对话框的工程标签页面中,选择MFC AppWizard(exe)的项目类型。单击位置框右侧的按钮,在弹出的对话框中,将该应用程序的文件夹定位在“D:Visual C+应用第3章”,并在工程编辑框中输入单文档应用程序名Ex_SDI。3.1对话框的使用对话框的使用 (3)单击确定按钮
3、,在出现的“步骤1”对话框中,选择“单个文档”应用程序类型。(4)单击完成按钮出现一个信息对话框,显示出用户在前面几个步骤中作出的选择内容,单击确定按钮系统开始创建,并又回到了Visual C+6.0的主界面。若无特别说明,以后凡遇到“创创建建一一个个默默认认的的单单文文档档应应用用程程序序Ex_XXXX”就是指上述的步骤,本书作此约定。其中,Ex_XXXX为创建的应用程序名。这样就可在单文档应用程序Ex_SDI中添加一个对话框资源,通常按下列步骤进行:(1)选择“插入”“资源”菜单,或按快捷键Ctrl+R打开“插入资源”对话框,在对话框中可以看到资源列表中存在Dialog项,若单击Dialo
4、g项左边的“+”号,将展开对话框资源的不同类型选项,如图3.1所示,表3.1列出各种类型的对话框资源的不同用途。图图3.1“插入资源插入资源”对话框对话框 其中,新建按钮是用来创建一个由“资源类型”列表中指定类型的新资源,自定义按钮是用来创建“资源类型”列表中没有的新类型的资源,引入按钮是用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中。3.1对话框的使用对话框的使用表表3.1 对话框资源类型对话框资源类型类类 型型说说 明明IDD_DIALOGBAR对话条,往往和工具条停放一起IDD_FORMVIEW一个表单(一种样式的对话框),用于表单视图类的资源模板IDD_OLE_P
5、ROPPAGE_LARGE一个大的OLE属性页IDD_OLE_PROPPAGE_SMALL一个小的OLE属性页IDD_ PROPPAGE_LARGE一个大属性页,用于属性对话框IDD_ PROPPAGE_MEDIUM一个中等大小的属性页,用于属性对话框IDD_ PROPPAGE_SMALL一个小的属性页,用于属性对话框3.1对话框的使用对话框的使用 (3)对展开的不同类型的对话框资源不作任何选择,选中“Dialog”,单击新建按钮,系统就会自动为当前应用程序添加了一个对话框资源,并出现如图3.2所示的界面。对话框模对话框模板板控件工具控件工具栏栏布局工具布局工具栏栏默认标识默认标识符符图图3.
6、2 添加对话框资源后的开发环境添加对话框资源后的开发环境3.1对话框的使用对话框的使用 系统为对话框资源自动赋给它一个默认的标识符名称(第一次为IDD_DIALOG1,以后依次为IDD_DIALOG2、IDD_DIALOG3、.)。使用了通用的对话框模板创建新的对话框资源。对话框的默认标题为“对话”(Dialog),有确定和取消两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。自动出现“对话框资源编辑器”窗口,在这里可以通过“控件工具栏”和“布局工具栏”向对话框添加和布局控件,并可设置对话框的属性。需要说明的是,第一次使用Visual C+6.0的对话框编辑器时,“控件工具栏”和“
7、布局工具栏”可能是浮动,可以将其拖放到指定位置(参看图3.2),以便让开发环境更易于操作。3.1.2 设置对话框属性设置对话框属性 在对话框模板的空白处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图3.3所示的对话框属性窗口。可以看出,对话框具有这几类属性:常规(General)、样式(Styles)、更多样式(More Styles)、扩展样式(Extended Styles)、更多扩展More Extended Styles(更多扩展样式)等部分,这里仅介绍最常用的常规(General)属性,如表4.2所示。3.1对话框的使用对话框的使用图图3.3 对话框属性窗口对话框属性窗口表
8、表3.2 对话框的常规(对话框的常规(General)属性)属性项项 目目说说 明明ID框修改或选择对话框的标识符名称标题框输入对话框的标题名称,中英文均可,如“我的对话框”字体按钮单击此按钮可选择字体的种类(如宋体)及尺寸(如9号)位置X/位置Y对话框左上角在父窗口中的X、Y坐标,都为0时表示居中菜单框默认值为无,当对话框需要菜单时输入或选择指定的菜单资源类名称框默认值为无,它提供C/C+语言编程时所需要的对话框类名,对MFC类库的资源文件来说,该项不被激活。3.1对话框的使用对话框的使用图3.3中,有一个 图标,当单击此图标后,图标变成,表示该对话框将一直显示直到用户关闭它。在 状态下,当
9、该对话框一旦失去活动状态后就会自动消失!将添加的对话框的属性进行以下3点修改,结果如图3.4所示:在ID框中,将对话框标识符IDD_DIALOG1改成IDD_DIALOG_FIRST;在标题框中,将对话框标题“对话”改为“我的第一个对话框”;单击字体按钮,通过弹出的字体对话框将对话框内的文本设置成“宋体,9”,以使自己的对话框和Windows中的对话框保持外观上的一致(这是界面设计的“一致性”原则)。3.1对话框的使用对话框的使用图图3.4 对话框属性修改后的界面对话框属性修改后的界面3.1对话框的使用对话框的使用 3.1.3 添加和布局控件 一旦对话框资源被打开或被创建,就会出现对话框编辑器
10、,通过它可以在对话框中进行控件的添加和布局等操作。1.控件的添加控件的添加对话框编辑器一旦打开,“控件”工具栏一般都会随之出现。若不出现,则可在开发环境的 工具栏区的空白处右击鼠标,从弹出的快捷菜单中选择“控件”。利用“控件”工具栏中的各个按钮可以顺利完成控件的添加。图3.5说明了各个按钮所对应的控件类型。控件的选择控件的选择静态文本静态文本组框组框复选框复选框组合框组合框水平滚动条水平滚动条旋转按钮旋转按钮滑动条滑动条列表视图列表视图标签标签复合编辑复合编辑月历月历用用户户定定制制控控件件静态图片静态图片编辑框编辑框按钮按钮单选框单选框列表框列表框垂直滚动条垂直滚动条进展条进展条热键热键树形
11、视图树形视图动画动画日期选择日期选择IP地址地址扩展组合框扩展组合框图图3.5 控件工具栏和各按钮含义控件工具栏和各按钮含义3.1对话框的使用对话框的使用 向对话框添加一个控件的方法有下列几种:在控件工具栏中单击某控件,此时的鼠标箭头在对话框内变成“十”字形状;在对话框指定位置单击鼠标左键,则此控件被添加到对话框的相应位置,再拖动刚添加控件的选择框可改变其大小和位置。在控件工具栏中单击某控件,此时的鼠标箭头对话框内变成“十”字形状;在指定位置处单击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。用鼠标左键点中控件工具栏中的某控件,并按住鼠标左键不放;在移动鼠标到对话框的指定位置的过程中,用户会看
12、到一个虚线框,下面带有该控件的标记;释放鼠标左键,新添加的控件立即出现在对话框中。2.控件的选取控件的选取 控件的删除、复制和布局操作一般都要先选取控件,若选取单个控件,则可以下列方法:用鼠标直接选取。首先保证在控件工具栏中的选择按钮()是被选中的,然后移动鼠标指针至指定的控件上,单击鼠标左键即可。用助记符来选取。如果控件的标题中带有下划线的字符,这个字符就是助记符,选择时直接按下该助记符键或“Alt+助记符”组合键即可。3.1对话框的使用对话框的使用 用Tab键选取。在对话框编辑器中,系统会根据控件的添加次序自动设置相应的Tab键次序。利用Tab键,用户可在对话框内的控件中进行选择。每按一次
13、Tab键依次 选取对话框中的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件。对于多个控件的选取,可采用下列方法:先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,则被该虚框所包围的控件都将被选取。先按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若在选取时,对已选取的控件再选取一下,则取消该控件选取。需要注意的是:(1)一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实心小方块,拖动它可改变控件的大小,如图3.6(a)所示。(2)多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这
14、个控件称为主要控件主要控件,而其他控件的选择框的小方块是空心的。如图3.6(b)所示。图图3.6 单个控件和多个控件的选择框单个控件和多个控件的选择框(a)(b)3.1对话框的使用对话框的使用3.控件的删除、复制和布局控件的删除、复制和布局 当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。若在鼠标拖动过程中还按住Ctrl键则复制控件。若按Del键可将选取的控件删除。当然还有其他一些编辑操作,但这些操作方法和一般的文档编辑器基本相同,这里不再重复。对于控件的布局,对话框编辑器中提供了控件布局工具栏,如图3.7所示,它可以自动地排列对话框内的控件,并能改变控件的大小。靠齐
15、上边靠齐上边 左左右右间间隔隔相相等等 大小相同大小相同靠齐左边靠齐左边上下居中上下居中宽度相同宽度相同 显示标尺显示标尺 靠齐右边靠齐右边 左右居中左右居中 高度相同高度相同测试对话框测试对话框 靠齐下边靠齐下边 上上 下下 间间 隔隔 相相 等等显示网格显示网格图图3.7 控件布局工具栏控件布局工具栏 3.1对话框的使用对话框的使用 需要说明的是:(1)随着对话框编辑器的打开,Visual C+6.0开发环境的菜单栏还出现“布局”菜单,它的命令与布局工具相对应,而且大部分命令名后面还显示出相应的快捷键,由于它们都是中文的(汉化过),故这里不再列出。(2)大多数布置控件的命令使用前,都需要用
16、户选取多个控件,且“主要控件”起到了关键作用。例如用户选取多个控件后,使用“大小相同”命令只改变其它控件的大小,并与“主 要控件”的尺寸一致。因此,在多个控件的布置过程中,常需要重新设置“主要控件”。设置的方法是按住Ctrl或Shift键,然后用鼠标单击所要指定的控件即可。(3)为了便于用户在对话框内精确定位各个控件,系统还提供了网格、标尺等辅助工具。在图3.7的控件布局工具栏的最后两个按钮分别用来网格和标尺的切换。一旦网格显示,添加或移动控件时都将自动定位在网格线上。3.1对话框的使用对话框的使用4.测试对话框测试对话框 “布局”菜单下的“测试”命令或布局工具栏上的测试按钮是用来模拟所编辑的
17、对话框的运行情况,帮助用户检验对话框是否符合用户的设计要求以及控件功能是否有效等。5.操作示例操作示例 (1)下面来向对话框添加三个静态文本控件(一个静态文本控件就是一个文本标签):(2)在控件工具栏上,单击 按钮,然后在对话框模板左上角单击鼠标左键不放,拖动 鼠标至满意位置,释放鼠标键。这样,第一个静态文本控件添加到对话框中了。(3)单击布局工具栏上的 按钮,打开对话框模板的网格。(4)在控件工具栏上,将 按钮拖放到对话框模板中的左中部。这样,第二个静态文本控件添加到对话框中了。同样的操作,将第三个静态文本控件拖放到对话框模板中的左下部。(5)按住Shift键不放,依次单击刚才添加的三个静态
18、文本控件,结果如图3.8所示。在布局工具栏上,依次单击“大小相同”按钮 、“靠左对齐”按钮 、“上下间隔相等”按钮 ,结果如图3.9所示。3.1对话框的使用对话框的使用图图3.8 布局前的静态文本控件布局前的静态文本控件 图图3.9 布局后的静态文本控件布局后的静态文本控件3.1.4 创建对话框类在对话框资源模板的空白区域(没有其他元素或控件)内双击鼠标或按Ctrl+W快捷键,将弹出一个对话框,询问是否为对话框资源创建一个新类。单击OK按钮,将弹出如图3.10所示的New Class(新类)对话框。在Name(名称)框中输入类名CFirstDlg。Base class(基类)和Dialog I
19、D(对话框标识符)内容是由系统自动设置的,一般无需修改。从Base class框的内容可以看出,用户对话框类是从基类CDialog派生而来的。3.1对话框的使用对话框的使用 单击OK按钮,一个基于对话框资源模板的对话框类CFirstDlg就创建好了。此时,出现MFC ClassWizard(MFC类向导)对话框。图图3.10“New Class”对话框对话框3.1对话框的使用对话框的使用 3.1.5 添加对话框代码 在MFC ClassWizard对话框,查看“Class name”列表中是否选择了CFirstDlg,若不是,则在IDs列表中选择CFirstDlg。在Messages框中找到并
20、选定WM_INITDIALOG消息,如图3.11。单击Add Function按钮或双击WM_INITDIALOG消息,MFC ClassWizard自动为CFirstDlg类添加OnInitDialog函数。图图3.11“MFC ClassWizard”对话框对话框3.1对话框的使用对话框的使用 需要说明的是,WM_INITDIALOG是在对话框显示之前向父窗口发送的消息,由于建立了此消息和OnInitDialog函数的关联,系统在对话框显示之前就会调用此函数,因此常将对话框一些初始化代码添加到这个函数中。在Member functions列表框中选择刚添加的OnInitDialog函数,单
21、击Edit Code按钮(或直接在函数名双击鼠标),将自动出现该函数代码编辑窗口,在此函数中添加下列代码:BOOL CFirstDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Add extra initialization herethis-SetWindowText(修改标题);return TRUE;/return TRUE unless you set the focus to a control /EXCEPTION:OCX Property Pages should return FALSE 代码中,SetWindowText是CWnd
22、的一个成员函数,用来设置窗口的文本内容。对于对话框来说,它设置的是对话框标题。3.1对话框的使用对话框的使用 3.1.6 在程序中调用对话框 在程序中调用对话框,一般是通过映射事件的消息(如命令消息、鼠标消息、键盘消息等),在映射函数中进行调用。这样,相应事件产生后,就会调用其消息映射函数,从而调用对话框的代码初执行。例如,下面的步骤用来实现在单文档应用程序 Ex_SDI的客户区中单击鼠标左键,显示前面添加的对话框。(1)按Ctrl+W键,弹出MFC ClassWizard对话框。(2)在Message Maps页面中,从Class name列表中选择CEx_SDIView,在IDs列表中选择
23、CEx_SDIView,然后在Messages框中找到并选中WM_LBUTTONDOWN消息。(3)单击Add Function按钮或双击WM_LBUTTONDOWN消息,则该消息的映射函数OnLButtonDown自动添加到Member Functions列表框中。(4)选中刚才添加的OnLButtonDown函数,单击Edit Code按钮(或直接双击函数名),在打开的文档窗口中的此成员函数中添加下列代码:void CEx_SDIView:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add your message handler code h
24、ere and/or call defaultCFirstDlg dlg;dlg.DoModal();CView:OnLButtonDown(nFlags,point);3.1对话框的使用对话框的使用 代码中,DoModal是CDialog基类成员函数,用来将对话框按模式方式来显示。(5)在CEx_SDIView 类的实现文件Ex_SDIView.cpp的前面添加CFirstDlg类的包含语句,即:#include Ex_SDIDoc.h#include Ex_SDIView.h#include FirstDlg.h (6)编译并运行。在应用程序文档窗口的客户区中单击鼠标,就会出现如图3.12
25、的对话框,这个对话框就是刚才添加的对话框,对话框的标题是程序代码所指定的结果。图图3.12 Ex_SDI运行的结果运行的结果3.1对话框的使用对话框的使用3.1.7 模式对话框和无模式对话框 上述通过DoModal成员函数来显示的对话框称为模式对话框模式对话框,所谓“模式对话框”是指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在应用程序的其它操作不能继续执行。模式对话框的应用范围较广,一般情况下,模式对话框会有确定(OK)和取消(Cancel)按钮。单出确定按钮,系统认定用户在对话框中的选择或输入有效,对话框退出;单击取消按钮,对话框中的选择或输入无效,对话框退
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对话框 常用 控件
限制150内