




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 使用常用控件,教学提示:本章首先在前面的基础上介绍了Windows标准控件的使用;接下来介绍了上下控件、滑块控件、进度条控件、树形视图控件和列表视图控件这些高级控件的作用和使用方法;然后介绍的是通用控件技术,包括控件的创建、访问和删除方法等。,教学目标:通过本章的学习,初步掌握标准控件的使用以及高级控件的作用和使用方法,同时,还要了解通用的控件技术。,8.1 使用标准控件,控件(Control)是独立的小部件,在对话框与用户的交互过程中,控件担任着主要角色。控件实际上都是窗口,种类较多,所有的控件类都是CWnd类的派生类。控件通常是作为对话框的子窗口而创建的,也可以出现在视窗、工具栏和
2、状态栏中。 Windows 提供了许多标准控件,包括静态控件、按钮、编辑控件、列表框和组合框等。MFC提供了一组对应的控件类来实现各种控件的功能。使用控件类成员函数可以获取和设置控件的值或状态,响应由控件发送到其父窗口的各种标准消息。控件对象通常在对话框中创建,也可以在其他窗口中创建。 8.1.1 静态控件 8.1.2 编辑控件 8.1.3 按钮控件 8.1.4 列表框控件 8.1.5 组合框控件 8.1.6 滚动条控件,8.1.1 静态控件,静态控件包括静态文本控件和图片控件。Windows提供了4种类型的静态控件:矩形,边框、文本和图标。静态控件通常用于标记其他控件,或者是生成框和线,以及
3、用来把一组控件同其他控件相分隔。静态控件既不能接收用户输入,也不能被选择。,返回,8.1.2 编辑控件,编辑框控件实际上是一个简易的正文编辑器,用户可以在编辑中输入并编辑正文。编辑既可以是单行的,也可以是多行的,多行编辑框是从零开始编行号的。在一个多行编辑框中,除了最后一行外,每一行的结尾处都有一对回车换行符(用“rn”表示)。这对回车换行是正文换行的标志,在屏幕上是不可见的。编辑控件可以有多种特征,如多行编辑、滚动等。,返回,8.1.3 按钮控件,按钮是指可以响应鼠标单击的小矩形子窗口。按钮控件包括命令按钮(Push Button)、复选框(Check Box)、单选按钮(Radio But
4、ton)、分组框(Group Box)和自绘式按钮(Owner-draw Button)。命令按钮的作用是对用户的鼠标单击做出反应并触发相应的事件,在按钮中既可以显示正文,也可以显示位图。复选框控件可作为一种选择标记,可以有选中、不选中和不确定3种状态。单选按钮控件一般都是成组出现的,具有互斥的性质,即同组单选按钮中只能有一个是被选中的。分组框用来将相关的一些控件聚成一组。自绘式按钮是指由程序而不是系统负责重绘的按钮。,返回,8.1.5 组合框控件,1. 组合框的类型与设计 2. 组合框使用实例,返回,1. 组合框的类型与设计,组合框把一个编辑框和一个单选择列表框结合在了一起。用户既可以在编辑
5、框中输入,也可以从列表框中选择一个列表项来完成输入。组合框分为简易式、下拉式和下拉列表式三种。简易式组合框包含一个编辑框和一个总是显示的列表框。下拉式组合框同简易式组合框类似,二者的区别在于仅当单击下滚箭头后列表框才会弹出。下拉列表式组合框也有一个下拉的列表框,但其编辑框是只读的,不能输入字符。 组合框向父窗口发送的通知消息前缀名为CBN_,常用的消息有CBN_SELCHANGE(选中表项)、CBN_DROPDOWN(出现下拉选项)等。,返回,2. 组合框使用实例,在基于对话框的MFC应用程序中,通常都会用到组合框控件,下面以实例的形式来介绍怎么使用组合框,具体操作步骤如下: (1) 启动Mi
6、crosoft Visual Studio .NET,新建一个基于对话框的MFC应用程序,项目名称为MyComboBox。 (2) 添加一个ComboBox控件。直接双击工具箱中的ComboBox控件,然后用鼠标拖动以调整控件的位置和大小。控件的Type属性选择Dropdown,如图8.8所示。,图8.8 MyComboBox程序主面板,返回,(3) 为ComboBox控件添加变量。右击ComboBox控件,在弹出菜单中选择【添加变量】菜单项,然后在打开的【添加成员变量向导】对话框的【变量类型】下拉表框中选择CComboBox,【变量名】添加m_ComboBox,然后单击【完成】按钮。 (4)
7、 为ComboBox控件添加事件处理函数。方法是:右击ComboBox控件,在弹出菜单中选择【添加事件处理程序】菜单项,然后在打开的【添加事件处理程序向导】对话框的【消息类型】中选择LBN_SELCHANGE,在【类列表】中选择CMyComboBoxDlg,【函数处理程序名称】默认是OnCbnSelchangeCombo1,最后单击【添加编辑】钮。,返回,(5)在CMyComboBoxDlg类的OnInitDialog()函数中添加如下代码: / TODO:在此添加额外的初始化代码 / 在组合框中添加内容 m_ComboBox.InsertString(-1,今天很平静); m_ComboBo
8、x.InsertString(-1,今天很开心); m_ComboBox.InsertString(-1,今天很郁闷);,返回,(6)在CMyComboBoxDlg类的OnCbnSelchangeCombo1函数中添加如下代码: void CMyComboBoxDlg:OnCbnSelchangeCombo1() / 获取组合框的当前选择内容的索引号 int i=m_ComboBox.GetCurSel(); CString str; / 根据索引号获取相应数据 m_ComboBox.GetLBText(i,str); / 弹出提示对话框 if(i=0) MessageBox(平平淡淡才是真!
9、); if(i=1) MessageBox(恭喜发财!); if(i=2) MessageBox(阳光总在风雨后!); ,返回,(7)编译并运行本项目,选择组合框中的【今天很平静】,弹出提示对话框,程序运行结果如图8.9所示。,图8.9 MyComboBox程序运行结果,返回,8.1.6 滚动条控件,1. 滚动条的类型 2. 滚动条的操作类型 3. 滚动条控件使用实例,返回,1. 滚动条的类型,滚动条主要用来从某一预定义值范围内快速有效地进行选择。滚动条分垂直滚动条和水平滚动条两种。在滚动条内有一个滚动框,用来表示当前的值。用鼠标单击滚动条,可以使滚动框翻一页或一行,也可以直接拖动滚动框。滚动
10、条既可以作为一个独立控件存在,也可以作为窗口、列表框和组合框的一部分,但大部分情况都是作为其他控件或窗口的一部分,很少单独使用。滚动条相应的窗口消息是WM_VSCROLL和WM_HSCROLL。,返回,2. 滚动条的操作类型,滚动条的操作类型见表8.6。水平滚动条只能左右滚动,垂直滚动条只能上下滚动。,表8.6 滚动条的操作,返回,8.2 使用高级控件,从Windows 95到Windows NT 3.51版开始,Windows提供了一些先进的Win32控件。这些新控件弥补了传统控件的不足之处,并使得Windows界面丰富多彩且更加友好。MFC的新控件类封装了这些控件。 8.2.1 高级控件的
11、通用消息 8.2.2 上下控件 8.2.3 滑块控件 8.2.4 进度条控件 8.2.5 树形视图控件 8.2.6 列表视图控件,8.2.1 高级控件的通用消息,每种不同的高级控件都有自己的消息,不过,Win32高级控件共有一些通知消息,在表8.10中列出。,表8.10 Win32控件共有的通知消息,返回,8.2.2 上下控件,1. 上下控件的概念 2. 上下控件相关的伙伴控件 3. 上下控件使用实例,返回,1. 上下控件的概念,上下控件有两个箭头按钮组成,用户在箭头按钮上单击鼠标可以在某一范围内增加或减少某一个值,上下控件一般不会单独存在,而是和编辑框或静态正文组成一个多部件控件来共同显示和
12、控制某一个值,用户可以用上下控件修改编辑框中的数字,也可以直接在编辑框中进行修改。,2. 上下控件相关的伙伴控件,在对话框模板中,可以方便地为上下控件指定一个伙伴控件。首先,应该在上下控件的【属性】对话框中选择Auto buddy和Set buddy integer属性,并在Alignment栏中选择Left或Right,然后就可以确定伙伴控件。,8.2.3 滑块控件,滑块(Slider)有时也被称作为轨迹条(Trackbar),在轨迹条中有一个滑块,轨迹条上通常会标有刻度,用户通过移动滑块,可以在一个指定的范围内选择一个不精确的值。轨迹条可用来调节一个模拟量,也可来在一些离散值中进行选择。
13、与微调器按钮不同,轨迹条是一种模糊性的输入控件,用户不需要进行精确的选择,只要大致调整一下大小就行了。轨迹条的这种特性非常符合人的行为习惯,因而在有些情况下是很有用的。 在滑块控件中,需要自己设定伙伴控件。和滚动条控件一样,滑块控件向窗口发送的消息是WM_VSCROLL和WM_HSCROLL。其操作和滚动条也是一样,请参看表8.6。不过与滚动条控件不同,滑块控件不需要手工移动滑块。,返回,8.2.4 进度条控件,进度条的用途是向用户显示程序的进度。进度条是Win32控件中最简单的控件,只需少数设置即可。进度条显示的数据是不精确的,它是一种模糊型的输出控件。下面给出一个进度条的例子,例中要涉及到
14、一个Windows消息WM_TIMER。通过系统函数SetTimer创建计时器,就可以每隔一段时间向主窗口发出WM_TIMER消息。由SetTimer创建的计时器必须要由KillTimer函数销毁。,返回,8.2.5 树形视图控件,树形视图是一种特殊的列表,它能以树形分层结构显示数据。在Windows的资源管理器的左侧窗口中有一个用于显示目录的典型树形视图。在树形视图中,每个表项显示一个标题,有时还会显示一幅图像,图像和标题分别提供了对数据的形象和抽象描述。树形视图非常适合显示像目录、网络结构等这样的复杂数据,传统的列表框不能分层显示数据,因此树形视图可以看作是对列表框的一种重要改进。 树形视
15、图是一种复杂的控件,它的复杂性体现在数据项之间具有分支和层次关系。另外,树形视图可以在每一项标题的左边显示一幅图像,这使控件显得更加形象生动,但同时也增加了控件的复杂程度。,返回,8.2.6 列表视图控件,1. 列表视图的4种格式 2. 列表视图控件使用实例,返回,1. 列表视图的4种格式,列表视图(List View)用来成列地显示数据。在Windows的资源管理器的右侧窗口中就有一个典型的列表视图。列表视图的表项通常包括图标(Icon)和标题(Label)两部分,它们分别提供了对数据的形象和抽象描述。列表视图控件是对传统的列表框的重大改进,它能够以下列4种格式显示数据。读者可以在资源管理器
16、中的视图(View)菜单中切换列表视图的显示格式。 大图标格式(Large Icons)。可逐行显示多列表项,图标的大小可由应用程序指定,通常是3232像素,在图标的下面显示标题。 小图标格式(Small Icons)。可逐行显示多列表项,图标的大小可由应用程序指定,通常是1616像素,在图标的右面显示标题。表项以行的方式组织。 列表格式(List)。与小图标格式类似,不同之处在于表项是逐行多列显示的。 报告格式(Report或Details)。每行仅显示一个表项,在标题的左边显示一个图标,表项可以不显示图标而只显示标题。表项的右边可以附加若干列子项(Subitem),子项只显示正文。在控件的
17、顶端还可以显示一个列表头用来说明各列的类型。列表视图的报告格式很适合显示报表(如数据库报表)。,返回,8.3 控件通用技术,8.3.1 控件窗口 8.3.2 控件的创建方法 8.3.3 访问控件的方法 8.3.4 控件及控件对象的删除 8.3.5 控件通知消息,8.3.1 控件窗口,确切地说,所有的控件都是子窗口。控件窗口都具有WS_CHILD风格,它们总是依附于某一个父窗口。所有MFC的控件类都是基本窗口类CWnd的直接或间接派生类,因此可以调用CWnd类的某些成员函数来查询和设置控件。,返回,8.3.2 控件的创建方法,控件的创建有自动和手工两种常用方法。 (1) 自动构建一个控件对象。
18、通常的做法是把控件对象嵌入到父窗口(如对话框)对象中,即以成员变量的形式定义一个控件对象。这样,在构建父窗口对象时,控件对象会被自动构建。 (2) 手工调用控件对象的Create成员函数创建控件。 一般来说,如果要在对话框中创建控件,那么应该在OnInitDialog函数中调用,如果要在非对话框窗口中创建控件,则应该在OnCreate函数中调用Create。控件的手工创建是在程序中通过控件对象完成的,与对话框模板无关。在Create函数中,需要提供控件的风格、控件的尺寸和位置、控件的ID等信息。手工创建实际上是一种动态创建过程,程序可以在任何时候根据需要来创建,不一定非要在OnInitDial
19、og中进行。,返回,8.3.3 访问控件的方法,控件是一种交互的工具,应用程序需要通过某种方法来访问控件以及对其进行查询和设置。访问控件有4种方法: (1) 利用对话框的数据交换功能访问控件。 (2) 通过控件对象来访问控件。 (3) 利用CWnd类的一些用于管理控件的成员函数来访问控件。 (4) 用CWnd:GetDlgItem访问控件。,返回,8.3.4 控件及控件对象的删除,当关闭父窗口时,控件会被自动删除,因此在一般情况下不必担心删除问题。如果由于某种需要想手工删除控件,可以调用CWnd:DestroyWindow来完成。 对于控件对象的删除,有两种情况。若控件对象是以成员变量的形式创建的,那么该对象将会随着父窗口对象的删除而被删除,因此在程序中无需担心。若控件对象是用new操作符在堆中创建的,则必须在关闭父窗口时用delete操作符删除对象,这是因为所有MFC的控件类都是非自动清除的。,返回,8.3.5 控件通知消息,1. 标准控件的通知消息 2. 高级控件的通知消息,返回,1. 标准控件的通知消息,控件通过向父窗口发送控件通知消息来表明发生了某种事件。例如,当用户在按钮上单击鼠标时,按钮控件会向父窗口发送BN_CLICKED消息。标准控件的通知消息实际上是通过WM_CO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 我的母亲试题及答案老舍
- 育婴师考试中的实习经验总结试题及答案
- 药剂生物药剂学基本知识题及答案
- 激光应用中的环境适应性试题及答案
- 科技行业税务筹划的方法探讨试题及答案
- 申请发明专利需要的条件试题及答案
- 病句测试题目及答案
- 四年级品德与社会下册第三单元交通与生活3从古到今话交通教学设计和课后反思新人教版
- 医学基础知识涵养与能力试题及答案
- 能力资产面试题及答案
- 新能源汽车检测与维修技术专业课件
- 2025年营口职业技术学院高职单招(数学)历年真题考点含答案解析
- 2025-2030中国动物源胶原蛋白行业销售格局与推广策略研究分析研究报告
- 江西省八所重点2025届高三下学期4月联考(二模)政治试卷(含答案)
- 安保人员安全培训课件
- 房建工程施工现场文明施工管理标准
- 2025年中国光伏电池市场发展现状调研及投资趋势前景分析报告
- 2025年03月福建省气象局事业单位笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 中国钓鱼行业发展监测及投资战略规划研究报告
- 2025年上海嘉定区江桥镇企业服务有限公司招聘笔试参考题库附带答案详解
- 2025年高考语文二轮复习策略讲座
评论
0/150
提交评论