版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 对话框,创建对话框,设计对话框,使用对话框,2.1 创建对话框,2.1.1 创建对话框应用程序 用MFC AppWizard(MFC应用程序向导)可以非常方便地创建一个基于对话框的应用程序,如下面的过程: 在“E:Visual C+程序”文件夹中,创建本章应用程序工作文件夹“第2章”。 启动Visual C+ 6.0,选择“文件”“新建”菜单,在弹出的“新建”对话框的工程标签页面中,选择MFC AppWizard(exe)的项目类型。,2.1.1 创建对话框应用程序,步骤1,单击“确定”按钮进入下一步,从弹出的“步骤1”对话框中,选择“基本对话框”应用程序类型。 步骤2,单击“下一步”
2、按钮,出现如图2.2所示的对话框,从中可选择设置对话框的风格以及ActiveX控件、Windows Sockets网络等的支持。,2.1.1 创建对话框应用程序,步骤3,单击“下一步”按钮,出现如图2.3所示的对话框,从中除了窗口风格是MFC标准风格外,还可有两个方面的选择:一是在源文件中是否加入注释用来引导程序代码的编写,另一个是使用动态链接库还是静态链接库。,2.1.1 创建对话框应用程序,步骤4,保留默认选项,单击 按钮,出现如图2.4所示的对话框,在这里,可以对MFC AppWizard提供的默认类名、基类名、各个源文件名进行修改。,2.1.1 创建对话框应用程序,单击编译工具栏中的“
3、运行工具” 按钮或按快捷键Ctrl+F5,系统开始编译、连接并运行生成的对话框应用程序可执行文件Ex_Dlg.exe,运行结果如图2.5所示。,2.1.2 添加并创建对话框,1. 创建默认的单文档应用程序 启动Visual C+ 6.0,选择“文件”“新建”菜单,在弹出的“新建”对话框的工程标签页面中,选择MFC AppWizard(exe)的项目类型。在工程编辑框中输入单文档应用程序名Ex_SDI。 单击“确定”按钮进入下一步,从弹出的“步骤1”对话框中,选择“单文档”应用程序类型。单击“完成”按钮,出现一个信息对话框,显示出用户在前面几个步骤中做出的选择,单击“确定”按钮,系统开始创建,并
4、又回到了Visual C+ 6.0的主界面。,2.1.2 添加并创建对话框,2. 资源和资源标识 Visual C+ 6.0将Windows应用程序中经常用到的菜单、工具栏、对话框、图标等都视为“资源”,并将其单独存放在一个资源文件中。每个资源都有相应的标识符来表示区分,并且可以像变量一样进行赋值。 将项目工作区切换到“ResourceView”页面,展开所有节点,如图2.6所示。,2.1.2 添加并创建对话框,3. 添加对话框资源 选择“插入”“资源”菜单,或按快捷键Ctrl+R打开“插入资源”对话框,在对话框中可以看到资源列表中存在Dialog项,若单击Dialog项左边的“+”号,将展开
5、对话框资源的不同类型选项,如图2.7所示。,2.1.2 添加并创建对话框,表2.1列出各种类型的对话框资源的不同用途。,2.1.2 添加并创建对话框,对展开的不同类型的对话框资源不作任何选择,选中“Dialog”,单击 按钮,系统就会自动为当前应用程序添加了一个对话框资源,并出现如图2.8所示的界面。,2.1.2 添加并创建对话框,4. 创建对话框类 在对话框资源模板的空白区域(没有其他元素或控件)内双击鼠标左键,将弹出如图2.9所示的对话框。,2.1.2 添加并创建对话框,单击OK按钮,出现如图2.10所示的“New Class”(新类)对话框。,2.2 设计对话框,2.2.1 设置对话框属
6、性 在对话框模板的空白处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图2.11所示的对话框属性窗口。,2.2.1 设置对话框属性,对话框具有这几类属性:常规(General)、样式(Styles)、更多样式(More Styles)扩展样式(Extended Styles)、更多扩展More Extended Styles(更多扩展样式)等部分,这里仅介绍最常用的常规(General)属性,如表2.2所示。,2.2.2 添加和布局控件,1. 控件的添加 利用“控件”工具栏中的各个按钮可以顺利完成控件的添加。图2.12说明了各个按钮所对应的控件类型。,2.2.2 添加和布局控件,2.
7、控件的选取 控件的删除、复制和布局操作一般都要先选取控件,若选取单个控件,则可以下列方法: 用鼠标直接选取。 用助记符来选取。 用Tab键选取。 对于多个控件的选取,可采用下列方法: 先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,则被该虚框所包围的控件都将被选取。 先按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若在选取时,对已选取的控件再选取一下,则取消该控件选取。,2.2.2 添加和布局控件,3. 控件的删除、复制和布局 当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。若在鼠标拖动过程中还按住Ctrl键则
8、复制控件。 对于控件的布局,对话框编辑器中提供了控件布局工具栏,如图2.14所示,它可以自动地排列对话框内的控件,并能改变控件的大小。,2.2.2 添加和布局控件,4. 测试对话框 “布局”菜单下的“测试”命令或布局工具栏上的测试按钮 是用来模拟所编辑的对话框的运行情况,帮助用户检验对话框是否符合用户的设计要求以及控件功能是否有效等。 5. 操作示例 下面来向对话框添加三个静态文本控件(一个静态文本控件就是一个文本标签): 在控件工具栏上,单击 按钮,然后在对话框模板左上角单击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。这样,第一个静态文本控件添加到对话框中了。 单击布局工具栏上的 按钮,打
9、开对话框模板的网格。 在控件工具栏上,将 按钮拖放到对话框模板中的左中部。这样,第二个静态文本控件添加到对话框中了。同样的操作,将第三个静态文本控件拖放到对话框模板中的左下部。,2.2.2 添加和布局控件,按住Shift键不放,依次单击刚才添加的三个静态文本控件,结果如图2.15所示。 在布局工具栏上,依次单击“大小相同”按钮 、“靠左对齐”按钮 、“上下间隔相等”按钮 ,结果如图2.16所示。,2.2.3 分组和刻蚀线,1. 组框 “组框”(Group Box)是一种静态控件,它使用具有刻蚀效果的矩形框线来细分对话框界面,其常规(General)属性如图2.17所示。,2.2.3 分组和刻蚀
10、线,在对话框模板的“网格”方式下,多个组框重叠后可构成形式多样的单元格,如图2.18所示。,2.2.3 分组和刻蚀线,2. 刻蚀线 当对话框界面无需太多的细分时,常使用一条水平和竖直的刻蚀线来分隔。此时,就需要使用“图片”(Picture)控件来构成。与“组框”控件相似,“图片”(Picture)控件也属于静态控件,其常规(General)属性如图2.19所示。,2.2.4 WM_INITDIALOG消息,在前面创建的Ex_Dlg应用程序项目中,Visual C+自动为其添加了WM_INITDIALOG消息的映射函数OnInitDialog,并添加了一系列的初始化代码: BOOL CEx_Dl
11、gDlg:OnInitDialog() CDialog:OnInitDialog(); return TRUE; / return TRUE unless you set the focus to a control ,2.2.4 WM_INITDIALOG消息,下面以单文档应用程序Ex_SDI添加的COneDlg对话框为例说明该的映射过程: 按【Ctrl+W】快捷键,弹出MFC ClassWizard对话框,将其切换到“Message Maps”标签页面。 在Class name组合框中,将类名选定为COneDlg(图2.20中的标记1);在Object IDs列表框中选定COneDlg(图
12、2.20中的标记2),然后拖动Messages列表框右侧的滚动块,直到出现要映射的WM_INITDIALOG消息为止(图2.20中的标记3),结果如图2.20所示。,2.2.4 WM_INITDIALOG消息,双击Messages列表中的WM_INITDIALOG消息或单击Add Function按钮,都会在CEx_SDIView类中添加该消息的映射函数OnLButtonDown,同时在Member funcions列表中显示这一消息映射函数和被映射的消息。 双击消息函数,即图2.21中的标记1或单击Edit Code按钮,MFC ClassWizard对话框退出,并转向文档窗口,定位到COn
13、eDlg:OnInitDialog函数实现的源代码处,从中可添加一些初始化代码。,2.3 使用对话框,2.3.1 在程序中使用 将项目工作区窗口切换到“ResourceView”页面,展开所有节点,双击资源“Menu”项中的IDR_MAINFRAME,将打开菜单编辑器,相应的Ex_SDI项目的菜单资源被显示出来,在菜单的最后一项,留出了一个菜单项的空位置,用来输入新的菜单项,如图2.22所示。,菜单的空位置,2.3.1 在程序中使用,在菜单的空位置上双击鼠标左键,则出现它的属性对话框,在标题框中输入“对话框( dlg.DoModal(); ,2.3.1 在程序中使用,在CEx_SDIView类
14、的实现文件Ex_SDIView.cpp的前面,即将刚才添加代码的文档窗口滚动到最前面,添加COneDlg类的头文件包含,即: #include stdafx.h / #include Ex_SDIView.h #include OneDlg.h 编译并运行。在应用程序菜单上,选择“对话框”“第一个对话框”菜单项,将出现如图2.28的对话框。,2.3.2 DoModal和模式对话框,要求获取对话框中用户操作的内容,则还应判断DoModal的返回值,即如下面的代码: int nRet = dlg.DoModal(); / Handle the return value from DoModal s
15、witch ( nRet ) case -1: AfxMessageBox(Dialog box could not be created!); break; case IDOK: / Do something break; case IDCANCEL: / Do something break; default: / Do something break; ;,2.3.2 DoModal和模式对话框,或简单的使用下列代码框架: if (IDOK = dlg.DoModal() ) / Do something ,2.3.3 通用对话框,MFC对这些通用对话框所构造的类都是从一个公共的基类CC
16、ommonDialog派生而来。表2.4列出了这些通用对话框类。,2.3.3 通用对话框,用户可以在程序中直接使用这些通用对话框,例如下面的代码是测试在上述示例中的OnDlgFirst中,运行后在应用程序的菜单上,选择“对话框”“第一个对话框”菜单项,将弹出如图2.29所示的对话框。,2.3.3 通用对话框,选定一个文件后,单击 “打开”按钮,就会弹出一个消息对话框,显示该文件的全路径名称。 void CMainFrame:OnTestDlg() CString filter; filter = 文本文件(*.txt)|*.txt|C+文件(*.h,*.cpp)|*.h;*.cpp|; CFi
17、leDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY, filter); if (dlg.DoModal () = IDOK) CString str; str = dlg.GetPathName(); AfxMessageBox(str); ,2.3.4 消息对话框,在Visual C+ 6.0的MFC类库中就提供相应的函数实现这样的功能,使用时,直接在程序中调用它们即可。它们的函数原型如下: int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江西南昌市劳动保障事务代理中心招聘见习生1人备考题库附答案详解(预热题)
- 2026中国平安人寿丽水中心支公司招聘备考题库含答案详解(基础题)
- 2026江西新余高新区化工集中区服务中心招聘见习生2人备考题库及答案详解(基础+提升)
- 2026年荆州江陵县中小学教师公开招聘40人备考题库含答案详解(综合题)
- 物流快递行业快递员薪酬协议
- 新能源微电网在分布式能源与储能系统融合可行性分析报告
- 网络销售商品促销活动协议2026
- 媒体采访版权使用合同2026年版
- 2026年资产重组项目合作协议样本
- 初中化学数字化评价与化学实验技能提升策略教学研究课题报告
- 浅议司法公正的毕业论文
- 薪智:2025年新材料产业典型企业人才与薪酬趋势分析报告
- 四川省房屋建筑工程消防设计技术审查要点(2025年版)
- 管道工程竣工验收报告范本
- 2025年财会监督工作自查报告
- 前置胎盘合并产后出血护理查房
- 湖北烟草招聘面试全攻略:面试技巧与题目解析
- 桥式起重机安全检查表
- 2025年全国行政执法人员执法资格考试必考题库及答案
- 留样样品管理办法
- GB/T 45711.2-2025皮革撕裂力的测定第2部分:双边撕裂
评论
0/150
提交评论