《mfc程序设计一》实验指导书.doc
文本预览下载声明
实验十、MFC程序设计一
一、实验目的
熟悉Visual Studio 2010 C++ 基于对话框的MFC应用程序之设计方法,了解可视化编程环境下对话框及常规控件的基本属性、事件(消息)和方法,掌握消息的映射及处理机制、对话框的初始化、控件基本属性的设置、基本事件的处理及基本方法的运用。
二、实验内容
本次实验将在一个统一的解决方案(Solution)下创建数个对话框项目(Project),以演练各种常规控件的运用:
按钮控件项目
滚动条控件项目
静态控件项目
列表框控件项目
编辑框控件项目
组合框控件项目
综合项目(简单计算器)
三、知识准备
对话框及其控件
Windows应用程序的功能,基本上都是以菜单的形式进行组织的。通过菜单,可以访问一个程序的全部功能。而单击菜单项执行某个功能时,又通常是以对话框的形式将这个功能呈现在用户面前。因此,熟练地掌握对话框资源的创建及使用,对程序员来说,可以说是一个基本功。
对话框是一种特殊的窗口,绝大多数情况下,对话框没有菜单和工具栏,不能放大、缩小,而且用户必须明确地作出【确定】或【取消】之类的选择,才能返回到主窗口去执行其他的功能(模式对话框)。在对话框“宽阔”的怀抱里,只有许许多多的“孩子”——控件。从这个角度看,对话框的创建和使用,实际上主要就是控件的创建和使用。
设置控件的ID及通过ID访问控件
在Visual Studio这样的可视化开发环境下,对话框及其控件的创建是一件轻而易举的事。需要加以关注的,主要就是,需要用代码来访问的那些控件(通常是Static Text以外的其他控件),程序员必须记得给它设置一个有意义、好记忆的ID。通俗一点说,我们也可以认为是给控件命名(取个名字)。比如IDC_OK、IDC_CANCEL、IDC_STUDENTNO、IDC_NAME、IDC_BIRTHDATE就是比较好的ID定义。
当我们将一个控件从工具箱添加到对话框后,系统为之自动设置了一个ID,例如:IDC_BUTTON1,IDC_EDIT1,IDC_COMBO1。显然,这样的ID对于程序员而言几乎没有意义。因此,在开始程序代码编写前,程序员首先要做的,就是将系统自动设置的默认的ID改为一个适当的值。
那么怎么来给控件设置ID呢?非常简单!我们只需要打开对话框资源,右键单击要设置ID的控件,系统就会显示一个上下文菜单。然后,从上下文菜单中选择执行【属性】功能,系统将显示一个“属性”视窗。如下图所示,“属性”视窗按照ASCII顺序或分类列出相关对象或控件的种种属性,每一个属性项目中,左边一列显示属性的名称,而右边的列就是属性的值。要设置控件的ID,当然就是要从中找到名为ID的项目,然后在右边的列中修改这个属性的值。
比如上面的属性视窗中,您可以将ID右边的IDC_BUTTON1改为适当的值,例如IDC_SAVE。一旦设定了控件的ID,我们就可以通过这样的代码来设置这些控件:
添加控件变量并通过控件变量访问控件
像上面的示例那样,要通过ID来访问控件(设置、获取控件的属性),每次都需要先通过GetDlgItem()函数先获得控件的指针,然后才能通过其他对象函数来访问控件。如果要频繁地操作控件,显然有点麻烦。为简化操作,可以先给控件添加一个变量(这个变量将成为对话框类的数据成员),用这个变量代替ID来访问控件,事情就会简单得多!
比如,我们可以给前面涉及到的三个控件各添加一个变量:
控件ID 变量名称
IDC_BUTTON1 m_Btn1
IDC_SAVE m_Save
IDC_CHECKME m_Checkme
IDC_EDITNAME m_Editname
那么,就可以用这样的代码来访问控件:
很显然,这里的代码比前面的代码要简单很多!
现在的问题是,我们如何给控件添加变量呢?很简单:
从“资源视图”打开对话框
右键单击要添加变量的控件,系统显示下图所示的上下文菜单:
显然,现在应该从上下文菜单中选择【添加变量…】CWinAppEx”类(该类是CwinApp类的一个扩展版本)派生出来的,我们自己的应用程序类“CButtonApp”
Button.CPP:该文件是所创建的MFC应用程序的代码文件,其内容包括:
通过BEGIN_MESSAGE_MAP、END_MESSAGE_MAP等语句实现消息的映射
提供一个“CButtonApp”类的默认构造函数
声明了一个“CButtonApp”类的全局应用程序变量“theApp”
实现“CButtonApp”类应用程序实例的初始化函数
ButtonDlg.H:对话框的头文件,该文件的内容主要是从“CDialog”类派生出我们自己的对话框类“CButtonDlg”。除此之外,亦在此声明了一个图标类型的
显示全部