VisualC程序设计与应用教程_第1页
VisualC程序设计与应用教程_第2页
VisualC程序设计与应用教程_第3页
VisualC程序设计与应用教程_第4页
VisualC程序设计与应用教程_第5页
已阅读5页,还剩77页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

16.1控件概述

控件(Control)是一种子窗口,应用程序用它来与其他窗口进行简单的输入输出操作。Windows提供的控件分为两类:Windows95之前就已经支持的标准控件,这些控件主要包括静态控件、按钮控件、编辑框控件、列表框控件、组合框控件等Windows95及以后操作系统支持的通用控件。如下表所示从旋转按钮、进度条直到图像列表等。

236.1.1控件的创建控件的创建分为静态创建和动态创建两种方式。静态创建是指在对话框模板创建控件,并设置控件的属性,这样,在调用该对话框时,窗口系统会自动按预先的设置为对话框创建控件。动态创建是指在程序的运行中根据需要,定义一个控件类的对象,再通过窗口函数Create()创建控件。46.1.2控件的组织

1.编排控件编排控件有两种方法:使用控件布局工具栏5使用Layout菜单。当打开对话框编辑器时,DevelopStudio的菜单栏上会增加一个菜单Layout。62.调整Tab顺序

TabOrder规定了使用Tab键访问控件的顺序,默认的TabOrder是控件生成的顺序,选择菜单项Layout|TabOrder可以显示并修改TabOrder。

改变TabOrder的方法是:选择TabOrder菜单项、出现了顺序号之后,按所需的访问顺序依次单击每一个控件,然后,单击空白处。76.1.3控件的共有属性

Windows标准控件的属性窗口通常由General、Styles和ExtendedStyles3个属性标签构成。

8General标签页中设置控件共有属性,通常包括:

(1)ID

程序通过控件ID来访问一个控件。所有的控件中,只有StaticBox控件和GroupBox控件的ID是可以重复,一般使用默认设置IDC_STATIC,而其他类控件的ID在一个应用程序中应该是惟一的。9

(2)Visible

设置对话框打开时控件是否可见。它的类型是布尔类型。默认为TRUE,即运行程序时显示控件。10

(3)Disabled

设置当对话框在打开时该控件是否不可用,它的类型是布尔类型,默认为FALSE。

(4)Group

标记一组控件中的第一个控件。11

(5)Tapstop

设置TAB键是否可以该控件上驻留,它的类型是布尔型,默认值为TRUE。

(6)HelpID

分配一个帮助ID给一个控件。这个帮助ID建立在资源ID基础上。它的类型是布尔型,默认为FALSE。126.1.4控件的访问访问控件一般有3种方法:

利用对话框的数据交换功能访问控件适用于静态创建的控件,通过调用UpdateData()函数,实现对话框和控件的数据交换。通过控件对象来访问控件利用CWnd类的成员函数来访问控件

13

静态控件(StaticControl)是用来显示一个文本串或图形信息的控件,包括静态文本控件、图片控件和组框。所有静态控件默认的ID标识都为IDC_STATIC,如果需要在程序中区分和操纵各个不同的静态控件,必须重新为它指定一个惟一的ID标识。

6.2

CStatic类控件14

6.2.1

静态文本(StaticText)控件

静态文本控件不要求与对话框进行交互,需要显示的文本串只要在该控件属性对话框的General标签中的Caption属性中直接输入。

15

在Styles标签页中设置静态文本文本的显示风格:

1.Aligntext

控制静态文本控件中文本的对齐方式。可能的取值有Right(右对齐),Left(左对齐),Center(居中),当Nowrap选项选中时,这个选项设置为Left,它的默认值为Left。16

2.Centervertically

静态文本控件中文本在垂直方向上居中。它的类型是布尔型,默认值是FALSE。

3.Noprefix

禁止文本中的“&”解释为它后面的字符有一个下划线,而直接将它作为文本的一部分进行显示。Noprefix选项经常在显示包含“&”的文件名或字符串中用到。17

4.Nowrap

以左对齐的方式来显示文本,并且不进行文本的自动回行。超出控件右边界的文本将被裁去。

18

5.Simple

此选项将禁用Nowrap和Aligntext选项。它的类型是布尔型,默认值是FALSE。

6.Notify

此选项表示当控件被选中或双击时,通知父窗口。此选项的类型是布尔型,默认值是FALSE。

19

7.Sunken

此选项表示围绕静态文本控件的文本,建立一个凹下的边框。它的类型是布尔型,默认值是FALSE。

8.Border

此选项表示围绕静态文本控件的文本,建立一个边框。它的类型是布尔型,默认值是FALSE。20

6.2.2图片(Picture)控件

用来显示边框、矩形、或位图等图形。编辑时,首先必须创建位图或图标资源,即要插入一个Bitmap(位图)或Icon(图标)。静态图片控件的一般属性和风格属性中各项的含义如下:

21图片类型,可以选择Frame(框)、Rectangle(矩形区域)、Icon(图标)、Bitmap(位图)、EnhancedMetafile(增强图元文件)当图片类型为Icon和Bitmap时,通过此框可选择指定的资源ID号设置Frame和Rectangle的颜色22选中时,用户重置图片大小时,图片的右下角是固定不变的选中时,图片显示在控件的中央,其余区域由图片左上角的像素颜色来填充选中时,按图片的实际大小来显示,超过控件区域的部分被剪裁236.3

CEdit类控件

MFC的CEdit类封装了编辑框(EditBox),编辑框又称文本框或编辑控件,也是一种常用的控件。编辑框一般与静态文本控件一起使用,用于数据的输入和输出。246.3.1编辑框的风格

通过Styles标签页的设置,可以得到不同类型的编辑框样式:多行编辑框、密码编辑框,只读编辑框,大小写转换编辑框、数字编辑框等等。25

1.Aligntext

控制编辑控件中的文本对齐方式。可能的取值有左对齐、居中和右对齐。

2.Multiline

定义该编辑控件为多行文本编辑。通常情况下,该选项不被选中。

26

3.Number

限定用户输入的只能是数字。

4.Horizontalscroll

在多行编辑控件中提供一个水平滚动条。默认该选项不被选中。27

5.AutoHScroll

当用户在编辑框的最右边输入字符时,文本自动进行滚动。该选项通常被选中。

6.Verticalscroll

在多行编辑控件中提供一个垂直滚动条。默认该选项不被选中。

28

7.AutoVScroll

在多行编辑控件中,当用户在最后一行按回车键时,文本自动向下滚动。默认该选项不被选中。

29

8.Password

当用户在编辑控件中输入字符时,在编辑框中不显示输入的文本,而是相同个数的“*”字符。这一选项在多行编辑控件中不能使用。默认不被选中。30

9.Nohideselection

当编辑控件失去或重新获得焦点时,该项设置将改变文本的显示方式,使编辑框中选择的文本好像总是处于选中状态。默认该选项不被选中。

10.OEMconvert

对用户输入内容进行从Windows字符集到OEM字符集的转化。

31

11.Wantreturn

应用于多行编辑控件。该选项允许在编辑控件中按Enter键换行,而不影响对话框的默认按钮。

12.Border

为控件创建边界,该选项默认被选中。

32

13.Uppercase

将所有的输入内容转化为大写字符,默认不被选中。

14.Lowercase

将所有的输入内容转化为小写字符,默认不被选中。

15.Read-only

禁止用户在编辑控件中输入或修改其内容,默认不被选中。

336.3.2编辑框的基本操作利用MFC的CEdit类提供的成员函数可以实现编辑框的各种操作。编辑控件的默认模式是在一行内显示所有编辑文本。下表介绍了通用CEdit类的方法。3435366.3.3编辑框的通知消息

37【例6.1】编写一个基于对话框的MFC应用程序Li6_1,该应用程序维护着一张记录合法用户的用户名和密码的列表,只有合法用户才能通过登录程序,如图所示。要求输入后密码以“#”代替显示。386.4

CButton类控件CButton类控件包括按键按钮、单选按钮、复选框和组框等4种类型。在被按下时会立即执行某个命令,也被称为命令按钮用于在一组互相排斥的选项中选择其中一项用于在一组选项中选择其中一项或多项使一组控件关联起来,经常与一组单选按钮或复选框一起使用39

可以通过Style标签页设置一些与控件风格有关的属性,不同的控件所设置的属性不相同。下图为Button控件的Styles。1.按键按钮40

由一个圆圈和紧随其后的文本标题组成,当它被选中时,圆圈中就标上一个黑点。通常将一组单选按钮放在一个组框控件中,在一组单选按钮中,第一个(Tab键顺序)按钮最重要,其ID值可用于在对话框中为控件建立关联的成员变量。必须为同组中的第一个单选按钮设置Group属性,而同组的其他单选按钮不可再设置Group属性。

2.单选按钮41

由一个空心方框和紧随其后的文本组成,当它被选中时,空心方框中就加上一个“√”或“×”标记。不同于单选按钮,在一组复选框中每次可以同时选择多项。

3.复选按钮42

用来显示一个文本标题和一个矩形边框,通常用来作为一组控件周围的虚拟边界,并将一组控件组织在一起。

4.组框43

6.4.2 按钮控件的基本操作44

6.4.3

按钮控件的通知消息常见的有两个:BN_CLICKEDBN_DOUBLE_CLICKED45

【例6.2】编写一个基于对话框的MFC应用程序Li6_2,程序运行时,用画刷填充一块矩形区域,区域颜色及亮度分别由组框中的复选按钮及单选按钮确定。466.4.4位图按钮(CBitmapButton)CButton派生的CBitmapButton类支持标签是位图的按钮控件的建立。47CBitmapButton类可以对按钮弹起、按下、获得焦点和无效状态具有不同的位图。【例6.3】创建一个基于对话框的应用程序,演示位图按钮的使用。486.5

CListBox类控件Windows提供如下几种列表类型控件:列表框、组合框、列表视控件和树视控件。其中列表框是一种最简单的列表类型控件。常用来显示类型相同的一系列清单,如文件、字体和用户等。49

按性质来划分,列表框风格有单选、多选、扩展多选以及非选等四种类型。列表框控件属性的Styles标签页如下图所示,具体属性设置如下:6.5.1列表框的风格50设置列表框中选项的选中方式。有4个选项:Single,表示在给定的选项中,至多有一个被选中;Multiple,表示可以有多个选项被选中,但忽略Shift键和Ctrl键;Extended,允许选择多个选项,在选择时,可以使用Shift键和Ctrl键;None,不允许选择任何选项。设置列表框将由列表框所有者来绘制,在大多数情况下,该选项设置为No51设置列表框内容应按字母顺序排序,该选项通常被选中创建一个多列列表框,该选项通常未选中设置列表框中显示的文本选项可以包含标签页,该选项通常未选中设置列表框有输入焦点,当按键时列表框所有者收到WM_VKEYTOITEM或WM_CHARTOITEM消息。该选项通常未选中即使不需要,也显示一个垂直滚动条。该选项通常未选中526.5.2列表框的基本操作

536.5.3列表框的通知消息54【例6.4】编写一个对话框应用程序Li6_4,对话框中有一个列表框,当用户单击列表框中的一个列表项(一位学生)时,在5个编辑框中分别显示这个学生的姓名、学号、性别、年龄及班级。单击添加按钮时,“姓名”编辑框中的文本将被添加到列表框中;单击删除按钮时,当前的列表项将被删除。556.6

CComboBox类控件的使用

6.6.1

组合框的属性

组合框控件是把编辑框和列表框控件组合起来的一类控件。按风格特征,可把组合框分为3类:简单组合框、下拉式组合框和下拉式列表框。561.简单组合框(Simple)

显示一个编辑控件和列表框。该列表框总是可见的。当列表框包含的选项太多,显示不下时,将使用一个滚动条在整个列表框中滚动。2.下拉式组合框(Dropdown)

除了包含一个编辑框和列表框外,还包含一个下拉按钮。仅当单击下拉按钮时才出现列表框。编排控件时单击下拉按钮,当光标变成“”形状时,可以调整程序运行后列表框部分显示的大小(单击下拉按钮),如图所示。57583.下拉式列表框(DropList)

与下拉式组合框相似,只有被用户打开时,才显示列表框。同时,编辑框只能显示选中的选项,而不允许用户输入。因此,用户只能从列表框中选择选项。59

组合框大部分属性与编辑框或列表框相关的属性有相同的意义,但它有一个新的功能属性,即可以通过组合框控件属性对话框的Data选项卡添加初始的列表项,如下图所示。注意,每输入完一个列表项,按下Ctrl+Enter键后才能换行输入下一项。606.6.2组合框的基本操作

组合框的操作可以分为两类:对组合框中的列表框进行操作和对组合框的编辑控件进行操作。61626.6.3

组合框的通知消息

在组合框的通知消息中,有的是列表框发出的,有的是编辑框发出的。63【例6.5】将例6.4中列表框改用组合框,完成同样的功能。如图6.17所示。646.7

CSpinButtonCtrl类控件

旋转按钮(spin)控件也称为上下控件或微调控件,是一对箭头按钮,用户单击它们来增加或减小某个值,这个值表示旋转按钮的滚动位置或相应控件中的一个数字。

—个旋转按钮控件通常是与一个相伴的控件一起使用的,这个控件称为“伙伴窗口”。若相伴的控件的Tab键次序刚好在旋转按钮控件的前面,则这时的旋转按钮控件可以自动定位在它的伙伴窗口的旁边,看起来就像一个单—的控件。656.7.1旋转拨钮控件常用的风格控件放置方向:Vertical(垂直)、Horizontal(水平)控件在伙伴的位置安排:Unattached(不关联)、right(右边)、left(左边)自动选择一个TabOrder中的前一个窗口作为控件的伙伴窗口使控件设置伙伴窗口数值,这个值可以是十进制或十六进制不在每隔三个十进制数字的地方加上千分隔符当按下向上或向下方向键时,也能增加或减少666.7.2旋转按钮控件的基本操作(1)基数的设置和获取SetBase():用来设置其基数。这个基数值决定伙伴窗口显示的数字是十进制还是十六进制。(2)范围及当前位置的设定和获取SetPos()和SetRange():分别用来设置旋转按钮控件的当前位置和范围。成员函数GetPos()和GetRange()分别用来获取旋转按钮控件的当前位置和范围。676.7.3旋转按钮控件的通知消息

由于对旋转按钮的操作一般只影响它的关联控件,因此MFC将SDK方式下的Windows旋转按钮控件的消息处理封装在MFC旋转按钮类CSpinButtonCtrl中。编程时很少需要程序员处理旋转按钮控件消息。利用C1assWizard类向导可以添加UDN_DELTAPOS和NM_OUTOFMEMORY两种消息的处理函数,当用户单击旋转按钮时发送消息UDN_DELTAPOS,当由于内存不够不能完成滚动操作时发送消息NM_OUTOFMEMORY。68【例6.6】编写一个对话框应用程序MyComctl,程序运行时,用红色填充一块矩形区域,该区域的宽度由旋转按钮调节。696.8

CSliderCtrl类控件

滑动条控件是由滑动块和可选的刻度线组成的.当用户用鼠标或方向键移动滑动块时,该控件发送通知消息来表明这些改变。滑动条按照应用程序中指定的增量移动。706.8.1滑动条的风格控件放置方向:Vertical(垂直)、Horizontal(水平),缺省为Horizontal刻度线在滑动条控件中放置的位置在滑动条控件上显示刻度线在滑动条控件上的每个增量位置处都有刻度线,并且增量大小自动根据其范围来确定控件周围有边框控件中供用户选择的数值范围高亮显示716.8.2滑动条的基本操作MFC的CSliderCtrl类封装了滑动条控件的各种操作,包括范围、位置设置和获取等。(1)滑动条位置和范围的设置和获取SetPos()和SetRange():分别用来设置滑动条的位置和范围。GetPos()和GetRange():分别用来获取滑动条的位置和范围。72(2)刻度线尺寸的设置和清除SetTic():用来设置滑动条控件中的一个刻度线的位置。SetTicFreq():用来设置显示在滑动条中的刻度线的疏密程度。ClearTics():用来从滑动条控件中删除当前的刻度线。(3)选择范围的设置SetSelection():用来设置一个滑动条控件中当前选择的开始和结束位置。736.8.3滑动条控件的通知消息

当滑动块滑动时,将发送滚动消息来通知父窗口,垂直滑动块发送WM_VSCROLL消息,水平滑动块发送WM_HSCROLL消息。74【例6.7】完善例6.6中的应用程序MyComctl,程序运行时,用滑动条调整RGB的3个颜色分量,并根据指定色填充矩形区域。756.9CProgressCtrl类控件

进度条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论