版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 对话框对话框3.1 创建对话框创建对话框 例例Ex_DlgDemo 运用导游创建对话框运用程序运用导游创建对话框运用程序 (1) 选择选择“文件文件“新建菜单,在弹出的新建菜单,在弹出的“新建对新建对话框中选择话框中选择“工程页面,选择工程页面,选择MFC AppWizard(exe),在工程框中输入工程名在工程框中输入工程名Ex_DlgDemo。 3.1 创建对话框创建对话框 (2) 单击确定按钮,在出现的“Step 1对话框中选择“根本对话(框)运用程序类型,如下图。(3) 单击下一个按钮,出现如图(右)所示的对话框,允许用户设置对话框的风格及ActiveX控件等特点的支持。3
2、.1 创建对话框创建对话框(4) 单击下一个按钮出现如图(左)所示的对话框,两个方面的选项可供用户选择:一是在源文件中能否参与注释用来引导用户编写程序代码,另一是运用动态链接库还是静态链接库。(5) 保管默许选项,单击下一个按钮出现如图(右)所示的对话框。3.1 创建对话框创建对话框(6) 单击完成按钮出现一个对话框,显示出用户在前面几个步骤中作出的选择内容,单击确定按钮系统开场创建。(7) 单击编译工具条上的运转工具按钮 或按快捷键Ctrl+F5,系统开场编连并运转生成的对话框运用程序可执行文件Ex_DlgDemo.exe,结果如下图 3.1 创建对话框创建对话框1. 资源的分类资源的分类
3、创建一个默许的单文档运用程序工程创建一个默许的单文档运用程序工程Ex_SDI1,并其工程任务区窗口切换到并其工程任务区窗口切换到“ResourceView页面,页面,Ex_SDI1资源视图:资源视图:3.1 创建对话框创建对话框Visual C+ 6.0运用的资源可分为以下几类: 快捷键列表(Accelerator):一系列组合键的集合,被运用程序用来引发一个动作。 对话框(Dialog):含有按钮、列表框、编辑框等各种控件的窗口。图标(Icon):代表运用程序显示在Windows桌面上的位,它同时有3232像素和1616像素两种规格。 菜单(Menu):用户经过菜单完成运用程序的大部分操作。
4、 字串表(String Table):运用程序运用的全局字符串或其他标识符。 工具栏按钮(Toolbar):工具栏外观是以一系列具有一样尺寸的位图组成的 版本信息(Version):包含运用程序的版本、用户注册码等相关信息。3.1 创建对话框创建对话框 当添加或创建资源或资源对象时,系统会为其提供默许的称号,如IDR_MAINFRAME等。要遵照以下规那么: 2. 标识符 (1) 在标识符称号中允许运用字母az、AZ、09以及下划线。(2) 标识符称号不区分大小写字母,如new_idd与New_Idd是相 同的标识符。(3) 不能以数字开头,如8BIT是不合法的标识符名。字符个数不得超越247
5、个。 Visual C+还提供了一些常用的定义标识符称号的前缀供用户运用、参考,每一个定义的标识符都保管在运用程序工程的Resource.h文件中,它的取值范围为032767。3.1 创建对话框创建对话框 字符个数不得超越247个。除了上述规那么外,出于习惯,Visual C+还提供了一些常用的定义标识符称号的前缀供用户运用、参考,见表 标识符前缀标识符前缀含义含义IDR_表示快捷键或菜单相关资源IDD_表示对话框资源IDC_表示光标资源或控件IDI_表示图标资源IDB_表示位图资源IDM_表示菜单项ID_表示命令项IDS_表示字符表中的字符串IDP_表示消息框中使用的字符串3.2.2 添加对
6、话框资源添加对话框资源 例例Ex_SDI 在单文档程序中添加对话框资源在单文档程序中添加对话框资源 创建一个默许的单文档运用程序工程创建一个默许的单文档运用程序工程Ex_SDI。 (1) 选择选择“插入插入“资源菜单,或按快捷键资源菜单,或按快捷键Ctrl+R翻开翻开“插入资源插入资源 对话框中看到资源列表中存在对话框中看到资源列表中存在Dialog项,假设单击项,假设单击Dialog项左边的项左边的“+号,将展开对号,将展开对话框资源的不同类型选项,表列出各种类型的对话框资话框资源的不同类型选项,表列出各种类型的对话框资源的不同用途。源的不同用途。“插入资源对话框插入资源对话框 :3.2.2
7、 添加对话框资源添加对话框资源 新建按钮用来创建一个由“资源类型列表中指定类型的新资源。 定制按钮是用来创建“资源类型列表中没有的新类型的资源。 导入按钮是用于将外部已有的位图、图标、光标或其他定制的 资源添加到当前运用程序中。 类类 型型说说 明明IDD_DIALOGBAR对话条,往往和工具条停放一起IDD_FORMVIEW一个表状风格的对话框,用于无模式对话框或视图类IDD_OLE_PROPPAGE_LARGE一个大的OLE属性页IDD_OLE_PROPPAGE_SMALL一个小的OLE属性页IDD_ PROPPAGE_LARGE一个大属性页,用于属性对话框IDD_ PROPPAGE_ME
8、DIUM一个中等大小的属性页,用于属性对话框IDD_ PROPPAGE_SMALL一个小的属性页,用于属性对话框3.2.2 添加对话框资源添加对话框资源(2) 对展开的不同类型的对话框资源不作任何选择,选中“Dialog,单击新建按钮,系统就会自动为当前运用程序添加了一个对话框资源。 3.2.2 添加对话框资源添加对话框资源 系统为对话框资源自动赋给它一个默许标识符称号 运用通用的对话框模板创建新的对话框资源。对话框的默许标题为Dialog,有OK和Cancel两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。 对话框模板资源所在的窗口称为对话框资源编辑,在这里可以经过控件工具栏和
9、规划工具栏向对话框添加和规划控件,并可设置对话框的属性。 Visual C+6.0开发环境的工具栏具有“浮动与“停靠功能,图中的控件工具栏是处于“浮动形状,通常将它拖放到窗口右侧,以便于操作。3.2.3 设置对话框属性设置对话框属性 在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性菜单项,出现如下图的对话框属性窗口。 对话框的属性有General(普通)、Styles(风格)、More Styles(更多)、Extended Styles(扩展风格)、MoreExtended Styles(更多扩展风格)等部分,这里仅引见最常用的General属性。 3.2.3 设置对话框属性设置对话框属
10、性对话框的对话框的General属性属性项项 目目说说 明明ID框修改或选择对话框的标识符名称标题框输入对话框的标题名称,中英文均可,如“我的对话框”字体按钮单击此按钮可选择字体的种类(如宋体)及尺寸(如9号)Xpos/Ypos对话框左上角在父窗口中的X、Y坐标,都为0时表示居中菜单框默认值为无,当对话框需要菜单时输入或选择指定的菜单资源Class name默认值为无,它提供C/C+语言编程时所需要的对话框类名,对MFC类库的资源文件来说,该项不被激活。 将添加对话框的General属性进展如下三点修正, 将对话框标识符改成IDD_DIALOG_FIRST; 将对话框标题改为“我的第一个对话框
11、; 单击字体按钮,经过弹出的字体对话框将对话框内的文本设置成“宋体,9 ,以使本人的对话框和Windows中的对话框坚持外观上的一致。 3.2.4 添加和规划控件添加和规划控件 1. 控件的添加控件的添加 对话框编辑器最初翻开时,控件工具栏是随之对话框编辑器最初翻开时,控件工具栏是随之出现的,利用出现的,利用 此工具栏中的各个按钮可以顺利完成此工具栏中的各个按钮可以顺利完成控件的添加。阐明了各控件的添加。阐明了各 个图标按钮所对应的控件类个图标按钮所对应的控件类型。型。控件的选择静态文本组框复选框组合框程度滚动条旋转按钮滑动条列表视图标签复合编辑月历用户定制工具静态图片编辑框按钮单项选择框列表
12、框垂直滚动条进展条热键树形视图动画日期选择IP地址组合框的扩展3.2.4 添加和规划控件添加和规划控件对话框中添加一个控件的方法有以下几种: 在控件工具栏中单击某控件,此时鼠标箭头在 对话框内变成“十字外形;在对话框指定位置单击鼠标左键,那么此控件被添加到对话框的相应位,再拖动选择框可改动控件的大小和位置。 在控件工具栏中单击某控件,此时鼠标箭头对话框内变成“十字外形;在指定位置单击鼠标左键不放,拖动鼠标至称心位置,释放鼠标键。 用鼠标左键点中控件工具栏中的某控件,按住鼠标左键不放;在挪动鼠标到对话框的指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标左键,新添加的控件立刻出如
13、今对话框中。3.2.4 添加和规划控件添加和规划控件 控件的删除、复制和规划操作普通都要先选取控件,假设选取单个控件,那么可以以下方法: 鼠标直接选取。首先保证在控件工具栏中的选择按钮( )是被选中的,然后挪动鼠标指针至指定的控件上,单击鼠标左键即可。 用助记符来选取。假设控件的标题中带有下划线的字符,这个字符就是助记符,选择时直接按下该助记符键或“Alt+助记符组合键即可。 用Tab键选取。在对话框编辑器中,系统会根据控件的添加次序自动设置相应的Tab键次序。利用Tab键,用户可在对话框内的控件中进展选择。2. 控件的选取控件的选取 3.2.4 添加和规划控件添加和规划控件 对于多个控件的选
14、取,可采用以下方法: 先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,那么被虚框所包围的控件将被选取。 先按住Shift键不放,然后用鼠标选取控件,直到所需求的多个控件选取之后再释放Shift键。 需求留意的是:1 单个控件被选取后,选择框上还有几个蓝色实心小方块,拖动它可改动控件的大小。2 多个控件被选取后,其中只需一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件的小方块。(b)(a)3.2.4 添加和规划控件添加和规划控件3. 控件的删除、复制和规划控件的删除、复制和规划 单个控件或多个控件被选取后,按方向键或用单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的
15、选择框可挪动控件。在鼠标拖动过鼠标拖动控件的选择框可挪动控件。在鼠标拖动过程中还按住程中还按住Ctrl键那么复制控件。按键那么复制控件。按Del键可将选取键可将选取的控件删除。对控件的规划,对话框编辑器中提供的控件删除。对控件的规划,对话框编辑器中提供了控件规划工具栏可以自动地陈列对话框内的控件,了控件规划工具栏可以自动地陈列对话框内的控件,并能改动控件的大小。并能改动控件的大小。 靠齐上边 左右间隔相等 大小一样靠齐左边上下居中宽度一样 显示标尺 靠齐右边 左右居中 高度一样测试对话框 靠齐下边 上下间隔相等显示网格3.2.4 添加和规划控件添加和规划控件 规划工具相对应的菜单命令在“编排菜
16、单下,而且大部分命令均有相应的快捷键。 “编排菜单不是在Visual C+ 6.0开发环境一开场就出现的,而是随着对话框编辑器的翻开而显示的。值得留意的是: 大多数布置控件的命令运用前,都需求用户选取多个控件,且“主要控件起到了关键作用。只改动其它控件的大小,并与“主要控件的尺寸一致。设置的方法是按住Ctrl或Shift键,然后用鼠标单击所要指定的控件即可。 为了便于用户在对话框内准确定位各个控件,系统还提供了网格、标尺等辅助工具。一旦网格显示,添加或挪动控件时都将自动定位在网格线上。3.2.4 添加和规划控件添加和规划控件 4. 测试对话框测试对话框 “编排菜单下的编排菜单下的Test命令或
17、规划工具栏上的测试按钮命令或规划工具栏上的测试按钮 是用来模拟所编辑的对话框的运转情况,协助用户检验是用来模拟所编辑的对话框的运转情况,协助用户检验 对话框能否符合用户的设计要求以及控件功能能否有效对话框能否符合用户的设计要求以及控件功能能否有效 等。如图等。如图 (右下右下) 右击添加的控件,从快捷菜单中选择“属性,出现如 图(左上) 3.2.5 创建对话框类创建对话框类 在运用程序中运用添加的对话框须先为该对话框模板创建一个用户对话框类。在对话框资源模板的空白区域(没有其他元素或控件)内双击鼠标,将弹出对话框 单击OK按钮,弹出右图所示的对话框。 在Name框中输入类名CFirstDlg,
18、单击OK按钮,一个基于对话框资源模板的用户对话框类CFirstDlg就创建好了。此时出现MFC ClassWizard(MFC类导游)对话框。 3.2.6 添加对话框代码添加对话框代码 在MFC ClassWizard对话框中,可以看到“Class name组合框曾经是CFirstDlg。 单击Add Function按钮或双击WM_INITDIALOG音讯,MFC ClassWizard自动为CFirstDlg类添加OnInitDialog函数。 在Member functions表框中选择刚添加 的OnInitDialog,单击Edit Code 将出现函数代码编辑窗口,在函数中添码:BO
19、OL CFirstDlg:OnInitDialog() CDialog:OnInitDialog(); Static*pWnd=(CStatic*)GetDlgItem (IDC_STATIC_1); pWnd-SetWindowText (“这是我的 第一个对话框!); return TRUE; / return TRUE unless you set the focus to a control 3.2.7 在程序中运用对话框在程序中运用对话框 (1) 在工程任务区窗口中选择ResourceView页面,双击资源“Menu项中的IDR_MAINFRAME,那么菜单编辑器窗口出如今主界面的右
20、边,相应的Ex_SDI项目的菜单资源被显示出来,在菜单的最后一项,Visual C+为用户留出了一个空位置,用来输入新的菜单项,如图 3.2.7 在程序中运用对话框在程序中运用对话框 (2) 在菜单的空位置上双击鼠标左键,那么出现它的属性对话框,在标题框中输入“测试(&T),结果如下图,其中符号&用来其后面的字符作为该菜单项的助记符,这样当按住“Alt键不放,再敲击该助记符键时,对应的菜单项就会被选中,或在菜单翻开时,直接按相应的助记符键,对应的菜单项也会被选中。 3.2.7 在程序中运用对话框在程序中运用对话框 (3) 单击菜单属性对话框中的“保管可见(Keep Visibl
21、e)按钮,使此属性对话框不断可见,以方便操作。单击“测试菜单项下方的空位置,在属性对话框中,输入标题“对话框(&D),在ID框输入该菜单项的资源标识;_TEST_DLG,结果如下图,单击属性对话框右上角的封锁按钮。 3.2.7 在程序中运用对话框在程序中运用对话框 (4) 用鼠标将新添加的菜单项拖到“查看和“协助菜单项 之间,结果如下图。 菜单项“对话框拖放后的位置(5) 选择“查看“建立类导游菜单命令或直接按Ctrl+W快捷键,那么出现MFC ClassWizard对话框,该对话框会自动切换到Message Maps页面。(6) 从“Class name组合框中选择CMainFram
22、e,在Object Ids列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND音讯。 3.2.7 在程序中运用对话框在程序中运用对话框 (7) 单击Add Function按钮或双击COMMAND音讯,出现“Add Member Function对话框以输入成员函数的称号。系统默许的函数名为OnTestDlg,如下图。该函数是对菜单项ID_TEST_DLG的映射,也就是说,当在运用程序运转时,用户选择“对话框,那么该函数OnTestDlg被调用,执行函数中的代码。 3.2.7 在程序中运用对话框在程序中运用对话框 单击OK按钮,在ClassWizard的“Member
23、 functions列表中将列出新添加的成员函数。选择此函数,单击Edit Code按钮(或直接在函数名双击鼠标),在此成员函数中添加下列代码:void CMainFrame:OnTestDlg() CFirstDlg dlg;/ 定义对话框类对象 dlg.DoModal();/ 显示对话框 代码中,DoModal是CDialog基类成员函数,它是用来显示和终止方式对话框。3.2.7 在程序中运用对话框在程序中运用对话框 在OnTestDlg函数的实现文件MainFrm.cpp的前面添加 CFirstDlg类的头文件包含,即:#include Ex_SDI.h#include MainFrm.
24、h#include FirstDlg.h“(10) 编译并运转。在运用程序菜单上,选择“测试 “对话框菜单项,将出现如图的对话框,这个对话框就是刚才添加的对话框。 4.3 运用无方式对话框 1. 方式对话框方式对话框 所谓所谓“方式对话框是指当对话框被弹出,用户必需在方式对话框是指当对话框被弹出,用户必需在对话框中作出相应的操作,在退出对话框之前,对话框所对话框中作出相应的操作,在退出对话框之前,对话框所在的运用程序不能继续执行。在的运用程序不能继续执行。 普通情况下,方式对话框会有普通情况下,方式对话框会有OK(确定确定)和和Cancel(取取消消)按钮。单出按钮。单出OK按钮,系统认定用户
25、在对话框中的选择按钮,系统认定用户在对话框中的选择或输入有效,对话框退出;单击或输入有效,对话框退出;单击Cancel按钮,对话框中按钮,对话框中的选择或输入无效,对话框退出,程序恢复原有形状。的选择或输入无效,对话框退出,程序恢复原有形状。 方式对话框的运用范围较广,上面例如中的对话框和平方式对话框的运用范围较广,上面例如中的对话框和平常所见到的大多数对话框都是方式对话框。常所见到的大多数对话框都是方式对话框。 4.3 运用无方式对话框所谓“无方式对话框是指当对话框被弹出后,不断保管在屏幕上,用户可继续在对话框所在的运用程序中进展其它操作;当需求运用对话框时,只需象激活普通窗口一样单击对话框
26、所在的区域即可激活。例Ex_Modeless 创建并运用无方式对话框 用MFC AppWizard(exe)创建一个默许的单文档运用程序x_Modeless。(2) 在该工程中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND,标题设为“无方式对话框,(3) 对话框字体和大小设为“宋体,9号。为IDD_DIALOG_SECOND对话框资源创建一个对话框类CSecondDlg。 2. 无方式对话框无方式对话框4.3 运用无方式对话框 按Ctrl+W快捷键翻开MFC ClassWizard,从“Class name列表中选择CSecondDlg,在IDs列表中选择IDOK, 是对
27、话框中OK 按钮的标识符,然后在Messages框中 选择BN_CLICKED(单击按钮)音讯,单击Add Function 按钮或双击BN_CLICKED音讯,出现“Add Member Function对话框以输入成员函数的称号,保管系统默 认的函数名为OnOK,如下图。4.3 运用无方式对话框(5) 修正CSecondDlg:OnOK函数中的代码。void CSecondDlg:OnOK() / 添加其他代码运用户输入对话框的数据有效 DestroyWindow(); / 终止对话框显示 delete this; / 删除对话框,释放内存空间代码中,DestroyWindow是对话框基类
28、CWnd的一个成员函数,用来终止窗口。 添加Cancel按钮(标识符为IDCANCEL)的BN_CLICKED音讯映射,并修正其映射函数CSecondDlg:OnCancel的代码。void CSecondDlg:OnCancel() / 单击Cancel(取消)按钮 DestroyWindow(); delete this; 4.3 运用无方式对话框 在工程任务区窗口中选择ResourceView页面,双击资源“Menu项中的IDR_MAINFRAME,翻开菜单资源。(8) 在菜单“查看与“协助之间添加一个“测试(&T)菜单,该菜单项的资源标识设为ID_TEST_DLG。(9) 按C
29、trl+W快捷键,翻开MFC ClassWizard对话框,在Message Maps页面中从“Class name列表中选择CMainFrame,在Object IDs列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND音讯。 4.3 运用无方式对话框 单击Add Function按钮或双击COMMAND音讯,出现“Add Member Function对话框,取系统默许的函数名OnTestDlg,并在此成员函数中添加以下代码:void CMainFrame:OnTestDlg() CSecondDlg *pDlg = new CSecondDlg; / 运用new
30、为对分配内存空间 pDlg-Create( IDD_DIALOG_SECOND ); / 创建对话框 pDlg-ShowWindow( SW_NORMAL ); / 显示对话框代码中,Create可用来以一个对话框资源来创建对话框, ShowWindow是一个CWnd成员函数,用来显示对话框, SW_NORMAL是用来指定将窗口显示成普通常用的形状。 4.3 运用无方式对话框 在文件MainFrm.cpp前面添加CSecondDlg类的文件包含 #include MainFrm.h #include SecondDlg.h 编译并运转。在运用程序菜单上,多次选择“测试 “对 话框菜单项,将会在
31、同一个位置中出现多个对话框,拖动这 些对话框到适当位置,如图:这就是无方式对话框的效果,从上述例如可以看出:方式和无方式对话框在用编辑器设计和运用MFC ClassWizard创建用户对话框类的方法是一致的,但在对话框的创建和退出的方式是不同的。 3.4.1 通用对话框通用对话框 表表 MFC的通用对话框的通用对话框对话框对话框用用 途途CColorDialog颜色对话框,允许用户选择或创建颜色CFileDialog文件对话框,允许用户打开或保存一个文件CFindReplaceDialog查找替换对话框,允许用户查找或替换指定字符串CPageSetupDialog页面设置对话框,允许用户设置页
32、面参数CFontDialog字体对话框,允许用户从列出的可用字体中选择一种字体CPrintDialog打印对话框,允许用户设置打印机的参数及打印文档这些对话框都有一个共同特点:它们都从用户获取信息,但并不对信息作处置。 3.4.1 通用对话框通用对话框 选定一个文件后,单击翻开按钮,就会弹出一个音讯对话框,显示该文件的全途径称号。void CMainFrame:OnTestDlg() CString filter; filter = “文本文件(*.txt)|*.txt|C+文件 (*.h,*.cpp)|*.h;*.cpp|; CFileDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY, filter); if (dlg.DoModal () = IDOK) CString str; str = dlg.GetPathName(); AfxM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业机器人运维维修服务人才队伍建设
- 护理礼仪与护理工作满意度
- 护理通讯小组护理服务满意度调查分析汇报
- 护理心理支持技巧与实践
- 2026年四川省成都市高新区中考英语模拟试卷(含答案)
- 铸管工安全专项测试考核试卷含答案
- 风机操作工岗前履职考核试卷含答案
- 2026年新科教版高中高一生物上册第一单元细胞分子组成综合卷含答案
- 啤酒花栽培工安全专项能力考核试卷含答案
- 2026年新科教版高中高二物理下册第一单元交变电流综合应用卷含答案
- 心理危机干预的操作指南:02 危机干预中的会谈技术
- 2022勘察设计服务成本核算指南
- 光伏工程 危害辨识风险评价表(光伏)
- 第一章 货币与货币流通(金融学课件-中央财经大学,李健)
- 2024年同等学力申硕《生物学学科综合水平考试》题库【历年真题+章节题库+模拟试题】
- 《高数双语》课件section 6.1
- 高中作文纸800字模板
- 药物医疗器械临床试验质量管理规范试题及答案
- YC/T 88.2-2006烟草机械喂料机第2部分:技术条件
- GB/T 37864-2019生物样本库质量和能力通用要求
- GB/T 10855-2016齿形链和链轮
评论
0/150
提交评论