第11章:对话框及常用控件
合集下载
FORM窗体和对话框

(6)为各个菜单添加Click事件过程。
5
设计界面
6
程序代码
Private Sub MnuFileExit_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MnuFileExit.Click
Me.CColorDilaog控件 (3)合理命名这些控件的Name属性。 (4)设计主菜单的顶层菜单为文件、样式及输入3项。
文件菜单下有3项,分别为打开、保存和退出。 样式菜单下有2项为字体和颜色。 输入菜单下没有子项。
(5)再放置一个TextBox控件到窗体上,并将MultiLine属 性设为True。命名各菜单项和TextBox控件的Name属性
End Sub
9
Private Sub MnuStyleFont_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuStyleFont.Click
FontDialog.ShowDialog() TxtShow.Font = FontDialog.Font
End Sub
11
Private Sub MnuInput_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MnuInput.Click
Dim strName As String Dim strClass As String strName = InputBox("请输入姓名") strClass = InputBox("请输入班级", , , 70, 90) TxtShow.Clear() TxtShow.Text = "姓名:" + strName + vbCrLf TxtShow.Text += "班级:" + strClass + vbCrLf
5
设计界面
6
程序代码
Private Sub MnuFileExit_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MnuFileExit.Click
Me.CColorDilaog控件 (3)合理命名这些控件的Name属性。 (4)设计主菜单的顶层菜单为文件、样式及输入3项。
文件菜单下有3项,分别为打开、保存和退出。 样式菜单下有2项为字体和颜色。 输入菜单下没有子项。
(5)再放置一个TextBox控件到窗体上,并将MultiLine属 性设为True。命名各菜单项和TextBox控件的Name属性
End Sub
9
Private Sub MnuStyleFont_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuStyleFont.Click
FontDialog.ShowDialog() TxtShow.Font = FontDialog.Font
End Sub
11
Private Sub MnuInput_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MnuInput.Click
Dim strName As String Dim strClass As String strName = InputBox("请输入姓名") strClass = InputBox("请输入班级", , , 70, 90) TxtShow.Clear() TxtShow.Text = "姓名:" + strName + vbCrLf TxtShow.Text += "班级:" + strClass + vbCrLf
对话框和控件

第10章 对话框和控件
10.1 10.2 10.3 10.4 习题 对话框和控件的基本概念 使用AppWizard开发MFC应用程序 基本控件 通用对话框
10.1.1 对话框的基本概念
在MFC中,对话框的功能被封装在了CDialog类中, CDialog类是CWnd类的派生类。 有模式对话框垄断了用户的输入,当一个有模式对 话框打开时,用户只能与该对话框进行交互,而其 它用户界面对象收不到输入信息。 无模式对话框类似普通的Windows窗口,在无模式 对话框打开时,用户可以同时打开其它窗口对象, 操作完毕后,又可用鼠标或其它方式激活该窗口。
出现“Add Member Function”对话框,在这里可以
输入成员函数的名称,系统默认的函数名为 OnButton1。
1 控件的消息及消息映射
(5)单击[OK]按钮,在MFC ClassWizard的“Member functions”列表中将列出新增加的成员函数。 在此成员函数中添加下列代码: void CEx_DlgCtrlsDlg::OnButton1() { MessageBox("你按下了\"Button1\"按钮!"); } (6) 编译并运行,当单击[Button1]按钮时,就会执行 OnButton1函数,弹出一个消息对话框。这就是按钮 BN_CLICKED消息的映射过程,其他控件的消息也可以类 似操作。
10.3 基本控件
控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历 用户定制工具 静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 组合框的扩展
图10.11 基本控件
10.1 10.2 10.3 10.4 习题 对话框和控件的基本概念 使用AppWizard开发MFC应用程序 基本控件 通用对话框
10.1.1 对话框的基本概念
在MFC中,对话框的功能被封装在了CDialog类中, CDialog类是CWnd类的派生类。 有模式对话框垄断了用户的输入,当一个有模式对 话框打开时,用户只能与该对话框进行交互,而其 它用户界面对象收不到输入信息。 无模式对话框类似普通的Windows窗口,在无模式 对话框打开时,用户可以同时打开其它窗口对象, 操作完毕后,又可用鼠标或其它方式激活该窗口。
出现“Add Member Function”对话框,在这里可以
输入成员函数的名称,系统默认的函数名为 OnButton1。
1 控件的消息及消息映射
(5)单击[OK]按钮,在MFC ClassWizard的“Member functions”列表中将列出新增加的成员函数。 在此成员函数中添加下列代码: void CEx_DlgCtrlsDlg::OnButton1() { MessageBox("你按下了\"Button1\"按钮!"); } (6) 编译并运行,当单击[Button1]按钮时,就会执行 OnButton1函数,弹出一个消息对话框。这就是按钮 BN_CLICKED消息的映射过程,其他控件的消息也可以类 似操作。
10.3 基本控件
控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历 用户定制工具 静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 组合框的扩展
图10.11 基本控件
第8讲--对话框及常用控件

CString
m_strPassword; //通过类向导增加的字符串变量,保存密码
CString 名称
m_strUserName; //通过类向导增加的字符串变量,保存用户
//}}AFX_如何初始化各种类型的数据对象是很重要的,当处理像 对话框这样复杂对象时,由于它的初始化工作放在多个 阶段,所以需要注意次序问题。对话框的初始化工作可 以在下面的三个阶段进行:构造函数、对WM_CREATE 消息的响应和对WM_INITDIALOG消息的响应。
资源文件(.rc)中有关描述对话 框模板的文本
8.2.3 利用对话框类CDialog操纵对话框
1.利用类向导创建对话框类
进入类向导后,如果从未给刚才建立的 对话框资源模板建立对应的对话框类, 则类向导会发现这是一个新的对话框资 源模板,类向导提问是否要为这个新的 对话框资源模板创建一个新的类。选择 “OK”按钮,会弹出一个Create New Class的对话框。若选择Cancel后,也可 以在类向导中通过增加一个新类的方法 来添加对话框资类。不管哪种情况,都 是在所出现的对话框的Name栏中输入对 话框类的名字CPassWordDlg,Bass Dialog栏选择CDialog,Dialog ID栏选择 先前创建的新对话框源模板的标识符 IDD_DIALOG_USER(如图所示)。
对话框类可以看作对话框应用程序的一种程序员 接口,用户对应用程序操作,后台调用的都是该类 的成员函数来完成的。
8.2 对话框程序的创建
8.2.1 一个对话框程序 8.2.2 创建对话框资源模板 8.2.3 利用对话框类CDialog操纵对话框 8.2.4 初始化对话框 8.2.5 对话框的调用 8.2.6 对话框的消息处理
对话框及常用控件

2
对话框程序的创建
2.1 一个对话框程序 2.2 创建对话框资源模板 2.3 利用对话框类CDialog操纵对话框 2.4 初始化对话框 2.5 对话框的调用 2.6 对话框的消息处理
2.1
一个对话框程序
1.程序功能 该应用程序具有认证的功能:当该程序运行时,首先弹 出一个“密码验证” 对话框,让用户输入其用户名和密 码。用户需要输入用户名“good”和用户密码“ good ” 后才能进入主界面,若有一个输入错误,都不能进入。 2.程序类型
1.3 对话框的组成(续)
对话框类 从CDialog类派生的对话框类提供编程接口来 管理与对话框模板相关联的对话框。 CDialog 类的 许多成员函数与对话框编程密切相关,可供程序员 调用。由于对话框是一种窗口,因此相应的对话框 类必须与一个Windows窗口相联系,而对话框资源 模板就是用于创建这个 Windows窗口及其包含在其 中的控件。 对话框类可以看作对话框应用程序的一种程序 员接口,用户对应用程序操作,后台调用的都是该 类的成员函数来完成的。
可见在对话框的构造函数中主要是对对话框的数据成员变量 进行初始化。
2.4
初始化对话框(续)
2.在WM_CREATE的消息映射函数中初始化 由于对话框也是窗口,它在窗口创建时会收到 WM_CREATE 消息,该消息的响应函数是 OnCreate()。 这样,就能在窗口创建中做一些初始化工作。尽管用户 可能在 WM_CREATE 消息处理函数中进行一些数据成员 的初始化工作,但更通常的做法是在对话框中的所有控 件都建立起来之后,响应消息 WM_INITDIALOG 时,对 数据成员进行初始化。 3.在WM_INITDIALOG的消息映射函数中初始化 在对话框创建时,会收到 WM_INITDIALOG 消息,该 消息的响应函数是OnInitDialog()。在得到了
对话框和常用控件

CObject CCmdTarget CWnd
CDialog
Visual C++程序设计
CDialog类从CWnd类派生而来,所以它继承了 CWnd类的成员函数,具有CWnd类的基本功能 , 在 你 的 CDialog 类 的 派 生 类 中 可 以 直 接 调 用 CDialog类的成员函数。大部分的成员函数是虚 函数,可以在你的派生类中重载,以实现特定的 目 的 。 除 了 CDialog 类 成 员 函 数 , 类 CWnd 和 CWinApp也提供了一些成员函数用于对话框的 管理。
对话框保留在屏幕的同时,用户还可以在应用程序 其它窗口中进行工作的对话框称为非模态对话框。例 如,Word字处理软件中的Find 和Replace对话框 就是非模态对话框的一个很好的例子。
4.1.2 对话框的组成
对话框模板
对话框模板定义了对话框的特性(比如大小、位 置和风格)以及对话框中每个控件的类型和位置。 程序员不仅可以使用对话框资源编辑器建立对话框 资源模板外,还可以根据需要在内存中创建对话框 模板。当对话框模板创建后,程序员好可以在创建 和管理对话框时动态地改变部分控件的信息,如禁 止、变灰、改变标题和大小。
从程序员角度来看,对话框和控件都是窗口,查看 MSDN中的MFC组织图可以看到,它们都是从 CWnd类派生来的,这正好说明了“对话框和控件都 是窗口”。因此,对对话框的操作,经常要使用窗口 的成员函数来进行。
4.1.1 对话框的分类
1.模态对话框 在对话框关闭之前,用户无法在应用程序的其它窗
口中进行工作的对话框称为模态对话框。例如 Windows的各种应用软件中的Open File 对话框, 用户不能在应用程序的其它地方工作,直到对话框关 闭。 2.非模态对话框
CDialog
Visual C++程序设计
CDialog类从CWnd类派生而来,所以它继承了 CWnd类的成员函数,具有CWnd类的基本功能 , 在 你 的 CDialog 类 的 派 生 类 中 可 以 直 接 调 用 CDialog类的成员函数。大部分的成员函数是虚 函数,可以在你的派生类中重载,以实现特定的 目 的 。 除 了 CDialog 类 成 员 函 数 , 类 CWnd 和 CWinApp也提供了一些成员函数用于对话框的 管理。
对话框保留在屏幕的同时,用户还可以在应用程序 其它窗口中进行工作的对话框称为非模态对话框。例 如,Word字处理软件中的Find 和Replace对话框 就是非模态对话框的一个很好的例子。
4.1.2 对话框的组成
对话框模板
对话框模板定义了对话框的特性(比如大小、位 置和风格)以及对话框中每个控件的类型和位置。 程序员不仅可以使用对话框资源编辑器建立对话框 资源模板外,还可以根据需要在内存中创建对话框 模板。当对话框模板创建后,程序员好可以在创建 和管理对话框时动态地改变部分控件的信息,如禁 止、变灰、改变标题和大小。
从程序员角度来看,对话框和控件都是窗口,查看 MSDN中的MFC组织图可以看到,它们都是从 CWnd类派生来的,这正好说明了“对话框和控件都 是窗口”。因此,对对话框的操作,经常要使用窗口 的成员函数来进行。
4.1.1 对话框的分类
1.模态对话框 在对话框关闭之前,用户无法在应用程序的其它窗
口中进行工作的对话框称为模态对话框。例如 Windows的各种应用软件中的Open File 对话框, 用户不能在应用程序的其它地方工作,直到对话框关 闭。 2.非模态对话框
对话框与通用控件

CScrollBar* pSB = (CScrollBar*) GetDlgItem(IDC_LOYAL); pSB->SetScrollRange(nMin, nMax); pSB = (CScrollBar*) GetDlgItem(IDC_RELY); pSB->SetScrollRange(nMin, nMax);
为对话框提供控件形式的滚动条
常用于为其它控件提供标签 显示连续的AVI视频剪辑 位于某一行文本之上的按钮, 可用来控制显示文件的宽度
热键
CHotKeyΒιβλιοθήκη trl用于通过按下某一组合键
来很快的执行某些常用的操作
图象列表 列表 进度
CImageList CListCtrl
一系列图象 显示文本及其图标列表的窗口
#include "exaView.h" #include "exaDialog.h"
6.编译和测试该应用程序。
深入理解EXA应用程序
当程序中调用了DoModal时,只有在用户关闭 了对话框后,控制才能返回到程序中。只有 理解了这点,才算理解了模式对话框。当我 们开始学习无模式对话框时,就会深切地体 会到模式对话框的程序设计是多么的简单, 不过当DoModal被调用时,实际上在“幕后” 将引起一系列的动作。我们将一些调用关系 总结如下:
void CExaView::OnLButtonDown(UINT nFlags, CPoint point) { CEx06aDialog dlg; //建立对象 dlg.m_strName = "Shakespeare, Will"; dlg.m_nSsn = 307806636; dlg.m_nCat = 1; // 0 = hourly, 1 = salary dlg.m_strBio = "This person is not a well-motivated tech writer"; dlg.m_bInsLife = TRUE; dlg.m_bInsDis = FALSE; dlg.m_bInsMed = TRUE; dlg.m_strDept = "Documentation"; dlg.m_strSkill = "Writer"; dlg.m_strLang = "English"; dlg.m_strEduc = "College"; dlg.m_nLoyal = dlg.m_nRely = 50;
VFP专业知识:第11章_表单
第十一章 表 单
2.类 类是对一类相似对象的性质描述,这些对象具有相 同种类的属性以及方法 3.子类与继承 继承是指在基于现有的类创建新类时,新类继承了 现有类里的方法和属性。 此外,可以为新类添加新的方法和属性。 我们把新类称为现有类的子类,而把现有类称为新 类的父类。 一个子类的成员一般包括: (1)从其父类继承的属性和方法。 (2)由子类自己定义的属性和方法。
第十一章 表 单
类 类
抽象
细化
实例化
继承
子类
对象 …… 对象
对象
实例化
例如Visual FoxPro 6.0中CommandButton是命令按钮类, “提交”按钮和“退出”按钮都是CommandButton类的实例。
第十一章 表 单
4、Visual FoxPro基类 Visual FoxPro基类是系统本身内含的,并不存放在 某个类库中。 用户可以基于基类生成所需要的对象,也可以扩展基 类创建自己的子类 VFP的基类见 P132 表5.1
第十一章 表 单
第十一章 表 单
本 章 要 点
面向对象的概念 建立表单 管理表单 运行表单 常用表单控件
第十一章 表 单
一、面向对象的概念
1、对象(Object): 客观世界里的任何实体都可以被看作是对象。 对象可以是具体的物,也可以指某些概念。
1.名字不能更改 2.可以增加新属性
第十一章 表 单
11、常用控件的公共属性 name:控件的名称,它是代码中访问控件的标识(表单或表单 集除外)。 Fontname:字体名。 Fontbold:字体样式为粗体。 Fontsize:字体大小。 Fontitalic:字体样式为斜体。 Forecolor:前景色。 Height:控件的高度 Width:控件的宽度。控件的高度和控件的宽度,也可在设计 时通过鼠标拖曳进行可视化调整。 Visible:控件是否显示。 Enable:控件运行时是否有效。如果为 .T.,则表示控件有效, 否则运行时控件不可使用。
4.1 对话框和常用控件
控件的选择 静态文本 静态图片 编辑框
组框
复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图
按钮
单选框 列表框 垂直滚动条 进展条 热键 树形视图
标签
复合编辑 月历 用户定制工 具 控件工具栏和各按钮含义
动画
日期选择 IP地址 组合框的扩 展
4.1对话框的使用
(2)单个控件的选取 鼠标选取 保证选择按钮( )是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键。 助记符选取 在相应的控件上右击。选择“Properties”菜单项,对话框中的“Caption”框是用来 输入控件的标题,在标题中的某个字母之前键入“&”符号,则该字母就是此控件的助记符。 Tab键选取 利用Tab键,可在对话框内的控件中进行选择。每按一次Tab键依次选取对话框中 的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件。 (3)多个控件的选取 在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件 都将被选取。 先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若 在选取时,对已选取的控件再选取一下,则该控件取消选取。 一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实 心小方块,拖动它可改变控件的大心小方块,这个控件称为主 要控件,而其他控件的选择框的小方块是空心的。如图。
标尺
控件工具栏
基准线
布局工具栏
打开的对话框编辑器
4.1对话框的使用
在对话框中添加和编辑控件
(1)控件添加的方法
在对话框中添加一个控件的方法有下列几种: 在控件工具栏中单击某控件,鼠标箭头在对话框内变成“十”字形状;在对话框指定 位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。 在控件工具栏中单击某控件,鼠标箭头对话框内变成“十”字形状;在指定位置处单 击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。 用鼠标左键点中控件工具栏中的某控件,并按住鼠标键不放;在移动鼠标到对话框的 指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标键。
组框
复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图
按钮
单选框 列表框 垂直滚动条 进展条 热键 树形视图
标签
复合编辑 月历 用户定制工 具 控件工具栏和各按钮含义
动画
日期选择 IP地址 组合框的扩 展
4.1对话框的使用
(2)单个控件的选取 鼠标选取 保证选择按钮( )是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键。 助记符选取 在相应的控件上右击。选择“Properties”菜单项,对话框中的“Caption”框是用来 输入控件的标题,在标题中的某个字母之前键入“&”符号,则该字母就是此控件的助记符。 Tab键选取 利用Tab键,可在对话框内的控件中进行选择。每按一次Tab键依次选取对话框中 的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件。 (3)多个控件的选取 在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件 都将被选取。 先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若 在选取时,对已选取的控件再选取一下,则该控件取消选取。 一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实 心小方块,拖动它可改变控件的大心小方块,这个控件称为主 要控件,而其他控件的选择框的小方块是空心的。如图。
标尺
控件工具栏
基准线
布局工具栏
打开的对话框编辑器
4.1对话框的使用
在对话框中添加和编辑控件
(1)控件添加的方法
在对话框中添加一个控件的方法有下列几种: 在控件工具栏中单击某控件,鼠标箭头在对话框内变成“十”字形状;在对话框指定 位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。 在控件工具栏中单击某控件,鼠标箭头对话框内变成“十”字形状;在指定位置处单 击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。 用鼠标左键点中控件工具栏中的某控件,并按住鼠标键不放;在移动鼠标到对话框的 指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标键。
对话框及常用控件
统一的视觉风格
对话框的视觉风格应与应 用程序的整体风格保持一 致。
合适的色彩搭配
对话框的颜色搭配应符合 应用程序的主题和风格, 同时也要考虑色彩的对比 度和舒适度。
精美的图标和插图
对话框中可以适当地使用 图标和插图,以提高视觉 效果和用户体验。
一致性
对话框布局一致
不同对话框的布局和组件应保持一致,以提高用户对 应用程序的熟悉度和使用效率。
提示对话框
总结词
提供简短信息或警告的对话框
详细描述
提示对话框通常用于向用户显示应用程序的状态或提 供简短的通知。它包含一个标题、一条消息和一个关 闭按钮。根据需要,提示对话框还可以包含图标以强 调其重要性。
感谢观看
THANKS
按钮
总结词
用于触发特定功能的控件
详细描述
按钮是常见的交互控件,用户点击按钮后可以触发特定的功能或操作。根据功 能,按钮可分为确认、取消、提交等类型。
列表框
总结词
用于显示和选择列表项的控件
详细描述
列表框可以显示一系列的列表项,用户可以通过鼠标或键盘选择所需的列表项。根据选择方式,列表 框可分为单选列表框和多选列表框。
对话框的分类
模态对话框
模态对话框会阻塞用户对其他界面的 操作,直到对话框关闭。这类对话框 常用于需要用户做出决策或输入的情 况。
非模态对话框
非模态对话框不会阻塞用户对其他界 面的操作,用户可以在对话框打开的 同时进行其他操作。这类对话框常用 于显示信息或提供简单的选项。
对话框的使用场景
确认操作
01
复选框
总结词
用于表示选项是否被选中的控件
详细描述
复选框是一种开关控件,用户可以通过点击来选中或取消选中某个选项。多个复选框可 以组合在一起,表示多个选项的组合。Fra bibliotek单选按钮
第11章控件测试
组合列表框的测试
• 条目内容正确,其详细条目内容可以根据 需求说明确定; • 逐一执行列表框中每个条目的功能; • 检查能否向组合列表框输入数据;
复选框的测试
• • • • • • • 复选框有且只有两种状态:选中或不被选中 每个选框能否被选中 能否被清空 能否同时选中 能否同时为空 每个选框的功能是否实现 需要考虑界面测试的要点:是否对齐,控件大小,字体等 等
列表框控件的测试
• 条目内容正确;同组合列表框类似,根据 需求说明书确定列表的各项内容正确,没 有丢失或错误; • 列表框的内容较多时要使用滚动条; • 列表框允许多选时,要分别检查shift选中条 目,按ctrl选中条目和直接用鼠标选中多项 条目的情况;
滚动条控件的测试
• 滚动条的长度根据显示信息的长度或宽度及时变换,这样 有利于用户了解显示信息的位置和百分比,如,word中浏 览100页文档,浏览到50页时,滚动条位置应处于中间; • 拖动滚动条,检查屏幕刷新情况,并查看是否有乱码; • 单击滚动条;软件测试专业网站: • 用滚轮控制滚动条; • 滚动条的上下按钮。
各种控件在窗体中混和使用时的测试
• • • • •
控件间的相互作用; tab键的顺序,一般是从上到下,从左到右; 热键的使用,逐一测试; enter键和esc键的使用; 在测试中,应遵循由简入繁的原则,先进 行单个控件功能的测试,确保实现无误后, 再进行多个控件的的功能组合的测试。
总结
• • • • 控件的基本概念 认识控件 常用控件测试 请预习第十一章
按钮控件举例
单选按钮的测试
• 一组单选按钮不能同时选中,只能选中一个。 • 逐一执行每个单选按钮的功能。分别选择了“男”“女” 后,保存到数据库的数据应该相应的分别为“男”“女”; • 一组执行同一功能的单选按钮在初始状态时必须有一个被 默认选中,不能同时为空; • 单选按钮一般被包含在GroupBox控件中,所以要明确 Groupbox的名称是否与单选按钮所表达的含义一致 • 单选按钮是否可选(切换) • 单选按钮有默认值和没有默认值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.1.1 11.1.2 11.1.3
本节内容: 对话框简介 对话框的分类 对话框的组成
3
11.1.1
对话框简介
Visual C++
对话框是一种用户界面,它为用户提供 了一种标准的处理数据的方法。因为大部分 的对话框是作为对菜单的单击响应而显示出 来的(在Word软件中,单击菜单项后有…的 菜单,看都会出现哪些对话框),因此对话 框常常被看作是用户菜单命令的扩展。 从程序员角度来看,对话框和控件都是 窗口,查看MSDN中的MFC组织图可以看到, 它们都是从CWnd类派生来的,这正好说明了 “对话框和控件都是窗口”。因此,对对话 框的操作,经常要使用窗口的成员函数来进 行。
4
11.1.2 对话框的分类
Visual C++
1.模态对话框 在对话框关闭之前,用户无法在应用程 序的其它窗口中进行工作的对话框称为模态 对话框。例如Windows的各种应用软件中的 Open File 对话框,用户不能在应用程序的 其它地方工作,直到对话框关闭。 2.非模态对话框 对话框保留在屏幕的同时,用户还可以 在应用程序其它窗口中进行工作的对话框称 为非模态对话框。例如,Word字处理软件中 的Find 和Replace对话框就是非模态对话框 的一个很好的例子。
16
11.2.4 初始化对话框(续)
Visual C++
2.在WM_CREATE的消息映射函数中初始化 由于对话框 也是窗口 , 它在窗口创建时会收 到 WM_CREATE消息,该消息的响应函数是OnCreate()。这 样,就能在窗口创建中做一些初始化工作。尽管用户 可能在WM_CREATE消息处理函数中进行一些数据成员的 初始化工作,但更通常的做法是在对话框中的所有控 件都建立起来之后,响应消息WM_INITDIALOG时,对数 据成员进行初始化。 3.在WM_INITDIALOG的消息映射函数中初始化 在对话框创建时,会收到WM_INITDIALOG消息, 该消息的响应函数是OnInitDialog()。在得到了
第11章 对话框及常用控件
教学要点
Visual C++
本章内容主要包括包含控件的对话框资源的建立, 对话框类和对话框资源的关联,利用对话框类来操纵对 话框资源,话框框的消息处理,话框框中控件的访问。
要求了解动画控件的使用、话框框资源的建立方法 和常见属性的含义,熟悉利用控件属性对话框设臵控件 属性的方法及常见控件属性的含义,掌握对对话框消息 WM_INITDIALOG的响应,会利用类向导添加控件变量和 消息映射函数,熟练掌握控件类型的无关访问。
15
11.2.4 初始化对话框(续)
Visual C++
1.在构造函数中初始化 从C++的观点看,在类的构造函数中,应该初 始化类的数据成员,但是,在MFC应用程序中应尽量 避免在构造函数中完成太多的工作,因为构造函数 没有返回失败条件的方法,无法报告其中的失败信 息(除非使用异常处理)。 在 前 面 的 例 子 中 , 变 量 m_strPassword 和 m_strUserName的初始化就是在对话框类的构造函数 中进行的,下面是构造函数的实现代码:点击进入 代码 可见在对话框的构造函数中主要是对对话框的 数据成员变量进行初始化。
11
11.2.3 利用对话框类CDialog
操纵对话框
1.利用类向导创建对话框类
Visual C++
进入类向导后,如果从未给刚才建立的对话框 资源模板建立对应的对话框类,则类向导会发现这是 一个新的对话框资源模板,类向导提问是否要为这个 新的对话框资源模板创建一个新的类。选择“OK”按 钮,会弹出一个Create New Class的对话框。若选择 Cancel后,也可以在类向导中通过增加一个新类的方 法来添加对话框资类。不管哪种情况,都是在所出现 的对话框的Name栏中输入对话框类的名字 CPassWordDlg,Base Dialog栏选择CDialog,Dialog ID栏选择先前创建的新对话框源模板的标识符 IDD_PASSWORD_DIALOG(如图11.4所示)。
19
11.2.5 对话框的调用(续)
Visual C++
中靠和用户交互进行。应用程序类是控制整个应用 程序的运行,它建立的时间最早,因此我们可以把 对话框的调用放到应用程序类中的InitInstance() 中完成。 (1)在应用程序类中添加文件包含宏 打开应用程序类的实现文件DialogExamApp.cpp,在 文件的头件的定义处,添加文件包含的宏指令:点 击进入代码 ( 2 ) 超 载 应 用 程 序 类 的 虚 函 数 InitInstance() 点击进入代码
1.程序功能 该应用程序具有认证的功能:当该程 序运行时,首先弹出一个“密码验证” 对 话框,让用户输入其用户名和密码。用户 需要输入用户名“good”和用户密码”good” 后才能进入主界面,若有一个输入错误, 都不能进入,系统提供了三次输入机会。 2.程序类型 该程序重点演示一个模态对话框,它 是利用AppWizard创建的一个基于MFC的单 文档应用程序DialogExam。在该程序的主 界面出现之前显示“密码验证” 对话框。
5
11.1.3
对话框的组成
Visual C++
对话框模板 对话框模板定义了对话框的特性(比 如大小、位臵和风格)以及对话框中每个 控件的类型和位臵。程序员不仅可以使用 对话框资源编辑器建立对话框资源模板外, 还可以根据需要在内存中创建对话框模板。 当对话框模板创建后,程序员好可以在创 建和管理对话框时动态地改变部分控件的 信息,如禁止、变灰、改变标题和大小。 对话框模板可以看作对话框应用程序 的一种用户接口,用户在应用程序的使用 中,看到的都是资源模板中的东西。
13
利用对话框类CDialog
操纵对话框(续)
Visual C++
按 OK 按 钮 后 , 这 两 个 类 的 成 员 变 量 m_strUserName 和 m_strPassword 就 被 加 入 到 CPasswordDlg类的定义中,定位到该类的头文件 PassDlg.h中,找到如下的几行代码:点击进入代 码
9
11.2.2 创建对话框资源模板
Visual C++
1.模板文件 对话框模板描述了对话框中各控件类型和排列 位臵,不论是模态还是非模态对话框,都需要对话 框模板。对话框模板存储在对话框资源中,这和菜 单类似。对话框资源中存储的是对话框脚本,为了 了解资源的脚本,我们查看一下脚本文件 DialogExam.rc,屏幕看到的是生成的单文档应用程 序的“关于”对话框的脚本(如图11.1所示)。 2.可视化编辑模板 在 DialogExam 应 用 程 序 的 WorkSpace 中 选 择 Resource View选项卡,在其下的Dialog文件夹下插 入 一 个 对 话 框 资 源 , 并 将 该 资 源 的 ID 设 臵 为 IDD_PASSWORD_DIALOG,标题设臵为“密码验证”。 同时在
Visual C++
WM_INITDIALOG消息时,对话框处于一个特殊的 状态,首先当我们获得该消息时,对话框框架已经 建立起来,对话框的窗口句柄已经有效;其次各个 控件也建立起来并放在适当的地方;第三,对话框 控 件 还 没 有 显 示 出 来 。 因 此 , 一 般 在 OnInitDialog()函数中作一些影响对话框外观的初 始化工作,如可以设臵或优化对话框中各个控件的 外观、大小尺寸、位臵及其它内容。 一般来说,在创建对话框及其所有的控件后, 就在对话框即将显示之前将调用CDialog的成员函 数OninitDialog()来初始化对话框。对于模态对话 框,在调用DoModal时调用OninitDialog(),而对 于非模态对话框,在调用Create()时调用 OninitDialog() 。
18
11.2.5 对话框的调用
Visual C++
由于对话框是一种输入界面,因而牵涉到在程 序的什么地方、什么时候调用的问题,这实质上是 创建的对话框类和程序如何交互的问题。根据不同 的应用程序类型和程序的功能,其调用的方法也不 同。 1.在程序主窗口显示前调用 我们已经创建了密码验证DialogExam程序的对 话 框 模 板 IDD_PASSWORD_DIALOG、 对 话 框 类 CpassWordDlg,紧接着编写调用对话框的代码。由 于密码验证是在应用程序的主框架显示之前进行, 因此密码验证对话框的调用必须在应用程序主框架 显示之前就完成,很显然它不能在视图类
1
对话框及常用控件
本章内容
11.1 对话框概述 11.2 对话框程序的创建
Visual C++
11.3 标准Windows控件 习题
2
11.1 对话框概述
Visual C++
界面是Windows程序设计中的一种重要的接口, 上一章节讲的菜单、工具栏和状态栏就是重要的 用户接口,出此之外,对话框和控件也是组成界 面的重要元素。这一章讲解如何编写基于对话框 的应用程序,在界面中放臵什么样的控件。当创 建了一个包含各种控件的对话框资源后,控件如 何来响应用户的各种操作。
14
11.2.4 初始化对话框
Visual C++
如何初始化各种类型的数据对象是很重 要的,当处理像对话框这样复杂对象时,由 于它的初始化工作放在多个阶段,所以需要 注意次序问题。对话框的初始化工作可以在 下面的三个阶段进行:构造函数、对 WM_CREATE消息的响应和对WM_INITDIALOG消 息的响应。
7
11.2
对话框程序的创建
Visual C++
本节内容 11.2.1 一个对话框程序 11.2.2 创建对话框资源模板 11.2.3 利用对话框类CDialog操纵对话 框 11.2.4 初始化对话框