




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章对话框3.1创建对话框
[例Ex_DlgDemo]使用向导创建对话框应用程序(1)选择“文件”
“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFCAppWizard(exe),在工程框中输入项目名Ex_DlgDemo。3.1创建对话框(2)单击[确定]按钮,在出现的“Step1”对话框中选择“基本对话(框)”应用程序类型,如图所示。(3)单击[下一个]按钮,出现如图(右)所示的对话框,允许用户设置对话框的风格及ActiveX控件等特点的支持。3.1创建对话框(4)单击[下一个]按钮出现如图(左)所示的对话框,两个方面的选项可供用户选择:一是在源文件中是否加入注释用来引导用户编写程序代码,另一是使用动态链接库还是静态链接库。(5)保留默认选项,单击[下一个]按钮出现如图(右)所示的对话框。3.1创建对话框1.资源的分类 创建一个默认的单文档应用程序项目Ex_SDI1,并其项目工作区窗口切换到“ResourceView”页面,Ex_SDI1资源视图:3.1创建对话框VisualC++6.0使用的资源可分为下列几类:快捷键列表(Accelerator):一系列组合键的集合,被应用程序用来引发一个动作。对话框(Dialog):含有按钮、列表框、编辑框等各种控件的窗口。图标(Icon):代表应用程序显示在Windows桌面上的位,它同时有32
32像素和1616像素两种规格。菜单(Menu):用户通过菜单完成应用程序的大部分操作。字串表(StringTable):应用程序使用的全局字符串或其他标识符。工具栏按钮(Toolbar):工具栏外观是以一系列具有相同尺寸的位图组成的版本信息(Version):包含应用程序的版本、用户注册码等相关信息。3.1创建对话框当添加或创建资源或资源对象时,系统会为其提供默认的名称,如IDR_MAINFRAME等。要遵循下列规则:
2.标识符
(1)在标识符名称中允许使用字母a~z、A~Z、0~9以及下划线。(2)标识符名称不区分大小写字母,如new_idd与New_Idd是相同的标识符。(3)不能以数字开头,如8BIT是不合法的标识符名。字符个数不得超过247个。VisualC++还提供了一些常用的定义标识符名称的前缀供用户使用、参考,每一个定义的标识符都保存在应用程序项目的Resource.h文件中,它的取值范围为0~32767。3.1创建对话框字符个数不得超过247个。除了上述规则外,出于习惯,VisualC++还提供了一些常用的定义标识符名称的前缀供用户使用、参考,见表标识符前缀含义IDR_表示快捷键或菜单相关资源IDD_表示对话框资源IDC_表示光标资源或控件IDI_表示图标资源IDB_表示位图资源IDM_表示菜单项ID_表示命令项IDS_表示字符表中的字符串IDP_表示消息框中使用的字符串3.2.2添加对话框资源
[例Ex_SDI]在单文档程序中添加对话框资源创建一个默认的单文档应用程序项目Ex_SDI。(1)选择“插入”
“资源”菜单,或按快捷键Ctrl+R打开“插入资源”对话框中看到资源列表中存在Dialog项,若单击Dialog项左边的“+”号,将展开对话框资源的不同类型选项,表列出各种类型的对话框资源的不同用途。“插入资源”对话框
:3.2.2添加对话框资源[新建]按钮用来创建一个由“资源类型”列表中指定类型的新资源。[定制]按钮是用来创建“资源类型”列表中没有的新类型的资源。[导入]按钮是用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中。类
型说
明IDD_DIALOGBAR对话条,往往和工具条停放一起IDD_FORMVIEW一个表状风格的对话框,用于无模式对话框或视图类IDD_OLE_PROPPAGE_LARGE一个大的OLE属性页IDD_OLE_PROPPAGE_SMALL一个小的OLE属性页IDD_PROPPAGE_LARGE一个大属性页,用于属性对话框IDD_PROPPAGE_MEDIUM一个中等大小的属性页,用于属性对话框IDD_PROPPAGE_SMALL一个小的属性页,用于属性对话框3.2.2添加对话框资源(2)对展开的不同类型的对话框资源不作任何选择,选中“Dialog”,单击[新建]按钮,系统就会自动为当前应用程序添加了一个对话框资源。3.2.2添加对话框资源系统为对话框资源自动赋给它一个默认标识符名称使用通用的对话框模板创建新的对话框资源。对话框的默认标题为Dialog,有[OK]和[Cancel]两个按钮,这两个按钮的标识符分别为IDOK和IDCANCEL。对话框模板资源所在的窗口称为对话框资源编辑,在这里可以通过控件工具栏和布局工具栏向对话框添加和布局控件,并可设置对话框的属性。 VisualC++6.0开发环境的工具栏具有“浮动”与“停泊”功能,图中的控件工具栏是处于“浮动”状态,通常将它拖放到窗口右侧,以便于操作。3.2.3设置对话框属性在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图所示的对话框属性窗口。对话框的属性有General(一般)、Styles(风格)、MoreStyles(更多)、ExtendedStyles(扩展风格)、MoreExtendedStyles(更多扩展风格)等部分,这里仅介绍最常用的General属性。3.2.3设置对话框属性
对话框的General属性项
目说
明ID框修改或选择对话框的标识符名称标题框输入对话框的标题名称,中英文均可,如“我的对话框”字体按钮单击此按钮可选择字体的种类(如宋体)及尺寸(如9号)Xpos/Ypos对话框左上角在父窗口中的X、Y坐标,都为0时表示居中菜单框默认值为无,当对话框需要菜单时输入或选择指定的菜单资源Classname默认值为无,它提供C/C++语言编程时所需要的对话框类名,对MFC类库的资源文件来说,该项不被激活。将添加对话框的General属性进行如下三点修改,将对话框标识符改成IDD_DIALOG_FIRST;将对话框标题改为“我的第一个对话框”;单击[字体]按钮,通过弹出的字体对话框将对话框内的文本设置成“宋体,9”,以使自己的对话框和Windows中的对话框保持外观上的一致。3.2.4添加和布局控件
1.控件的添加对话框编辑器最初打开时,控件工具栏是随之出现的,利用此工具栏中的各个按钮可以顺利完成控件的添加。说明了各 个图标按钮所对应的控件类型。控件的选择静态文本组框复选框组合框水平滚动条旋转按钮滑动条列表视图标签复合编辑月历用户定制工具静态图片编辑框按钮单选框列表框垂直滚动条进展条热键树形视图动画日期选择IP地址组合框的扩展3.2.4添加和布局控件 对话框中添加一个控件的方法有下列几种:在控件工具栏中单击某控件,此时鼠标箭头在 对话框内变成“十”字形状;在对话框指定位置单击 鼠标左键,则此控件被添加到对话框的相应位,再 拖动选择框可改变控件的大小和位置。在控件工具栏中单击某控件,此时鼠标箭头对 话框内变成“十”字形状;在指定位置单击鼠标左键 不放,拖动鼠标至满意位置,释放鼠标键。用鼠标左键点中控件工具栏中的某控件,按住 鼠标左键不放;在移动鼠标到对话框的指定位置的 过程中,会看到一个虚线框,下面带有该控件的标 记;释放鼠标左键,新添加的控件立即出现在对话 框中。3.2.4添加和布局控件控件的删除、复制和布局操作一般都要先选取控件,若选取单个控件,则可以下列方法:鼠标直接选取。首先保证在控件工具栏中的选择按钮()是被选中的,然后移动鼠标指针至指定的控件上,单击鼠标左键即可。用助记符来选取。如果控件的标题中带有下划线的字符,这个字符就是助记符,选择时直接按下该助记符键或“Alt+助记符”组合键即可。用Tab键选取。在对话框编辑器中,系统会根据控件的添加次序自动设置相应的Tab键次序。利用Tab键,用户可在对话框内的控件中进行选择。2.控件的选取
3.2.4添加和布局控件对于多个控件的选取,可采用下列方法:先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,则被虚框所包围的控件将被选取。先按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。需要注意的是:(1)单个控件被选取后,选择框上还有几个蓝色实心小方块,拖动它可改变控件的大小。(2)多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件的小方块。(b)(a)
3.2.4添加和布局控件3.控件的删除、复制和布局单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。在鼠标拖动过程中还按住Ctrl键则复制控件。按Del键可将选取的控件删除。对控件的布局,对话框编辑器中提供了控件布局工具栏可以自动地排列对话框内的控件,并能改变控件的大小。
靠齐上边 左右间隔相等 大小相同 靠齐左边 上下居中 宽度相同 显示标尺
靠齐右边 左右居中 高度相同测试对话框 靠齐下边 上下间隔相等 显示网格3.2.4添加和布局控件布局工具相对应的菜单命令在“编排”菜单下,而且大部分命令均有相应的快捷键。“编排”菜单不是在VisualC++6.0开发环境一开始就出现的,而是随着对话框编辑器的打开而显示的。值得注意的是:大多数布置控件的命令使用前,都需要用户选取多个控件,且“主要控件”起到了关键作用。只改变其它控件的大小,并与“主要控件”的尺寸一致。设置的方法是按住Ctrl或Shift键,然后用鼠标单击所要指定的控件即可。为了便于用户在对话框内精确定位各个控件,系统还提供了网格、标尺等辅助工具。一旦网格显示,添加或移动控件时都将自动定位在网格线上。3.2.4添加和布局控件4.测试对话框“编排”菜单下的Test命令或布局工具栏上的测试按钮是用来模拟所编辑的对话框的运行情况,帮助用户检验对话框是否符合用户的设计要求以及控件功能是否有效等。如图(右下)右击添加的控件,从快捷菜单中选择“属性”,出现如图(左上)3.2.5创建对话框类
在应用程序中使用添加的对话框须先为该对话框模板创建一个用户对话框类。在对话框资源模板的空白区域(没有其他元素或控件)内双击鼠标,将弹出对话框单击[OK]按钮,弹出右图所示的对话框。在Name框中输入类名CFirstDlg,单击[OK]按钮,一个基于对话框资源模板的用户对话框类CFirstDlg就创建好了。此时出现MFCClassWizard(MFC类向导)对话框。3.2.6添加对话框代码
在MFCClassWizard对话框中,可以看到“Classname”组合框已经是CFirstDlg。单击[AddFunction]按钮或双击WM_INITDIALOG消息,MFCClassWizard自动为CFirstDlg类添加OnInitDialog函数。在Memberfunctions表框中选择刚添加的OnInitDialog,单击[EditCode]将出现函数代码编辑窗口,在函数中添码:BOOLCFirstDlg::OnInitDialog(){CDialog::OnInitDialog();Static*pWnd=(CStatic*)GetDlgItem(IDC_STATIC_1);pWnd->SetWindowText(“这是我的第一个对话框!");returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}3.2.7在程序中使用对话框
(1)在项目工作区窗口中选择ResourceView页面,双击资源“Menu”项中的IDR_MAINFRAME,则菜单编辑器窗口出现在主界面的右边,相应的Ex_SDI项目的菜单资源被显示出来,在菜单的最后一项,VisualC++为用户留出了一个空位置,用来输入新的菜单项,如图3.2.7在程序中使用对话框(2)在菜单的空位置上双击鼠标左键,则出现它的属性对话框,在标题框中输入“测试(&T)”,结果如图所示,其中符号&用来其后面的字符作为该菜单项的助记符,这样当按住“Alt”键不放,再敲击该助记符键时,对应的菜单项就会被选中,或在菜单打开时,直接按相应的助记符键,对应的菜单项也会被选中。3.2.7在程序中使用对话框(3)单击菜单属性对话框中的“保存可见”(KeepVisible)按钮,使此属性对话框一直可见,以方便操作。单击“测试”菜单项下方的空位置,在属性对话框中,输入标题“对话框(&D)”,在ID框输入该菜单项的资源标识;_TEST_DLG,结果如图所示,单击属性对话框右上角的关闭按钮。3.2.7在程序中使用对话框(4)用鼠标将新添加的菜单项拖到“查看”和“帮助”菜单项之间,结果如图所示。菜单项“对话框”拖放后的位置(5)选择“查看”
“建立类向导”菜单命令或直接按Ctrl+W快捷键,则出现MFCClassWizard对话框,该对话框会自动切换到MessageMaps页面。(6)从“Classname”组合框中选择CMainFrame,在ObjectIds列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND消息。
3.2.7在程序中使用对话框(7)单击[AddFunction]按钮或双击COMMAND消息,出现“AddMemberFunction”对话框以输入成员函数的名称。系统默认的函数名为OnTestDlg,如图所示。该函数是对菜单项ID_TEST_DLG的映射,也就是说,当在应用程序运行时,用户选择“对话框”,则该函数OnTestDlg被调用,执行函数中的代码。3.2.7在程序中使用对话框单击[OK]按钮,在ClassWizard的“Memberfunctions”列表中将列出新增加的成员函数。选择此函数,单击[EditCode]按钮(或直接在函数名双击鼠标),在此成员函数中添加下列代码:voidCMainFrame::OnTestDlg(){
CFirstDlg
dlg; //定义对话框类对象
dlg.DoModal(); //显示对话框}
代码中,DoModal是CDialog基类成员函数,它是用来显示和终止模式对话框。3.2.7在程序中使用对话框在OnTestDlg函数的实现文件MainFrm.cpp的前面添加CFirstDlg类的头文件包含,即:#include"Ex_SDI.h"#include"MainFrm.h"#include"FirstDlg.h“(10)编译并运行。在应用程序菜单上,选择“测试”
“对话框”菜单项,将出现如图的对话框,这个对话框就是刚才添加的对话框。4.3使用无模式对话框
1.模式对话框所谓“模式对话框”是指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。一般情况下,模式对话框会有[OK](确定)和[Cancel](取消)按钮。单出[OK]按钮,系统认定用户在对话框中的选择或输入有效,对话框退出;单击[Cancel]按钮,对话框中的选择或输入无效,对话框退出,程序恢复原有状态。模式对话框的应用范围较广,上面示例中的对话框和平常所见到的大多数对话框都是模式对话框。4.3使用无模式对话框所谓“无模式对话框”是指当对话框被弹出后,一直保留在屏幕上,用户可继续在对话框所在的应用程序中进行其它操作;当需要使用对话框时,只需象激活一般窗口一样单击对话框所在的区域即可激活。[例Ex_Modeless]创建并使用无模式对话框用MFCAppWizard(exe)创建一个默认的单文档应用程序x_Modeless。(2)在该项目中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND,标题设为“无模式对话框”,(3)对话框字体和大小设为“宋体,9号”。为IDD_DIALOG_SECOND对话框资源创建一个对话框类CSecondDlg。2.无模式对话框4.3使用无模式对话框按Ctrl+W快捷键打开MFCClassWizard,从“Classname”列表中选择CSecondDlg,在IDs列表中选择IDOK,是对话框中[OK]按钮的标识符,然后在Messages框中选择BN_CLICKED(单击按钮)消息,单击[AddFunction]按钮或双击BN_CLICKED消息,出现“AddMember
Function”对话框以输入成员函数的名称,保留系统默认的函数名为OnOK,如图所示。4.3使用无模式对话框(5)修改CSecondDlg::OnOK函数中的代码。voidCSecondDlg::OnOK(){//添加其他代码使用户输入对话框的数据有效DestroyWindow(); //终止对话框显示deletethis; //删除对话框,释放内存空间}代码中,DestroyWindow是对话框基类CWnd的一个成员函数,用来终止窗口。添加[Cancel]按钮(标识符为IDCANCEL)的BN_CLICKED消息映射,并修改其映射函数CSecondDlg::OnCancel的代码。voidCSecondDlg::OnCancel() //单击[Cancel](取消)按钮{
DestroyWindow();deletethis;}4.3使用无模式对话框在项目工作区窗口中选择ResourceView页面,双击资源“Menu”项中的IDR_MAINFRAME,打开菜单资源。(8)在菜单“查看”与“帮助”之间添加一个“测试(&T)”菜单,该菜单项的资源标识设为ID_TEST_DLG。(9)按Ctrl+W快捷键,打开MFCClassWizard对话框,在MessageMaps页面中从“Classname”列表中选择CMainFrame,在ObjectIDs列表中选择ID_TEST_DLG,然后在Messages框中选择COMMAND消息。4.3使用无模式对话框单击[AddFunction]按钮或双击COMMAND消息,出现“AddMemberFunction”对话框,取系统默认的函数名OnTestDlg,并在此成员函数中添加下列代码:voidCMainFrame::OnTestDlg(){
CSecondDlg*pDlg=newCSecondDlg; //使用new为对分配内存空间
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"编译并运行。在应用程序菜单上,多次选择“测试”
“对话框”菜单项,将会在同一个位置中出现多个对话框,拖动这些对话框到适当位置,如图:这就是无模式对话框的效果,从上述示例可以看出:模式和无模式对话框在用编辑器设计和使用MFCClassWizard创建用户对话框类的方法是一致的,但在对话框的创建和退出的方式是不同的。3.4.1通用对话框
表MFC的通用对话框对话框用
途CColorDialog颜色对话框,允许用户选择或创建颜色CFileDialog文件对话框,允许用户打开或保存一个文件CFindReplaceDialog查找替换对话框,允许用户查找或替换指定字符串CPageSetupDialog页面设置对话框,允许用户设置页面参数CFontDialog字体对话框,允许用户从列出的可用字体中选择一种字体CPrintDialog打印对话框,允许用户设置打印机的参数及打印文档这些对话框都有一个共同特点:它们都从用户获取信息,但并不对信息作处理。3.4.1通用对话框选定一个文件后,单击[打开]按钮,就会弹出一个消息对话框,显示该文件的全路径名称。voidCMainFrame::OnTestDlg(){CStringfilter; filter=“文本文件(*.txt)|*.txt|C++文件 (*.h,*.cpp)|*.h;*.cpp||"; CFileDialogdlg(TRUE,NULL,NULL, OFN_HIDEREADONLY,filter); if(dlg.DoModal()==IDOK){ CStringstr; str=dlg.GetPathName(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年对外汉语教师资格证考试汉语教材分析试卷
- 2025年自动多排钻项目提案报告
- 一只流浪猫的故事写物作文6篇范文
- 环保科技特别声明证明(5篇)
- 酒店预订和住宿服务协议及退订政策说明
- 2025年消防安全标识识别专项培训考试题库试题解析
- 2025年轨道结构减振产品项目规划申请报告模板
- 新闻传媒行业专业知识试题集
- 2025年工业互联网平台边缘计算硬件架构在智能机器人制造中的应用前景报告
- 2025年药物配伍指南试题
- 酒店挂账信用管理制度
- 公司合伙合同样本
- 建筑行业现状与发展趋势
- 院外数据共享管理制度
- 陵园财务管理制度
- 石油化工行业检修工程预算定额说明
- 急危重症患者转诊流程与管理
- 小学教育学因材施教原则
- 电子产品质量保证方案与实施指南
- 彩钢瓦安装施工方案
- 按揭贷款业务合作协议书范本
评论
0/150
提交评论