控件使用计算器设计.docx

上传人:b****5 文档编号:11800861 上传时间:2023-04-02 格式:DOCX 页数:14 大小:654.15KB
下载 相关 举报
控件使用计算器设计.docx_第1页
第1页 / 共14页
控件使用计算器设计.docx_第2页
第2页 / 共14页
控件使用计算器设计.docx_第3页
第3页 / 共14页
控件使用计算器设计.docx_第4页
第4页 / 共14页
控件使用计算器设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

控件使用计算器设计.docx

《控件使用计算器设计.docx》由会员分享,可在线阅读,更多相关《控件使用计算器设计.docx(14页珍藏版)》请在冰豆网上搜索。

控件使用计算器设计.docx

控件使用计算器设计

本章主要介绍下面几种常用控件。

(1)编辑框(EditBox)

编辑框也叫做文本框,是一个让用户从键盘输入和编辑文字的矩形窗口,应用程序可以从编辑框中获得用户所输入的内容。

(2)静态文本框(StaticText)

静态文本框用来在对话框窗口中标注其他控件。

之所以称其为“静态”文本框,是因为它一般不发出或响应消息,也不参与用户交互,主要起标注作用。

(3)命令按钮(Button)

命令按钮可以触发某个命令的执行。

要注意的是,这种按钮不会被锁定,响应过后会自动弹起,恢复原状。

(4)列表框(ListBox)

列表框是一个放有若干个备选项目(Item)的控制窗口,用户可以从中选择一项或多项。

列表框的尺寸不足以显示全部项目时会自动附加一个纵向滚动条。

(5)单选按钮(RadioButton)

单选按钮的外观是一个圆圈,被单击选中后圆圈中会标上一个黑点。

在一组单选按钮中用户只能而且必须选择其中的一个,其余的单选按钮会自动落选。

也就是说,一组单选按钮是互斥的,但总有一个处于选中状态。

(6)复选框(CheckBox)

复选框的外观是一个空心方框,将其选中后方框中会标上一个“√”(在Windows3.x时代则标记为“×”),在一组复选框中,用户可以选择一个或多个,也可以一个都不选。

就是说,一组复选框相互之间是相容的。

复选框通常与一个布尔量(逻辑量)相联系,用来表示是不是某种事物,或有没有某种性质,或在不在某种状态等。

(7)群组框(GroupBox)

群组框常用于封装一组单选按钮,或集中布置一组复选框。

与静态文本框一样,群组框也不会发出或响应消息。

常用控件的外观如图所示。

常用的控件

使用控件设计计算器

下面从不同的角度来设计风格各异的计算器,以了解如何使用控件。

典型实例——用编辑框、静态文本框及按钮设计计算器

首先用编辑框、静态文本框及按钮来设计一个具有【加】、【减】、【乘】、【除】功能的计算器,如图所示,以此掌握这几个控件的使用。

具有【加】、【减】、【乘】、【除】功能的计算器

典型实例——用编辑框、静态文本框及按钮设计计算器

1.利用APPWizard建立对话框工程“D:

\EXAMPLE\EX_Calculator01”。

(1)选择菜单栏的【File】/【New】命令,将弹出一个如图所示的对话框。

在该对话框中选择【Project】选项卡,在左面的列表框中选中“MFCAPPWizard[exe],接下来在对话框中输入工程名及其路径如下:

·【ProjectName】:

EX_Calculator01

·【Location】:

D:

\EXAMPLE

在【ProjectName】编辑框中输入的是工程的名字。

应尽量按照C++的标识符规则来命名,即只使用字母、数字和下划线“_”,且不以数字开头。

本例我们要建立的工程名字为“EX_Calculator01”。

在【Location】编辑框中输入的是所要建立的工程的存放位置(也可以单击它右侧的…按钮选择所要建立的工程的存放位置)。

本例我们把工程“EX_Calculator01”存放在“D:

\EXAMPLE”文件夹中。

(2)单击OK按钮。

创建应用程序框架

(3)在接下来的【MFCAPPWizard-Step1】窗口中选择将要建立的工程类型,如图所示。

通过MFCAPPWizard可以建立如下3种类型的工程。

·【Singledocument】:

单文档工程。

·【Multipledocuments】:

多文档工程。

·【Dialogbased】:

对话框工程。

我们要建立的是对话框工程,在此处选择【Dialogbased】。

(4)单击Next>按钮。

选择工程类型

(5)在接下来的【MFCAPPWizard-Step2】、【MFCAPPWizard-Step3】以及【MFCAPPWizard-Step4】窗口中均接受默认设置。

(6)在【MFCAPPWizard-Step4】窗口中单击Finish按钮,应用程序基本框架创建完毕(因为在【MFCAPPWizard-Step2】、【MFCAPPWizard-Step3】以及【MFCAPPWizard-Step4】窗口中使用默认设置,所以也可以在【MFCAPPWizard-Step1】窗口中选择工程类型后直接单击Finish按钮)。

(7)程序框架创建完毕后出现如图2-5所示的【NewProjectInformation]窗口,显示MFCAPPWizard为工程“EX_Calculator01”建立的类等信息,单击OK按钮接受图2-5中的信息。

新工程信息

(8)最后,会出现如图所示的待编辑的处对话框窗口。

待编辑的对话框窗口

提示:

因为我们是利用MFC应用程序向导建立应用程序框架,所以在创建新工程时,一定要确保选中【MFCAPPWizard[exe]】。

2.设计计算器窗口(界面)。

在如图所示窗口中,按如图所示设计计算器对话框,具体作法遵循下面的步骤。

(1)在控件(Control)工具栏中选择

编辑框控件、把鼠标移动到计算器窗口的适当位置,按下鼠标左键拖曳鼠标,画出一个大小合适的编辑框。

(2)右键单击编辑框,在如图所示的快捷菜单中选择【Properties】命令。

选择【Properties】命令

(3)在随后出现的【EditProperties】对话框中设置刚刚建立的编辑框的ID属性,如图所示。

设置编辑框属性

本实例我们接受默认的ID属性“IDC_EDITl”。

(4)关闭属性对话框。

(5)按照同样的方法建立【输入数据2】编辑框和【计算结果】编辑框。

(6)设置各个编辑框的名字。

选择控件工具栏中的

静态文本框控件,移动鼠标到编辑框的上部,按下左键拖曳鼠标画出一个大小合适的静态文本框,右键单击该文本框,在弹出的快捷菜单中选择【Properties】命令,弹出如图所示的【TextProperties】对话框,在该对话框的【标题】栏中键入编辑框的名字“输入数据1”。

图2-9设定编辑框名字

(7)添加“加”按钮。

在控件工具栏中选择

控件,然后在计算器窗口的下部按下左键拖曳鼠标画出一个大小合适的按钮,右键单击该按钮,在弹出的快捷菜单中选择【Properties】命令,弹出如图所示的【PushButtonProperties】对话框,在该对话框的【ID】栏中输入按钮的ID属性。

为了以后在编程时便于记忆,我们不用默认值,将“加’’按钮的D属性设置为“IDC_ADD_BUTTON”,按钮名为“加”。

图2-10设置“加”按钮属性

(8)按照同样的方法在计算器窗口中添加“减”、“乘”、“除”按钮,3个按钮的ID属性分别为“IDC_MINUS_BUTTON”、“IDC_TIMES_BUTTON”和“IDC_DIVIDE_BUTTON”。

(9)删除计算器窗口中的“TODO”行、保留窗口中的

按钮和

按钮,这是对话框所推荐的两个控件。

按钮用于关闭对话框并接受对话框中出现的所有信息;

按钮用于关闭对话框并忽略对话框打开后对数据或选项所做的任何改变。

对于这两个按钮,无需进行任何处理,MFC基本类库会自动处理这两个控件。

3.添加变量。

如果我们要在程序中访问对话框中的控件,就必须给这些控件分别添加变量。

所谓添加变量,就是给程序中要用到的控件对象定义一个与之关联的变量作为控件的代理。

以后用到该控件对象时,访问其代理变量即可。

就是说,一个变最代表一个具体的控件对象。

例如,要获得用户在编辑框中输入的内容,就得给编辑框添加变量,通过调用该变量的相关函数即可获得编辑框的输入内容。

下面为【输入数据1】编辑框添加变量。

(1)右键单击【输入数据1】编辑框,在如图所示的快捷菜单中选择【ClassWizard…】命令,弹出【MFCClassWizard】对话框,在该对话框的顶部选择【MemberVariables】(成员变量)选项卡,如图所示。

【MFCClassWizard】对话框

(2)接下来,在该对话框中做如下设置:

·【Classname】:

CEX_Calculator01Dlg

·【ControlIDs】:

lDC_EDIT1

(3)单击

按钮,弹出如图所示的【AddMemberVariable】对话框。

在该对话框中设置如下变量的名字、类别及类型。

·【Membervariablename:

】:

m_Edit1

·【Category:

】:

Control(控件)

·【VariableType:

】:

CEdit

添加变量对话框

(4)单击

按钮。

(5)按照同样的方法给【输入数据2】编辑框添加变量“m_Edit2”,变量类别为“Control”,变量类型为“Cedit”;给【计算结果】编辑框添加变量“m_Edit3”,但是“m_Edit3”的变量类别为“Value”、变量类型为“Cstring”。

4.添加函数及代码。

(1)右键单击“加”按钮,在弹出的快捷菜单中选择【ClassWizard…】命令,在【MFCClassWizard】对话框中选择【MemberMaps】选项卡,在如图所示的对话框中做如下设置:

·【Classname】:

CEx_calculator01Dlg

·【ControlIDs】:

IDC_ADD_BUTTON

·【Messages】:

BN_CLICKED

添加函数

(2)单击

按钮,为“加”按钮添加单击事件的处理函数,在如图所示的【AddMemberFunction】对话框中接受默认的函数名字“OnAddButton”。

(3)在如图所示对话框中单击

按钮。

,返回如图所示对话框。

输入函数名字

(4)添加代码。

在如图所示对话框中单击

按钮,在OnAddButton()函数中为“加’’按钮处理函数加入下面阴影部分的代码(在本书后面的例子中,凡是带底纹部分的代码,都是程序设计者添加的)。

voidCEX_Calculator01Dlg:

:

OnAddButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

//定义两个字符串,用于存放【输入数据1】和【输入数据2】编辑框输入的内容

charcEdit1[10],cEdit2[10];

doubledEdit1,dEdit2,dEdit3;//定义3个双精度变量,用于存放3个编辑框的数据

//定义一个字符串,用于存放【计算结果】编辑框要输入的内容

charcResult[10];

//调用GetWindowText()函数获得【输入数据1】编辑框的输入内容,存放到字符串cEdit1中

m_Edit1.GetWindowText(cEdit1,10);

//调用GetWindowText()函数获得【输入数据2】编辑框的输入内容,存放到字符串cEdit2中

m_Edit2.GetWindowText(cEdit2,10);

dEdit1=atof((LPCTSTR)cEdit1);//将字符串1转化为数值

dEdit2=atof((LPCTSTR)cEdit2);//将字符串2转化为数值

dEdit3=dEdit1+dEdit2;//计算输入的两个数之和

_gcvt(dEdit3,10,cResult);//把计算结果转化为字符串,存放到cResult中

m_Edit3=(LPCTSTR)cResult;//把结果字符串赋给对象m_Edit3

UpdateData(FALSE);//更新屏幕

}

对OnAddButton()中用到的函数和数据类型说明如下。

(a)GetWindowText()

该函数是编辑框类CEdit的成员函数,是一个很有用的函数,用来获得编辑框输入的内容,并把内容存放到一个字符串变量中。

其原型如下:

intGetWindowText(LPTSTRlpszStringBuf,intnMaxCount)

两个参数的含义如下:

·第一个参数lpszStringBuf为字符串缓冲区,接受编辑框内容。

·第二个参数nMaxCount为从编辑框接受的字符串长度。

(b)atof()

该函数将数字字符串转化为浮点型数值。

原型如下:

doubleatof(constchar*)

参数为要转换的数字字符串。

(c)_gcvt()

该函数跟atof正好相反,用来把数值转化为数字字符串。

原型如下:

char*_gcvt(double,int,char*)

参数的意义如下:

·第一个参数为被转换数据。

·第二个参数为数字字符串长度。

·第三个参数为转换后的数字字符串。

(d)UpdateData()

该函数的作用与其参数的值有关:

·参数值为false时,更新窗口,用控件变量的值更新控件内容。

·参数值为true时,将控件内容映射到对应变量中。

OnAddButton()还用到一个类型:

LPCTSTR。

LPCTSTR是MFC定义的字符串指针类型,此处用于类型转换,以获得一个指向字符串的指针。

(5)按照同样的方法为“减”按钮添加处理函数OnMinusButton()。

代码如下:

voidCEX_Calculator01Dlg:

:

OnMinusButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

//定义两个字符串,用于存放【输入数据1】和【输入数据2】编辑框输入的内容

charcEdit1[10],cEdit2[10];

doubledEdit1,dEdit2,dEdit3;//定义3个双精度变量,用于存放3个编辑框的数据

//定义一个字符串,用于存放【计算结果】编辑框要输入的内容

charcResult[10];

//调用GetWindowText()函数获得【输入数据1】编辑框的输入内容,存放到字符串cEdit1中

m_Edit1.GetWindowText(cEdit1,10);

//调用GetWindowText()函数获得【输入数据2】编辑框的输入内容,存放到字符串cEdit2中

m_Edit2.GetWindowText(cEdit2,10);

dEdit1=atof((LPCTSTR)cEdit1);//将字符串1转化为数值

dEdit2=atof((LPCTSTR)cEdit2);//将字符串2转化为数值

dEdit3=dEdit1-dEdit2;//计算输入的两个数之差

_gcvt(dEdit3,10,cResult);//把计算结果转化为字符串,存放到cResult中

m_Edit3=(LPCTSTR)cResult;//把结果字符串赋给对象m_Edit3

UpdateData(FALSE);//更新屏幕

}

(6)同样,为【乘】按钮添加处理函数OnTimesButton()。

代码如下:

voidCEX_Calculator01Dlg:

:

OnTimesButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

//定义两个字符串,用于存放【输入数据1】和【输入数据2】编辑框输入的内容

charcEdit1[10],cEdit2[10];

doubledEdit1,dEdit2,dEdit3;//定义3个双精度变量,用于存放3个编辑框的数据

//定义一个字符串,用于存放【计算结果】编辑框要输入的内容

charcResult[10];

//调用GetWindowText()函数获得【输入数据1】编辑框的输入内容,存放到字符串cEdit1中

m_Edit1.GetWindowText(cEdit1,10);

//调用GetWindowText()函数获得【输入数据2】编辑框的输入内容,存放到字符串cEdit2中

m_Edit2.GetWindowText(cEdit2,10);

dEdit1=atof((LPCTSTR)cEdit1);//将字符串1转化为数值

dEdit2=atof((LPCTSTR)cEdit2);//将字符串2转化为数值

dEdit3=dEdit1*dEdit2;//计算输入的两个数之积

_gcvt(dEdit3,10,cResult);//把计算结果转化为字符串,存放到cResult中

m_Edit3=(LPCTSTR)cResult;//把结果字符串赋给对象m_Edit3

UpdateData(FALSE);//更新屏幕

}

(7)同样,为【除】按钮添加处理函数OnDivideButton()。

代码如下:

voidCEX_Calculator01Dlg:

:

OnDivideButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

//定义两个字符串,用于存放【输入数据1】和【输入数据2】编辑框输入的内容

charcEdit1[10],cEdit2[10];

doubledEdit1,dEdit2,dEdit3;//定义3个双精度变量,用于存放3个编辑框的数据

//定义一个字符串,用于存放【计算结果】编辑框要输入的内容

charcResult[10];

//调用GetWindowText()函数获得【输入数据1】编辑框的输入内容,存放到字符串cEdit1中

m_Edit1.GetWindowText(cEdit1,10);

//调用GetWindowText()函数获得【输入数据2】编辑框的输入内容,存放到字符串cEdit2中

m_Edit2.GetWindowText(cEdit2,10);

dEdit1=atof((LPCTSTR)cEdit1);//将字符串1转化为数值

dEdit2=atof((LPCTSTR)cEdit2);//将字符串2转化为数值

dEdit3=dEdit1/dEdit2;//计算输入的两个数之商

_gcvt(dEdit3,10,cResult);//把计算结果转化为字符串,存放到cResult中

m_Edit3=(LPCTSTR)cResult;//把结果字符串赋给对象m_Edit3

UpdateData(FALSE);//更新屏幕

}

其实,这3个函数都可以照搬OnAddButton()的函数体,不同的只是加阴影的那一行。

5.保存完成的工程。

6.选择菜单栏中的【Build]/【BuildEX_Calculator01.exe】命令编译工程,也可以单击编辑窗口上方Build工具栏中的

按钮或者按键盘上的F7键编译工程,如果编译成功,即可选择菜单栏中的【Build】/【ExecuteEX_Calculator01.exe】命令运行程序,也可以单击编辑窗口上方Build工具栏中的

按钮或者按键盘上的Ctrl+F5运行程序。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1