第5章常用控件介绍控件是Windows应用程序的图形界面的重要组成部分,用户可以通过控件完成与应用程序的交互。控件其实在MFC中是对数据和方法的封装,当然控件就有自己的属性和方法。在MFC中,所有的控件都是由CWnd类派生来的,所以控件可以作为对话框的子窗口而创建。本章以对话框程序为基础介绍一些基本和常用的控件,学习掌握Windows控件一般的使用方法和步骤。5.1Button按钮Button按钮是在Windows应用程序中最常见的控件之一。如确定、取消、QQ登录,Button按钮无处不在。这一节中主要介绍Button按钮的添加,利用其控件变量和消息响应函数来完成应用程序的操作。5.1.1创建一个Button按钮利用第4章所述方法,创建一个项目名为Test1的对话框应用程序。为对话框拖一个ID为IDC_BUTTON_OPEN,Caption为“打开”的Button按钮。同时删除对话框中间的静态文本“TODO:在这里设置对话框控制”。5.1.2手工添加一个按钮我们在对话框上拖一个按钮后,用户不仅看到对话框上多了一个按钮,并且可以在ResourceView中可视化查看该按钮的形状、属性等。现在我们手工添加一个关闭按钮帮助读者明白Windows是怎样管理资源的。5.1.3为按钮添加控件变量Button按钮可以看成是一个小的窗体,用所关联的变量就可以调用CButton类中提供的方法对按钮进行各种操作。5.1.4编写一个按钮程序这一小节通过编写一个小的按钮程序说明控件变量是怎样调用类中封装方法对来实现一些功能。因为CButton类是CWnd的派生类,所以CButton对象也可以调用CWnd类中的方法。这个小程序用到的方法是CWnd::EnableWindow()。EnableWindow()方法可以使按钮失效,即不接受键盘和鼠标的操作。在Windows程序中经常会见到有的按钮是灰色的无法单击。5.2Edit编辑框控件Edit编辑框控件也是Windows程序中最常见的一个控件之一。例如,你要登陆QQ得先输入账号和密码,而编辑框正是接收账号和密码的载体。掌握编辑框的常用操作是学习VC++必不可少的一步。这一节主要介绍编辑框与变量之间的数据交换、用Edit控件类型的变量来对编辑框进行直接操作和设置编辑框为密码输入。5.2.1创建两个Edit控件创建一个项目名为Test2的对话框应用程序,拖动两个Edit控件到上面。我们将通过VC++可视化开发环境修改其属性类型,并查看代码的相应变化。5.2.2编写一个登陆界面程序利用上面添加的两个编辑框控件,设计一个登陆界面,用弹出对话框形式获得登陆的账号和密码。单击“登陆”按钮后。5.3单选按钮使用单选按钮(RadioButton)从一组选项中选择唯一一个选项,当我们在填写表格时经常会用到。例如,在一组职业中选择你的职业等。本节讲解单选按钮最常用的操作及一些特点。5.3.1单选按钮的特点及其应用单选按钮(RadioButton)不同于前面讲的那些控件,它有自己一套独特的操作方式。单选按钮通常以组的方式呈现,在组中选择符合要求的那个选项。5.3.2单选框按钮例子下面举个单选框的小例子,实现单击“查询”按钮弹出用户所选择的职业。5.4复选框按钮复选框按钮(CheckBox)也是Windows提供的又一种很常见的按钮。但是使用的时候不需要像单选按钮那样进行分组。可以使用复选按钮,从一组选项中选择一个选项或多个选项,各个选项之间的选中状态互不相关。本节也只介绍复选框最常用的操作,其它一些属性或控件类型变量的使用可根据前几节介绍的方法自己尝试或查看相应的帮助文档。5.4.1复选框按钮简介有些选择是多项的,例如,你喜欢的蔬菜有哪些,而像性别这样的选项就只能选一个。可以利用上一节所介绍的单选框来处理单项选择问题,还有很多时候我们需要利用复选框来解决多项选择的问题。和单选按钮一样,我们通常把类型相同的选项用组框来作为标示。用ClassWizard可以为每一个复选框按钮关联一个值类型变量用作数据交换使用,该变量是BOOL型,值为TRUE时表示选中了该复选框,值为FALSE时表示没有选中该复选框。5.4.2复选框按钮例子下面通过一个小例子来说明复选框的基本使用。实现单击“查询”按钮弹出一个消息对话框,显示您所喜欢的蔬菜。5.5列表框如果需要从多个数据中进行选择,可以使用列表框(ListBox)实现。使用列表框不仅可以从已有的数据中进行选择,还可以很方便地实现动态添加和删除数据。这一节主要介绍列表框的一些基本属性和常用的操作方法。5.5.1列表框的属性和方法列表框控件在使用的时候需要注意一些基本属性的设置,如果想灵活使用列表框还需要了解它的一些常用的方法使用。5.5.2列表框例子下面举例说明列表框的使用,实现动态创建和删除元素,选中一个元素弹出对话框给予提示。5.6组合框组合框在Windows中很常见,打开浏览器可以看到地址栏其实就是一个组合框,它既可以输入地址又可以点击右边的向下小箭头选择曾经浏览过的网页。5.6.1组合框的属性和常用方法可以把组合框(ComboBox)看成是编辑框和列表框的叠加,它既具有编辑框输入数据的功能,又可以点击下拉箭头进行选择。下面就组合框的一些常用属性和方法进行介绍。5.6.2组合框例子这一小节我们将编写一个模拟浏览器地址栏,且包含输入信息历史记录的小程序,让读者对组合框及控件调用类方法有更进一步认识。实现功能流程如下图所示。信息是否已存在NY输入选择插入调整顺序显示5.7列表视图控件在5.5节讲过列表框,列表视图可以当做是功能增强型的列表框。列表视图控件可以很好的用来显示项目元素,在编写数据库软件时也经常会用到。在Windows系统中文件夹目录也是以列表视图呈现。5.7.1列表视图的四种基本样式列表视图控件(ListControl)在属性中提供了四种基本的样式可供选择,Icon(图标)、SmallIcon(小图标)、List(列表)、Repor(报表)。5.7.2列表视图控件例子这一小节我们利用列表视图写一个记录员工信息的小程序,实现添加、删除员工信息的功能。5.8树形视图树形视图控件(TreeControl)是Windows系统中最常见的控件之一,用于显示具有一定层次结构的数据信息。Windows资源管理器就是典型应用树形视图的例子。5.8.1树形视图的属性树形视图在使用时候会比较复杂些,这里简单介绍怎样构建一个树形结构和树形视图的3个常选的属性Hasbottons、Haslines、Linesatroot。5.8.2树形视图例子这一小节写一个树形控件的例子,实现简单显示地区树形结构。5.9小结本章主要介绍了怎样为对话框添加控件、添加关联变量、调用控件类方法、设置控件属性等内容。其中熟练运用关联变量和控件进行数据交换,调用控件类方法,添加消息响应函数响应用户操作是重点内容;能够熟练查阅MSDN,调用控件类方法是难点内容,需要长时间练习。