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