第9章-子窗体控件_第1页
第9章-子窗体控件_第2页
第9章-子窗体控件_第3页
第9章-子窗体控件_第4页
第9章-子窗体控件_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

Windows程序设计教程第9章子窗体控件

在Windows应用程序中,控件是人机交互的一个重要角色。例如,对话框中的按钮、下拉列表框、编辑框等都是控件。在VisualC++中,MFC提供了许多控件类。通过这些封装好的控件类,用户可以方便地创建和使用控件。本章将依次讲解Windows中的常用标准控件。通过本章的学习,读者可以熟练地为对话框添加和使用控件。

Windows标准控件9.1创建控件9.2按钮控件9.3编辑控件1.4树形控件9.59.1Windows标准控件

Windows操作系统有着大量的标准控件,控件随处可见。读者可以任意打开一个窗口或是对话框,可以看到各式各样的控件。本节将对Windows的标准控件做详细介绍。9.1.1控件概述

VisualC++提供了许多常用的标准控件。通过VisualC++对话框编辑器和控件工具栏,可以将它们加入到对话框中。

VisualC++中的控件工具栏如图9.1所示。

图9.1控件工具栏

9.1.2窗口类CWnd所有控件类都是CWnd类的派生类,CWnd类的所有成员函数在控件类中都可以使用。在MFC中,CWnd类是一个很重要的类,它封装了Windows窗口句柄HWND。在Windows编程中,每一个窗口都是由窗口句柄标识的。

但是,CWnd类的对象和窗口句柄之间的概念并不是等同的。

CWnd对象的创建和销毁,是由CWnd类的构造函数和析构函数完成的,而Windows窗口是Windows内部的一种数据结构,它由CWnd类的Create成员函数创建,由其析构函数销毁。

一般情况下,创建一个窗口需要两步:首先,调用CWnd类的构造函数,构造一个CWnd对象,然后调用CWnd的成员函数Create(),创建窗口。

当用户要关闭该窗口时,可以销毁与窗口相关的CWnd对象,或者调用CWnd对象的成员函数DestroyWindow(),删除窗口并销毁其数据结构。下面分别给出在CWnd类中定义的各种经常用到的成员函数的定义及功能。1.改变窗口状态在CWnd类中,改变窗口状态的常用成员函数的定义及功能如表9.2所示。

2.改变窗口位置在CWnd类中,改变窗口位置的常用成员函数的定义及功能如表9-3所示。

3.使窗口失效,引发重绘

在CWnd类中,使窗口失效,引发重绘的常用成员函数的定义及功能如表9-4所示。

4.窗口查找在CWnd类中,查找窗口的常用成员函数的定义及功能如表9-5所示。

5.时钟

在CWnd类中,与时钟有关的常用成员函数的定义及功能如表9.6所示。

6.可以利用重载来添加消息处理的虚函数

在CWnd类中,常用的消息处理的虚函数的定义及功能如表9.7所示。

9.2创建控件

在VisualC++中,创建控件有两种方法:一种是静态创建,另一种是动态创建。

(1)静态创建:所谓静态创建,就是在对话框模板中利用控件工具栏,直接将控件拖动到对话框上,然后通过ClassWizard为控件添加变量、消息响应函数。

(2)动态创建:所谓动态创建,就是在编写代码时利用控件对应的控件类构造一个控件对象,然后调用Create()函数来创建该控件。9.2.1静态创建控件创建静态控件时必须先建立一个容器。该容器一般是对话框。然后从工具窗口中拖动出所需要的控件放到容器(对话框)中,再适当修改控件ID,设置控件的属性即可。

图9.2对话框模板

图9.3对话框资源编辑器

图9.4快捷菜单

图9.5【PushButtonProperties】对话框

图9.6设计后的主对话框

图9.7【MFCClassWizard】对话框

图9.8程序sample0901的运行结果

9.2.2动态创建控件

使用手动添加控件的方法,用户也能够向窗口中添加所需的控件,灵活性很大。与静态创建控件的方法相比,动态创建控件需要调用Create()函数。动态创建控件的过程如下所述。

(1)创建控件ID。

ID是控件的标识,创建控件前必须先为它设置一个ID。(2)建立控件对象。不同种类的控件对应着不同的控件对象。

(3)调用控件对象的Create()函数创建动态控件。(4)响应动态控件。(5)回收资源。不同种类的控件所调用的Create()函数参数意义有所不同。

下面通过动态创建按钮控件来向读者具体展示动态创建控件与静态创建控件的不同。1.动态创建控件

图9.9【StringProperties】对话框

图9.10查看编辑器2.响应动态控件

与静态创建控件不同,动态控件的响应不能使用ClassWizard添加,而只能手动添加。下面为上例所创建的按钮控件添加消息响应。

图9.11程序sample0902的运行结果

图9.12【AddMemberFunction】对话框

图9.13程序sample0902的运行结果9.3按钮控件

按钮控件是最常用的控件。在Windows中,按钮控件分为3种:下压式按钮、单选按钮和复选框。在上一节已经对下压式按钮进行了详细介绍。下面将对单选按钮和复选框进行介绍。9.3.1单选按钮单选按钮由一个圆形按钮和一个静态文本框组成。单选按钮可以有选中和未选中两种状态。当单击它时,会在中间显示一个小黑点,否则为空。单选按钮经常是成组出现的,但一次仅可以选择一组中的一个单选按钮。

单选按钮的主要方法有两种:GetCheck()和SetCheck()。其中,GetCheck()函数用于获取单选按钮的选中状态,SetCheck()函数用于设置单选按钮的选中状态。二者原型如下:

int

GetCheck()const;voidSetCheck(int

nCheck);

(1)BN_CLICKED:当用户选择该控件时,产生该事件。按钮父窗口通过WM_COMMAND消息接收该通知消息。(2)BN_DOUBLECLICKED:当用户双击该控件时,产生该事件。

图9.14设计对话框资源

图9.15【MFCClassWizard】对话框

图9.16添加成员变量

图9.17【AddMemberFunction】对话框

图9.18程序smaple0903的运行结果

9.3.2复选框

复选框由一个方框标记和一个静态文本框组成。同单选按钮一样,复选框也可以有选中和未选中两种状态。当单击它时,会在中间一个对号,否则为空。

复选框可以单个出现,也可以成组出现。当复选框成组出现时,可以选择一个或多个复选框。

复选框的主要方法和事件同单选按钮的一样,在此不在赘述。

图9.19设计对话框资源

图9.20【MFCClassWizard】对话框

图9.21程序运行结果9.4编辑控件编辑框用来进行文本输入和编辑,有多行和单行编辑框之分。

CEdit类封装了编辑框的功能。单行编辑框一般用来输入单行数据,如名字、密码等。多行编辑框一般用来输入大段文字,如内容介绍、记事本等。

因此,编辑框控件通过选取样式,可具有如下功能:(1)可自动转换用户输入,如大小写的转换等;(2)可使用某个字符(如密码输入的*)代替显示用户的输入;(3)可支持多行编辑等。

9.5树形控件

树形控件在大多数的系统中都会使用到。该控件以其层次鲜明、操作简便的优点得到广大开发人员以及使用人员的认可。9.5.1树形控件概述

树形控件可以用于树形的结构。其中有一个根接点(Root),然后下面有许多子节点,而每个子节点上允许有一个、多个或没有子节点。

树形控件的风格可以通过其属性对话框的【Styles】和【MoreStyles】选项卡进行设置。树形控件的属性对话框如图9.22所示。

图9.22树形控件的属性对话框

9.5.2树形控件的使用在树形控件中每个节点都有一个句柄(HTREEITEM),同时添加节点时提供的参数为该节点的父节点句柄。其中根Root节点只有一个,既不可以添加也不可以删除。

添加节点的函数如:HTREEITEMInsertItem(LPCTSTRlpszItem,HTREEITEMhParent=TVI_ROOT,HTREEITEMhInsertAfter=TVI_LAST);

图9.23设计对话框资源

图9.24设计树形控件属性

图9.25程序sample0905的运行结果小结本章主要介绍了Windows应用程序中的控件。控件是应用程序中人机交互的重要桥梁。本章主要介绍的是应用程序中的常用控件,包括按钮控件、编辑控件、树形控件等。其中,按钮控件与编辑控件使用率更高一些。另外,Windows的控件还有许多,请读者尝试使用。上机指导

实验一:熟悉标准控件实验内容通过使用控件工具栏,向对话框中添加各种控件。实验目的熟悉工具栏,并能向对话框中添加各种控件。

实现思路在9.1.1节中介绍了Windows中的各种标准控件。创建一个基于对话框的应用程序,然后从控件工具栏中拖动各个控件到对话框中,熟悉各种控件。

实验二:使用树形控件实验内容创建一个树形控件,能把当前所选择选项的文字显示在弹出的消息对话框中。

实验目的熟

温馨提示

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

评论

0/150

提交评论