控件使用计算器设计Word格式.docx
《控件使用计算器设计Word格式.docx》由会员分享,可在线阅读,更多相关《控件使用计算器设计Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
在一组单选按钮中用户只能而且必须选择其中的一个,其余的单选按钮会自动落选。
也就是说,一组单选按钮是互斥的,但总有一个处于选中状态。
(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】选项卡,在如图所示的对话框中做如下设置:
CEx_calculator01Dlg
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)cResul