VC-MFC编程基础(3)

2019-05-18 19:37

IDC_STATIC5 默认 靠左,垂直居中,Client edge 其中,IDC_STATIC4~5作为结果输出框,分别显示圆周长和圆面积; IDC_STATIC1~3分别作为输入框和输出框的文字说明。 (4)建立命令按钮控件

?建立2个命令按钮,它们的属性值设置如下: ID 标题 IDC_BUTTON1 确定 IDC_BUTTON2 退出

至此,控件在窗体上“摆放”完毕,可以用鼠标调整它们的大小和位置,也可以用调整工具栏调整控件之间的对齐方式、分布、大小规格,以及测试效果,设计好的图形用户界面如图所示。

2.3 设计对象的事件驱动程序 1.设计的工作和方法

对象的事件驱动程序在VC++中称为消息处理成员函数。对于对话框工程,作为工程的主界面,对话框对象需要响应并处理所有的控件消息。设计对话框的消息处理成员函数的工作主要包括:

■确定各个控件要传递的数据;

■确定对象的消息映射,即接收什么消息,建立什么消息处理函数; ■在消息处理函数的函数体内添加代码。

在实际应用中,读取或更新控件上的数据是对话框的非常重要的工作。MFC为此提供了一套标准方法:DDX(Data Exchange,数据交换)和DDV(Data Validation,数据校验)技术。

DDX通过“成员变量”(member variable)的方式实现对话框与控件之间的数据传递。如果要在对话框的消息处理函数中访问控件上的数据,就必须先在对话框类(CCase1Dlg类)中分别为这些控件添加(声明)一个成员变量,每一个成员变量绑定一个控件。在消息处理函数中是通过成员变量访问控件的。

成员变量是对话框的public数据成员。有两类成员变量: Value类成员变量:表示该变量的值为控件的数据。

Control类成员变量:表示该成员变量就代表控件本身,即它是控件的一个对象,其值实际上就是控件的句柄。

DDV用于数据的校验,例如自动校验字符串的长度和取值范围。 使用MFC DDX/DDV的流程是:

①首先定义用于接收控件数据的成员变量。例如,为编辑框IDC_EDIT1定义一个Value类的double型的成员变量,用于接收用户输入的半径值。定义变量的同时可以设定数据取值范围,提供校验。

②然后,在对应的消息处理成员函数中调用MFC函数传递数据。最简单的相关MFC函数有:

UpdateData() //更新成员变量,将控件上的数据传递给成员变量 UpdateData(FALSE) //更新控件,将成员变量的值传递给控件 2. 设计工具和设计方案

完成上述工作可使用VC++提供的一个强大工具——MFC Class Wizard(类向导)。它主要是用来管理工程中的对象和消息及其消息处理函数的,是MFC编程必不可少的重要工具。

对于本实例,可设计如下成员变量和消息处理函数:

■为编辑框IDC_EDIT1定义一个double型的成员变量m_r,用于接收用户在编辑框中输入的半径值;

■为静态文本框IDC_STATIC4和IDC_STATIC5分别定义一个Cstring型成员变量m_girth和m_area用于向静态文本框传递计算结果。静态文本框只能处理Cstring(字符串)型数据。

注意:成员变量名的前缀“m_”是MFC的风格。MFC也有自己的数据类型,不过与C++很相似,容易理解。

■为“确定”按钮建立一个“单击”(BN_CLICKED)消息处理函数,用于计算圆周长和圆面积,并显示计算结果。

■为“退出”按钮建立一个“单击”消息处理函数,用于结束程序的运行。

■建立一个对话框的初始化函数,对成员变量m_r、m_girth、m_area进行初始化。 2. 操作步骤 (1)添加成员变量

?打开“MFC Class Wizard”(类向导)对话框,如图所示。方法可以是:从VC6窗口的菜单栏上的“查看”菜单中选择“建立类向导”选项,或者用鼠标右击窗体,从弹出的快捷菜单中选择“建立类向导”,或者按快捷键Ctrl+W。

?选择“Member Variables”(成员变量)选项卡。从“Control IDs”(控件ID)列表框中,可以看到已经建立的各控件对象的ID。

?为编辑框添加成员变量:选择IDC_EDIT1,单击右边的“Add Variable…”(添加变量)按钮,弹出如图所示的“添加成员变量”对话框。

在第一个文本框(Member variable name)中输入成员变量名,如m_r; 在第二个下拉框(Category)中选择成员变量的种类,Value;

在第三个下拉框(Variable Type)中选择成员变量的数据类型,double。 单击OK按钮。回到“Member Variables”选项卡,设置变量m_r的取值范围,如最小值为0,最大值为1000.0。

?用同样的方法为静态文本框IDC_STATIC4和IDC_STATIC5添加Cstring型成员变量m_girth和m_area,最大字符个数为10。

(2)编写消息处理成员函数 ①主窗口的初始化函数

?切换到类向导的“Message Map”(消息映射)选项卡,如图所示。 ?在“Object IDs”(对象名)列表框中选择主窗口的对象名CCase1Dlg; 在“Messages”(消息)列表框中选择消息WM_INITDIALOG;

此时在“Member functions”(成员函数)列表框中会自动指出相应的MFC已定义的虚函数OnInitDialog。(主窗口对象是由MFC默认生成的)

?单击“Edit Code”(编辑代码)按钮,弹出Case1Dlg.cpp文件的编辑窗口,并显示OnInitDialog()函数的代码清单,找到注释提示处:

// TODO: Add extra initialization here(在此下边添加你初始化的代码) ?对于本实例,可添加如下代码: m_r=0.0;

m_girth=m_area=\

UpdateData(FALSE); //将数据传给控件并显示

②“确定”按钮的消息处理函数 类似上述方法,

?在“Object IDs”列表框中选择IDC_BUTTON1; 在“Messages”列表框中选择消息BN_CLICKED;

?单击“Add Function”(添加函数)按钮,此时在“Member functions”列表框中会出现一个新的函数名OnButton1,表示系统为该对话框生成了一个新成员函数;

?单击“Edit Code”(编辑代码)按钮,弹出Case1Dlg.cpp文件的编辑窗口,并显示OnButton1()函数的代码清单,找到注释提示处:

// TODO: Add your control notification handler code here (在此下边添加控件消息的处理代码) ?对于本实例,可添加如下代码:

UpdateData(); //将编辑框的数据传递给成员变量 double girth=2*3.1416*m_r; //计算圆周长 double area=3.1416*m_r*m_r; //计算圆面积

m_girth.Format(“.3f”,girth); //按格式写入成员变量 m_area.Format(\

UpdateDtata(FALSE); //将数据传给控件并显示

注:函数Fornat()是CString类的成员函数,用来把数据转换成CString类型的字符串。

③“退出”按钮的消息处理函数

?按上述方法,建立IDC_Button2的BN_CLICKED消息处理函数,并在注释提示处输入如下代码:

EndDialog(1); //关闭对话框 2.4 编译链接和运行程序

?用快捷键F7进行编译链接; ?用快捷键Ctrl+F5运行程序。

也可以使用Build菜单中的命令,或工具栏上的快捷按钮。 Case1V2

(1)把编辑框EDIT1的成员变量设置为Contrl类,即有: Member variable name:m_EDIT1 Category:Control Variable Type:CEdit

(2)“确定”按钮的消息处理函数OnButton1()

// TODO: Add your control notification handler code here

double r,girth,area; char s[10];

m_EDIT1.GetWindowText(s,10);

//调用编辑框的成员函数GetWindowText,将编辑框中的数据存到s中 r=atof(LPCTSTR)s); //将字符串s转换为数值 girth=2*3.1416*r; //计算圆周长 area=3.1416*r*r; //计算圆面积

m_girth.Format(“.3f”,girth); //按格式写入成员变量 m_area.Format(\

UpdateDtata(FALSE); //将数据传给控件并显示 注:LPCTSTR是MFC定义的字符串指针类型。 【Job1】 计算矩形(含正方形)的周长和面积 【Job2】 计算圆、矩形和三角形的周长和面积 §3 常用控件

本节介绍几类常用的控件:静态控件、编辑框控件、按钮控件、列表框控件、组合框控件以及滚动条控件。 3.1 静态控件

静态控件的基类是Cstatic。所谓“静态”,是指这类控件只能用于输出信息,而不能接收用户的输入信息,也不会产生任何消息。静态控件对象的ID值都默认为:IDC_STATIC。

有三种标准的静态控件:静态文本框(Static Text)、组框(Group Box)和图片框(Picture)。

静态文本框用于显示文本,主要起标注作用。“标题”(Caption)是其最重要的属性,标题值就是需显示的文本。

组框用于控件分组,使界面对象的功能从视觉上进行区分,主要用于对单选按钮进行分组。主要属性就是“标题”。

图片框有三个重要的属性:

Type(类型):图片类型可选择Icon(图标)、Bitmap(位图)、Enhanced Metafile(增强图元文件)、Frame(框架)、Rectangle(矩形区域)等。

Image(图象):当图片类型为Icon或Bitmap时,通过此属性可以指定资源的ID


VC-MFC编程基础(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:管理学概论作业2016春

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: