第3章 对话框.

Slides:



Advertisements
Similar presentations
广州市小学信息技术教学同步资源 第一册 第二章 第六节 《 Window窗口》 广州市荔湾区西华路小学 董绮珊.
Advertisements

第二章走进Windows XP操作系统 第二节 Windows XP文件和文件夹管理.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
项目2 字符格式和段落编排 2017年3月7日6时54分.
第4章 对话框和常用控件 对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
计算机高级程序设计 第五章.
PRESENTED BY OfficePLUS
在PHP和MYSQL中实现完美的中文显示
走进Word 认识Word2010的工作界面 计算机专业 赵德玲.
UI 软件 设计 网页基本元素设计(二).
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
第1章 Windows应用程序框架的 创建与消息处理
大学计算机基础 典型案例之一 构建FPT服务器.
走进编程 程序的顺序结构(二).
辅导课程六.
第十一讲 MFC常用控件的使用(3) 严宣辉 数学与计算机科学学院
MFC WinSock类的编程 为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了两个套接字类,在不同的层次上对Windows Socket API函数进行了封装,为编写Windows.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
AC500 调试总结 以太网通讯配置 lizhenfei.
第一讲: 基本流程(1).
Hub Web System 主要功能: 1.查询库存(Query Current Storage) 2.创建PL(Create PL) 3.查询、打印PL单(Query & Print PL) 4.查询允交量、在途量 5.修改用户的基本信息(Update Password) 6.查询GR(Query.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
1.3.1 创建ASP.NET应用程序 1 打开 Visual Studio 2008 应用程序后如图所示.
第10章 高级用户界面设计 10.1 菜单设计 10.2 通用对话框 10.3 图像列表框控件 10.4 树形视图控件
Windows 7 的系统设置.
POWERPOINT TEMPLATE HI.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
UI 软件 设计 页面布局(三).
SOA – Experiment 2: Query Classification Web Service
第十六讲 对话框与菜单栏 控件的基本概念 Visual C++中的控件 对话框概述 创建对话框 菜单栏 工具栏 状态栏.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
直接扫描保存成TIF格式, 其他图片格式用Windows XP自带的 Windows图片与传真查看器打开
标准配色方案 背景 文本和线条 阴影 强调色 主色一 主色二 主色三 主色四 推荐应用顺序. 标准配色方案 背景 文本和线条 阴影 强调色 主色一 主色二 主色三 主色四 推荐应用顺序.
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
MFC控件 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
复 这里可以输入公司 名 古 Powerpoint is a complete presentation graphic package it gives you everyt.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
PPT中视频的播放控制 苏州电教馆在线课程培训教程:PPT2003教程   制作:赵立锋 更多教程请见:
第六章 素材的加工与处理 第13讲 用GoldWave进行音频的截取、合并、淡入淡出操作
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
VRP教程 2011.
Delphi 7.0开发示例.
熟悉PowerDesiner12操作环境 菜单栏 标题栏 工具栏 导航栏 工作区 浮动工具条 导航选项卡 控制信息栏 状态栏.
第六章 素材的加工与处理 第3讲 Photoshop的基本操作
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
MFC控件 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Polarization of electro- magnetic wave after reflection
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
YOUR SUBTITLE GOES HERE
本课内容 接下来的几节课,我们要利用C语言开发一些游戏 本节课开发一个俄罗斯方块游戏 游戏规则.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

第3章 对话框

3.1 创建对话框 [例Ex_DlgDemo] 使用向导创建对话框应用程序 3.1 创建对话框 [例Ex_DlgDemo] 使用向导创建对话框应用程序 (1) 选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFC AppWizard(exe),在工程框中输入项目名Ex_DlgDemo。

3.1 创建对话框 (2) 单击[确定]按钮,在出现的“Step 1”对话框中选择“基本对话(框)”应用程序类型,如图所示。 3.1 创建对话框 (2) 单击[确定]按钮,在出现的“Step 1”对话框中选择“基本对话(框)”应用程序类型,如图所示。 (3) 单击[下一个]按钮,出现如图(右)所示的对话框,允许用户设置对话框的风格及ActiveX控件等特点的支持。

3.1 创建对话框 (4) 单击[下一个]按钮出现如图(左)所示的对话框,两个方面的选项可供用户选择:一是在源文件中是否加入注释用来引导用户编写程序代码,另一是使用动态链接库还是静态链接库。 (5) 保留默认选项,单击[下一个]按钮出现如图(右)所示的对话框。

3.1 创建对话框 (6) 单击[完成]按钮出现一个对话框,显示出用户在前面几个步骤中作出的选择内容,单击[确定]按钮系统开始创建。 或 3.1 创建对话框 (6) 单击[完成]按钮出现一个对话框,显示出用户在前面几个步骤中作出的选择内容,单击[确定]按钮系统开始创建。 或 按快捷键 上的运行工具按钮 (7) 单击编译工具条 Ctrl+F5,系统开始编连并运行生成的对话框 应用程序可执行文件Ex_DlgDemo.exe,结果如图所示

3.1 创建对话框 1. 资源的分类 创建一个默认的单文档应用程序项目Ex_SDI1,并其项目工作区窗口切换到“ResourceView”页面,Ex_SDI1资源视图:

3.1 创建对话框 Visual C++ 6.0使用的资源可分为下列几类: 3.1 创建对话框 Visual C++ 6.0使用的资源可分为下列几类: 快捷键列表(Accelerator):一系列组合键的集合,被应用程序用来引发一个动作。 对话框(Dialog):含有按钮、列表框、编辑框等各种控件的窗口。图标(Icon):代表应用程序显示在Windows桌面上的位,它同时有3232像素和1616像素两种规格。 菜单(Menu):用户通过菜单完成应用程序的大部分操作。 字串表(String Table):应用程序使用的全局字符串或其他标识符。 工具栏按钮(Toolbar):工具栏外观是以一系列具有相同尺寸的位图组成的 版本信息(Version):包含应用程序的版本、用户注册码等相关信息。

3.1 创建对话框 2. 标识符 当添加或创建资源或资源对象时,系统会为其提供默认的名称,如IDR_MAINFRAME等。要遵循下列规则: 3.1 创建对话框 2. 标识符 当添加或创建资源或资源对象时,系统会为其提供默认的名称,如IDR_MAINFRAME等。要遵循下列规则: (1) 在标识符名称中允许使用字母a~z、A~Z、0~9以及下划线。 (2) 标识符名称不区分大小写字母,如new_idd与New_Idd是相 同的标识符。 (3) 不能以数字开头,如8BIT是不合法的标识符名。字符个数不得超过247个。 Visual C++还提供了一些常用的定义标识符名称的前缀供用户使用、参考,每一个定义的标识符都保存在应用程序项目的Resource.h文件中,它的取值范围为0~32767。

3.1 创建对话框 字符个数不得超过247个。除了上述规则外,出于习惯,Visual C++还提供了一些常用的定义标识符名称的前缀供用户使用、参考,见表 标识符前缀 含义 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。 对话框模板资源所在的窗口称为对话框资源编辑,在这里可以通过控件工具栏和布局工具栏向对话框添加和布局控件,并可设置对话框的属性。 Visual C++6.0开发环境的工具栏具有“浮动”与“停泊”功能,图中的控件工具栏是处于“浮动”状态,通常将它拖放到窗口右侧,以便于操作。

3.2.3 设置对话框属性 在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图所示的对话框属性窗口。 3.2.3 设置对话框属性 在对话框模板处右击鼠标,从弹出的快捷菜单中选择“属性”菜单项,出现如图所示的对话框属性窗口。 对话框的属性有General(一般)、Styles(风格)、More Styles(更多)、Extended Styles(扩展风格)、MoreExtended Styles(更多扩展风格)等部分,这里仅介绍最常用的General属性。

3.2.3 设置对话框属性 对话框的General属性 将添加对话框的General属性进行如下三点修改, 3.2.3 设置对话框属性 对话框的General属性 项 目 说 明 ID框 修改或选择对话框的标识符名称 标题框 输入对话框的标题名称,中英文均可,如“我的对话框” 字体按钮 单击此按钮可选择字体的种类(如宋体)及尺寸(如9号) Xpos/Ypos 对话框左上角在父窗口中的X、Y坐标,都为0时表示居中 菜单框 默认值为无,当对话框需要菜单时输入或选择指定的菜单资源 Class name 默认值为无,它提供C/C++语言编程时所需要的对话框类名,对MFC类库的资源文件来说,该项不被激活。 将添加对话框的General属性进行如下三点修改, 将对话框标识符改成IDD_DIALOG_FIRST; 将对话框标题改为“我的第一个对话框”; 单击[字体]按钮,通过弹出的字体对话框将对话框内的文本设置成“宋体,9” ,以使自己的对话框和Windows中的对话框保持外观上的一致。

3.2.4 添加和布局控件 1. 控件的添加 对话框编辑器最初打开时,控件工具栏是随之出现的,利用 此工具栏中的各个按钮可以顺利完成控件的添加。说明了各 个图标按钮所对应的控件类型。 控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历 用户定制工具 静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 组合框的扩展

3.2.4 添加和布局控件 对话框中添加一个控件的方法有下列几种: 3.2.4 添加和布局控件 对话框中添加一个控件的方法有下列几种: 在控件工具栏中单击某控件,此时鼠标箭头在 对话框内变成“十”字形状;在对话框指定位置单击 鼠标左键,则此控件被添加到对话框的相应位,再 拖动选择框可改变控件的大小和位置。 在控件工具栏中单击某控件,此时鼠标箭头对 话框内变成“十”字形状;在指定位置单击鼠标左键 不放,拖动鼠标至满意位置,释放鼠标键。 用鼠标左键点中控件工具栏中的某控件,按住 鼠标左键不放;在移动鼠标到对话框的指定位置的 过程中,会看到一个虚线框,下面带有该控件的标 记;释放鼠标左键,新添加的控件立即出现在对话 框中。

3.2.4 添加和布局控件 2. 控件的选取 控件的删除、复制和布局操作一般都要先选取控件,若选取单个控件,则可以下列方法: 3.2.4 添加和布局控件 2. 控件的选取 控件的删除、复制和布局操作一般都要先选取控件,若选取单个控件,则可以下列方法: 鼠标直接选取。首先保证在控件工具栏中的选择按钮( )是被选中的,然后移动鼠标指针至指定的控件上,单击鼠标左键即可。 用助记符来选取。如果控件的标题中带有下划线的字符,这个字符就是助记符,选择时直接按下该助记符键或“Alt+助记符”组合键即可。 用Tab键选取。在对话框编辑器中,系统会根据控件的添加次序自动设置相应的Tab键次序。利用Tab键,用户可在对话框内的控件中进行选择。

3.2.4 添加和布局控件 对于多个控件的选取,可采用下列方法: 3.2.4 添加和布局控件 对于多个控件的选取,可采用下列方法: 先在对话框内按住鼠标左键不放,拖出一个大的虚框,然后释放鼠标,则被虚框所包围的控件将被选取。 先按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。 需要注意的是: (1) 单个控件被选取后,选择框上还有几个蓝色实心小方块,拖动它可改变控件的大小。 (2) 多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件的小方块。   (b) (a)

3.2.4 添加和布局控件 3. 控件的删除、复制和布局 单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。在鼠标拖动过程中还按住Ctrl键则复制控件。按Del键可将选取的控件删除。对控件的布局,对话框编辑器中提供了控件布局工具栏可以自动地排列对话框内的控件,并能改变控件的大小。 靠齐上边 左右间隔相等 大小相同 靠齐左边 上下居中 宽度相同 显示标尺 靠齐右边 左右居中 高度相同 测试对话框 靠齐下边 上下间隔相等 显示网格

3.2.4 添加和布局控件 布局工具相对应的菜单命令在“编排”菜单下,而且大部分命令均有相应的快捷键。 “编排”菜单不是在Visual C++ 6.0开发环境一开始就出现的,而是随着对话框编辑器的打开而显示的。值得注意的是: 大多数布置控件的命令使用前,都需要用户选取多个控件,且“主要控件”起到了关键作用。只改变其它控件的大小,并与“主要控件”的尺寸一致。设置的方法是按住Ctrl或Shift键,然后用鼠标单击所要指定的控件即可。 为了便于用户在对话框内精确定位各个控件,系统还提供了网格、标尺等辅助工具。一旦网格显示,添加或移动控件时都将自动定位在网格线上。

3.2.4 添加和布局控件 4. 测试对话框 “编排”菜单下的Test命令或布局工具栏上的测试按钮 3.2.4 添加和布局控件 4. 测试对话框 “编排”菜单下的Test命令或布局工具栏上的测试按钮 是用来模拟所编辑的对话框的运行情况,帮助用户检验 对话框是否符合用户的设计要求以及控件功能是否有效 等。如图 (右下) 右击添加的控件,从快捷菜单中选择“属性”,出现如 图(左上)

3.2.5 创建对话框类 在应用程序中使用添加的对话框须先为该对话框模板创建 一个用户对话框类。在对话框资源模板的空白区域(没有其他 元素或控件)内双击鼠标,将弹出对话框 单击[OK]按钮,弹出 右图所示的对话框。 在Name框中输入类名CFirstDlg,单击[OK]按钮,一个基于 对话框资源模板的用户对话框类CFirstDlg就创建好了。此时 出现MFC ClassWizard(MFC类向导)对话框。

3.2.6 添加对话框代码 在MFC ClassWizard对话框中,可以看到“Class name”组合框已经是CFirstDlg。 在Member functions表框中选择刚添加 的OnInitDialog,单击[Edit Code] 将出现函数代码编辑窗口,在函数中添码: BOOL 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 } 单击[Add Function]按钮或双 击WM_INITDIALOG消息,MFC ClassWizard自动为CFirstDlg 类添加OnInitDialog函数。

3.2.7 在程序中使用对话框 (1) 在项目工作区窗口中选择ResourceView页面, 双击资源“Menu”项中的IDR_MAINFRAME,则菜单 编辑器窗口出现在主界面的右边,相应的Ex_SDI项 目的菜单资源被显示出来,在菜单的最后一项,Vis ual C++为用户留出了一个空位置,用来输入新的菜 单项,如图

3.2.7 在程序中使用对话框 (2) 在菜单的空位置上双击鼠标左键,则出现它的属性 (2) 在菜单的空位置上双击鼠标左键,则出现它的属性 对话框,在标题框中输入“测试(&T)”,结果如图所示,其 中符号&用来其后面的字符作为该菜单项的助记符,这样 当按住“Alt”键不放,再敲击该助记符键时,对应的菜单项 就会被选中,或在菜单打开时,直接按相应的助记符键, 对应的菜单项也会被选中。

3.2.7 在程序中使用对话框 (3) 单击菜单属性对话框中的“保存可见”(Keep Visible) 按钮,使此属性对话框一直可见,以方便操作。单击“测 试”菜单项下方的空位置,在属性对话框中,输入标题“对 话框(&D)”,在ID框输入该菜单项的资源标识;_TEST_DLG, 结果如图所示,单击属性对话框右上角的关闭按钮。

3.2.7 在程序中使用对话框 (4) 用鼠标将新添加的菜单项拖到“查看”和“帮助”菜单项 之间,结果如图所示。 菜单项“对话框”拖放后的位置 (5) 选择“查看”“建立类向导”菜单命令或直接按Ctrl+W快 捷键,则出现MFC ClassWizard对话框,该对话框会自动 切换到Message Maps页面。 (6) 从“Class name”组合框中选择CMainFrame,在Object Ids 列表中选择ID_TEST_DLG,然后在Messages框中选择CO MMAND消息。

3.2.7 在程序中使用对话框 (7) 单击[Add Function]按钮或双击COMMAND消息,出 现“Add Member Function”对话框以输入成员函数的名称。系统默认的函数名为OnTestDlg,如图所示。该函数是对菜单项ID_TEST_DLG的映射,也就是说,当在应用程序运行时,用户选择“对话框”,则该函数OnTestDlg被调用,执行函数中的代码。

3.2.7 在程序中使用对话框 单击[OK]按钮,在ClassWizard的“Member functions”列 表中将列出新增加的成员函数。选择此函数,单击[Edit Co de]按钮(或直接在函数名双击鼠标),在此成员函数中添加下 列代码: void CMainFrame::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 使用无模式对话框 2. 无模式对话框 所谓“无模式对话框”是指当对话框被弹出后,一直保留 2. 无模式对话框 所谓“无模式对话框”是指当对话框被弹出后,一直保留 在屏幕上,用户可继续在对话框所在的应用程序中进行其 它操作;当需要使用对话框时,只需象激活一般窗口一样 单击对话框所在的区域即可激活。 [例Ex_Modeless] 创建并使用无模式对话框 用MFC AppWizard(exe)创建一个默认的单文档应用程 序x_Modeless。 (2) 在该项目中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND,标题设为“无模式对话框”, (3) 对话框字体和大小设为“宋体,9号”。为IDD_DIALOG_SECOND对话框资源创建一个 对话框类CSecondDlg。

4.3 使用无模式对话框 Function”对话框以输入成员函数的名称,保留系统默 按Ctrl+W快捷键打开MFC ClassWizard,从“Class name”列表中选择CSecondDlg,在IDs列表中选择IDOK, 是对话框中[OK] 按钮的标识符,然后在Messages框中 选择BN_CLICKED(单击按钮)消息,单击[Add Function] 按钮或双击BN_CLICKED消息,出现“Add Member Function”对话框以输入成员函数的名称,保留系统默 认的函数名为OnOK,如图所示。

4.3 使用无模式对话框 (5) 修改CSecondDlg::OnOK函数中的代码。 void CSecondDlg::OnOK() { // 添加其他代码使用户输入对话框的数据有效 DestroyWindow(); // 终止对话框显示 delete this; // 删除对话框,释放内存空间 } 代码中,DestroyWindow是对话框基类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) 按Ctrl+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为对分配内存空间 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" 编译并运行。在应用程序菜单上,多次选择“测试” “对 话框”菜单项,将会在同一个位置中出现多个对话框,拖动这 些对话框到适当位置,如图: 这就是无模式对话框的效果,从上述示例可以看出:模式和无模式对话框在用 编辑器设计和使用 MFC ClassWizard创建用 户对话框类的方法是一致 的,但在对话框的创建和 退出的方式是不同的。

3.4.1 通用对话框 表 MFC的通用对话框 这些对话框都有一个共同特点:它们都从用户获取信息,但并不对信息作处理。 对话框 用 途 用 途 CColorDialog 颜色对话框,允许用户选择或创建颜色 CFileDialog 文件对话框,允许用户打开或保存一个文件 CFindReplaceDialog 查找替换对话框,允许用户查找或替换指定字符串 CPageSetupDialog 页面设置对话框,允许用户设置页面参数 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(); AfxMessageBox(str); } 代码中,CString是MFC中的一个类,用来操作字符串。

3.4.1 通用对话框 通用文件对话框类CFileDialog的构造函数的原型如下: CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_O VERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); 函数原型中,LPCTSTR类型用来表示一个常值字符指针, 这里可以将其理解成是一个常值字符串类型。上述代码中, AfxMessageBox用来弹出一个消息对话框(后面还要讨论)。 GetPathName是CFileDialog类成员函数,用来获取文件的 全路径名。

3.4.2 消息对话框 消息对话框是最简单的一类对话框,用来显示信息的。 消息对话框常用按钮类型 图标类型 含 义 含 义   MB_ICONHAND、MB_ICONSTOP、 MB_ICONERROR 用来表示 MB_ICONQUESTION MB_ICONEXCLAMATION、MB_ICONWARNING MB_ICONASTERISK、MB_ICONINFORMATION 消息对话框常用按钮类型 按钮类型 消息对话框常用按钮类型 MB_ABOUTRETRYIGNORE MB_OK MB_OKCANCEL MB_RETRYCACEL MB_YESNO MB_YESNOCANCEL

习 题 什么是对话框模板、对话框资源和对话框类? 对一个对话框编程一般经过几个步骤? 什么是模式和无模式对话框?它们有哪些不同? 习 题 什么是对话框模板、对话框资源和对话框类? 对一个对话框编程一般经过几个步骤? 什么是模式和无模式对话框?它们有哪些不同? 通用对话框有哪些?调用时需要注意哪些要点? 在单文档应用程序中,通过调用对话框类DoModal函数 将每一个通用对话框都显示一遍,看看这些通用对话框的界面是怎样的? 创建一个默认基于对话框的应用程序,然后看一看其中的 对话框类和本章在单文档应用程序添加的对话框类有什么不同?