手把手教你MFC编程计算器制作教程

合集下载

简单MFC程序设计(编写一个小型计算器)

简单MFC程序设计(编写一个小型计算器)
} void CTestDlg::OnButtonNum0() {
if(dotflag==1) {
quan= quan*10; m_Num += 0 / (double)quan; } else { if(numflag==1) {
m_Num = m_Num * 10 + 0; } else m_Num = 0; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonZhengfu() { UpdateData(); m_Num = 0-m_Num; UpdateData(FALSE); } void CTestDlg::OnButtonDengyu()
m_Num = m_Num * 10 + 8; } else m_Num = 8; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonNum9()
5
{ if(dotflag==1) { quan= quan*10; m_Num += 9 / (double)quan; } else { if(numflag==1) { m_Num = m_Num * 10 + 9; } else m_Num = 9; } numflag = 1; mark=1; UpdateData(FALSE);
是否为数字的 int 型标志 mark。
c) 然后考虑到在计算过程中 num1 和 num2 的储存状态有三种,num1==0 和
num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0 和
num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时

mfc计算器程序设计详细

mfc计算器程序设计详细

mfc计算器程序设计详细
MFC是Microsoft基础类的缩写,用于Windows下的GUI程序开发,封装了许多常用的功能,其中包括控件、多线程、消息传递等等。

下面我们将基于MFC来编写一个简单的计算器程序。

首先,我们需要创建一个MFC应用程序并添加一个对话框。

然后,我们需要在对话框中添加各种控件,比如按钮、文本框、标签等等。

在这个例子中,我们需要添加数字按钮、运算符按钮和一个显示结果
的文本框。

接着,我们需要定义各种事件函数,比如数字按钮的点击事件、
运算符按钮的点击事件等等。

在这些事件函数中,我们需要根据相应
的操作完成对应的计算,并将结果显示到文本框中。

当然,我们还需
要处理一些特殊情况,比如输入非法字符、除以0等等。

最后,我们需要将所有的控件和事件函数进行绑定,使得程序能
够正常地运行。

这个过程中,我们将使用MFC提供的消息映射机制来
处理鼠标和键盘事件,以及相应的消息传递机制来更新界面。

总之,在MFC的帮助下编写一个计算器程序不仅方便快捷,而且
代码逻辑清晰,可读性好。

使用VC6编写一个计算器MFC

使用VC6编写一个计算器MFC

使用VC6编写一个计算器MFC回答如下:要使用VC6编写一个计算器MFC应用程序,首先需要创建一个新的MFC项目。

在VC6中,选择“创建一个新的工程”,然后选择“MFC应用程序”,并命名该项目为“Calculator”。

接下来,在“CalculatorDlg.h”文件中,可以编写计算器对话框类的代码。

在该类中,需要声明所有添加到对话框中的控件的成员变量。

例如,可以声明一个`CEdit`类型的指针变量来引用屏幕上的文本框控件。

此外,还可以声明其他成员变量来存储计算器的状态和当前操作数的值。

然后,在“CalculatorDlg.cpp”文件中,可以实现计算器对话框类的代码。

在该文件中,需要实现对话框的初始化、按钮单击事件的处理等功能。

例如,可以在对话框的`OnInitDialog`函数中初始化计算器的状态,并将其他控件的消息映射到对应的成员函数上。

然后,在对应的成员函数中,可以编写相应的代码来处理按钮单击事件,进行计算,并将结果显示在屏幕上。

在编写计算器的核心功能时,可以使用`+`、`-`、`*`和`/`等运算符来实现加法、减法、乘法和除法。

此外,还可以添加其他功能,如取余、开方等。

为了实现这些功能,可以在对话框类中添加成员函数,然后在相应的按钮单击事件中调用这些函数。

最后,在项目的构建选项中,将“字符集”设置为“使用Unicode字符集”,以支持使用中文。

然后,编译并运行该项目,就可以看到一个MFC计算器应用程序在屏幕上显示出来。

总结起来,在VC6中编写一个计算器MFC应用程序需要完成以下步骤:1.创建新的MFC项目,并添加所需的控件。

2.在对话框类中声明和实现计算器界面的成员变量和函数。

3.在对应的按钮单击事件处理函数中编写计算器的核心功能。

4. 在项目的构建选项中设置字符集为Unicode字符集。

5.编译并运行项目,测试计算器应用程序。

以上是一个简单的使用VC6编写一个计算器MFC的步骤。

当然,具体的实现还有很多细节需要注意和完成,如错误处理、界面美化等。

mfc入门教程之实现一个简单的计算器

mfc入门教程之实现一个简单的计算器

mfc⼊门教程之实现⼀个简单的计算器mfc学习之前的了解什么是mfc?MFC是微软基础类的缩写(Microsoft Foundation Classes),是⼀个庞⼤的类库,可以理解为⼀种在Windows上开发软件的架构,是微软专为Visual C++定制的。

该类库提供⼀组通⽤的可重⽤的类库供开发⼈员使⽤。

没有MFC之前,Windows上⽤Win32 API进⾏编程,之后MFC出现,在⼀定程度上提⾼了软件开发效率,它是对win32 API的封装,所以易⽤性好,不过性能会⽐win32开发低⼀些,⼆者各有所长。

在Windows上开发界⾯程序以前⽤MFC最合适,能兼顾效率和性能。

简单来说mfc就是⽅便windows程序开发的框架,不单单是界⾯,更有很多类库。

mfc能⼲什么?在学习mfc之前想必⼤家都会关系这个问题,很多⼈学习了c++,或者是学习了c和c++之后发现还是只能⿊窗⼝下⾯做做数学题,写写算法,做不出什么实际的东西(这⾥不是说c/++做不出实际的东西,⽽是⼤多数的⼈做不出)。

问这个问题就像问⼀把剪⼑能⼲什么,剪⼑什么也⼲不了,我们可以拿着剪⼑剪东西,剪的好坏更多的是在于使⽤者⽽不是⼯具本⾝。

当使⽤⼀件⼯具熟练之后去使⽤同类的⼯具你会发现很轻松就能上⼿,因为它们看似有区别实则万变不离其宗。

mfc和qt的选择很多⼈会去推荐学习qt说mfc过时了,如果你想要跨平台那么qt⾮你莫属,如果只是在windows上,那么mfc⽆可替代。

⽆论是qt还是mfc在windows平台上内部的实现原理都是⼀样的,只是封装上有些区别。

mfc制作简单计算器-界⾯设计1.新建mfc项⽬启动vs2013,点击⽂件->新建->项⽬->vc++->mfc应⽤程序点击确定进⼊mfc应⽤程序向导下⼀步选择基于对话框,点击完成。

这时候mfc为我们⽣成了默认的界⾯,⼀个静态⽂本框,两个按钮。

2.计算器界⾯设计⾸先删除三个默认创建的控件,选中之后右键,删除或者直接按下delete键。

MFC计算器

MFC计算器

, m_cInNumber(0) { m_hIcon = AfxGetApp->LoadIcon(IDR_MAINFRAME); } void CCalcDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT, m_csEditText); } BEGIN_MESSAGE_MAP(CCalcDlg, CDialog) ON_WM_SYSCOMMAND ON_WM_PAINT ON_WM_QUERYDRAGICON //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BTNNUM0, &CCalcDlg::OnBnClickedBtnnum0) ON_BN_CLICKED(IDC_BTNNUM1, &CCalcDlg::OnBnClickedBtnnum1) ON_BN_CLICKED(IDC_BTNNUM2, &CCalcDlg::OnBnClickedBtnnum2) ON_BN_CLICKED(IDC_BTNNUM3, &CCalcDlg::OnBnClickedBtnnum3) ON_BN_CLICKED(IDC_BTNNUM4, &CCalcDlg::OnBnClickedBtnnum4) ON_BN_CLICKED(IDC_BTNNUM5, &CCalcDlg::OnBnClickedBtnnum5) ON_BN_CLICKED(IDC_BTNNUM6, &CCalcDlg::OnBnClickedBtnnum6) ON_BN_CLICKED(IDC_BTNNUM7, &CCalcDlg::OnBnClickedBtnnum7) ON_BN_CLICKED(IDC_BTNNUM8, &CCalcDlg::OnBnClickedBtnnum8)

MFC实现简单计算器11页

MFC实现简单计算器11页

MFC实现简易计算器姓名柳超学号**********专业计算机科学与技术指导老师蒋年德2013年01月12日一、设计题目设计一个基于对话框的简单计算器,实现整数、小数的加减乘除四则运算以及开方、阶乘、取对数等操作。

二、运行环境硬件:Haier A60 Notebook,Celeron M 1.86GHz\512MB\250GB软件:Windows xp professional 5.1,visual C++ 6.0三、算法设计的思想打开计算器程序,输入数据,开始时编辑框成员变量m_num初始化为零。

按下数字按钮后,根据bool型变量b_zf判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。

同时根据judge的大小,判断是单目运算还是双目运算,进入不同的处理程序,最终输出结果。

若按下双目运算符,则把m_num存入num2,按下输入第二个操作数并算出结果。

若按下的是单目运算符,则直接对其处理得出结果。

若按下清零,则m_num 等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。

算出后把结果保存至num2。

若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。

四、流程图五、算法分析设计在visual C++ 6.0中新建一个MFC APPWizard[exe]工程文件,文件名为CALU,应用程序类型选为基本对话,完成后,在Dialog中画出计算器的基本控件,包括0~10个数字按钮,符号转换按钮“+/-”,小数点符号“.”,加、减、乘、除四个双目运算符按钮,开方“sqrt”,阶乘“n!”,取对数“ln”等三个单目运算符按钮,计算并显示运算结果的等于号“=”按钮,以及用于退回的“backspace”按钮,清除“clear”按钮和退出“exit”按钮,一个编辑框,用于显示运算值。

最后给每个控件定义ID号和标题。

MFC简单计算器编程步骤

MFC简单计算器编程步骤

1,准备环境:Microsoft Visual C++6.0
2,打开Microsoft Visual C++6.0,选择【文件】,点击新建,再出现的对话框中选择MFC AppWizard(exe),然后设置工程名和位置,如下图所示,点击确定
3,在出现的对话框中选择(基本对话框),点击完成,如下图所示
4,再出现的对话框中添加编辑框和按钮,并进行布局如下图
注:点击按钮右键属性,即可设置按钮上的数字和运算符显示
5,然后单击编辑框,接着按组合键Ctrl+W,再出现的对话框内选择【Member Variable】,出现下图所示
6,然后选项按钮【Add Variable...】,再出现的对话框内进行设置,如下图中所示,接着点击【OK】,接着点击确定,返回最初的对话框
7,然后切换到ClassViewj界面,双击CCalculatorDlg,在public中定义如下变量8,然后进行数字设置,如双击【1】按钮,添加如下代码
9,然后进行等号设置,双击【=】按钮,添加如下代码
10,进行运算符设置,如双击【+】,添加如下代码11,进行CE设置,双击【CE】,添加如下代码
12,最后一步,调试运行,结果如下
因为时间和水品有限,只能做到这里了,希望对有兴趣的人有一定帮助
版权归孤独邪剑所有,尽请分享,哈哈。

MFC计算器实现步骤和代码

MFC计算器实现步骤和代码

MFC计算机程序步骤:1. 在进入VC++的第一个界面下,选择MFC AppWizard(exe),并设置工程名机器所在位置。

2. 在MFC AppWizard—step1 中选中Dialog based 选项,建立一个基于对话框的程序框架。

3. 使用资源编辑器建立对话框4. 编辑其中的各个控件的属性5. 插入菜单资源并编辑各项属性各属性为:Caption + * / ClearID ID_ADD_MENU ID_DIFFERENCE _MENU ID_MULTIPL Y_MENU ID_DEVIDE_MENU ID_CLEAR_MENUAbout ExitID_ABOUT_MENU ID_EXIT_MENU6. 添加代码使用Class Wizard 给编辑框连接变量(1)实现基本的加、减、乘、除的代码的添加。

(2)添加与菜单相关联的代码(3)填添加与滚动条相关联的代码在MFC AppWized(exe)项目下做。

界面自己做1.在对话框的头文件CalculatorDlg.h中添加#include<math.h>2.为CCalculatorDlg类添加成员数据和成员函数double number1,number2;int NumberState,OperationState;void cal();并在CCalculatorDlg类的构造函数中增加NumberState=1;3.添加消息按钮afx_msg void OnNumberKey(UINT nID);afx_msg void OnOperationKey(UINT nID);4.在CalculatorDlg.cpp文件中BEGIN_MESSAGE_MAP(CMy1Dlg, CDialog)和END_MESSAGE_MAP()间添加代码ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)ON_COMMAND_RANGE(IDC_NUMBER11,IDC_NUMBER20,OnOperationKey)5.为成员函数OnNumberKey和OnOperationKey添加代码void CCalculatorDlg::OnNumberKey(UINT nID){int n=0;switch(nID){case IDC_NUMBER1:n=1;break;case IDC_NUMBER2:n=2;break;case IDC_NUMBER3:n=3;break;case IDC_NUMBER4:n=4;break;case IDC_NUMBER5:n=5;break;case IDC_NUMBER6:n=6;break;case IDC_NUMBER7:n=7;break;case IDC_NUMBER8:n=8;break;case IDC_NUMBER9:n=9;break;case IDC_NUMBER10:n=0;break;}if(NumberState==1){m_result=m_result*10+n;number1=m_result;UpdateData(FALSE); // 更新编辑框中的值}else{m_result=m_result*10+n;number2=m_result;UpdateData(FALSE);}}void CCalculatorDlg::OnOperationKey(UINT nID){switch(nID){case IDC_NUMBER13: // "/"按钮OperationState=1;UpdateData(FALSE);m_result=0;NumberState=2;break;case IDC_NUMBER14: // "*"按钮OperationState=2;UpdateData(FALSE);m_result=0;NumberState=2;break;case IDC_NUMBER15: // "+"按钮OperationState=3;UpdateData(FALSE);m_result=0;NumberState=2;break;case IDC_NUMBER16: // "-"按钮OperationState=4;UpdateData(FALSE);m_result=0;NumberState=2;break;case IDC_NUMBER17: // "C"按钮,撤消用,不需要可以删除number1=number2=m_result=0;UpdateData(FALSE);NumberState=1;break;case IDC_NUMBER20: // "="按钮cal(); // 调用cal成员函数break;}}6.为成员函数cal()添加代码void CCalculatorDlg::cal(){switch(OperationState){case 1:m_result=(double)number1/number2;UpdateData(FALSE); // 更新编辑框中的结果number1=m_result; // 把此次的运算结果作为下一次运算的第一个操作数NumberState=2; // 下次输入的数作为第二个操作数break;case 2:m_result=number1*number2;UpdateData(FALSE); // 更新编辑框中的结果number1=m_result;NumberState=2;break;case 3:m_result=number1+number2;UpdateData(FALSE); // 更新编辑框中的结果number1=m_result;NumberState=2;break;case 4:m_result=number1-number2;UpdateData(FALSE); // 更新编辑框中的结果number1=m_result;NumberState=2;break;}OperationState=0;} 注意按钮的ID号要和程序中的ID号相同!!!!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

手把手教你 MFC 编程计算器
第 2页 / 共 23页
此时我们把当前页面上原配的控件按 Delete 全部清除(如下图)
手把手教你 MFC 编程计算器
第 3页 / 共 23页
接着我们按照 MFC 自带的控件选项进行我们本次计算器的控件添加(以下是控件)
手把手教你 MFC 编程计算器
第 4页 / 共 23页
手把手教你 MFC 编程计算器
第 20页 / 共 23页
用 if 语句去判断标记常量 nEditFlag 从而给判断是 m_num1 还是 m_num2 进行操作 这里 m_num1 是编辑框 1 内的数字 m_num2 是编辑框 2 内的数字 剩下了 3~9 代码以上大同小异。
手把手教你 MFC 编程计算器
那么我们想,在日常我们用电脑的过程中,一般都是用鼠标去点击编辑框来进行一系 列操作。那么我可以加入一个鼠标左键点击 WM_LBUTTONDOWN 消息和一个 EN_SETFOCUS 事
手把手教你 MFC 编程计算器
第 16页 / 共 23页
件来响应这个鼠标消息。 EN_SETFOCUS 为判断焦点事件(通俗点说,那便是判断光标在什 么地方)
之后就会跳转到具体的代码实现过程 这里我们依次给每一个控件添加消息响应函数 (以下仅列出一部分)
手把手教你 MFC 编程计算器
第 7页 / 共 23页
手把手教你 MFC 编程计算器
第 8页 / 共 23页
到此为止 我们基本上完成了计算器页面的前半部分预备工作,下来是我们的对控件具体实 现代码的添加
手把手教你 MFC 编程计算器
double n_result; n_result = m_num1 + m_num2; m_result = n_result; char sz[20]; sprintf(sz,"%f",m_result); m_CResult.SetWindowText(sz); }
手把手教你 MFC 编程计算器
第 11页 / 共 23页
////////////////////////////////////////////////////////////////////////// STEP 2(控件消息响应函数具体代码添加部分)
首先从加法开始 void CMyDlg::OnButton1() { // TODO: Add your control notification handler code here UpdateData();
如下图
手把手教你 MFC 编程计算器
第 17页 / 共 23页
设置好之后,我们还要做一些初始化工作,在程序运行之初,我们先初始化 nEditFlag = 0;那么在哪里初始化呢?很简单,正如大家想的一样在 OnInitDialog()内进行初始化 我们只需在 OnInitDialog()函数中 加入一句 nEditFlag = 0;便可以了(如下图黑条字体部分)
手把手教你 MFC 编程计算器
} void CMyDlg::OnButton3() { // TODO: Add your control notification handler code here U pdateData(); double n_result; n_result = m_num1 * m_num2; m_result = n_result; char sz[20]; s printf(sz,"%f",m_r esult); m _CResult.SetWindow Text(sz); } void CMyDlg::OnButton4() { // TODO: Add your control notification handler code here U pdateData(); double n_result; n_result = m_num1 / m_num2; m_result = n_result; char sz[20]; s printf(sz,"%f",m_r esult); m _CResult.SetWindow Text(sz); }
手把手教你 MFC 编程计算器
第 18页 / 共 23页
/////////////////////////////////////////////////////////////////////////////// /
之后我们再为两个事件响应函数进行 OnsetfocusEdit1()和 OnsetfocusEdit2()添加 代码
具体添加方法,就是右键主对话框 CMyDlg->Add Member Variable 也可以是在菜单栏中选择 “查看”->“建立类向导”
手把手教你 MFC 编程计算器
第 10页 / 共 23页
这里我们把 3 个编辑框控件内的变量都改变为 double 型的(因为进行四则运算难免出现小 数点) 之后再在控件 IDC_EDIT3 中选择"Add Variable" 并且数据类型选择 Control 类型 此时变量自动改为了 CEdit 类 这步的意思是说 我们把编辑框控件 3 的设置为 CEdit 类 并且设置一个成员对象是 m_CResult。
完成修改 ID 后,就需给控件添加消息响应了,基本操作可以是直接双击控件,便会有向导 提示。
MFC 默认下了的响应信息都为 On_开头,而且以下显示的是数字 5 的消息响应.之后所有的 依次类推,这步骤一般不
对成员函数名称做任何修改,直接点击 OK 即可
手把手教你 MFC 编程计算器
第 6页 / 共 23页
手把手教你 MFC 编程计算器
第 19页 / 共 23页
当用户选定编辑框 1 的时候,nEditFlag = 1; 当用户选定编辑框 2 的时候,nEditFlag = 2;
而鼠标消息 WM_LBUTTONDOWN 具体代码如下
////////////////////////////////////////////////////////////////////////////// STEP 3(按键 0~9 的响应部分) 这里由于代码都大同小异,所以就用数字按钮 1,2 来进行简要说明
每个控件“属性”都有属于它自己的 ID,默认的按钮按键为 IDC_BUTTON0,而且 Cap 当然我 们为了“顾名思义”,对控件 ID 进行修改成我们容易辨认的(也可以不改),添加完控件 并修改 ID 之后。(如下图)
这里我们把数字按钮 0 设置 ID 为 IDC_BUTTON14_NUM0,其他的依次类推
手把手教你 MFC 编程计算器
第 1页 / 共 23页
STEP 1(页面设计部分与控件添加部分)
首先打开 VC,选择 MFC AppWizard[exe],设定好路径和工程名(这里我设置工程名为 为“My”)。这里要注意的是在创建向导步骤 1 的时候,我们选择“基本对话 框”。
之后我们可以点击完成便看到以下界面
第 21页 / 共 23页
这里进行一个说明
m_num2=m_num2*10+1; 很多人会问这步是说明意思,这步乍看貌似有点一头雾水(当初我 也是这样)但是仔细看看还是能看明白的。
比方说 用户想打出自然数“234” 用户第一次点的数字是 2 那么此时对应代码执行是这段 m_num2=m_num2*10+2; 那么 m_num2 = 0*10 +2 (初始化时 m_num2 = 0) 之后如果在点击 3 的时候执行的代码是 m_num2=m_num2*10+3; (此时经过第一步 m_num2 已经为 2 了,再点了 3 结果为 m_num2= 2*10+3 = 23) 最后点击 4 执行的代码是 m_num2=m_num2*10+4;(23*10 +4=234)
void CMyDlg::OnButton2() { // TODO: Add your control notification handler code here U pdateData(); double n_result; n_result = m_num1 - m_num2; m_result = n_result; char sz[20]; s printf(sz,"%f",m_r esult); m _CResult.SetWindow Text(sz);
这里我把添加的控件消息响应函数列出来
这里忘记了,提醒一点 编辑框控件的 ID 是
手把手教你 MFC 编程计算器 I DC_EDIT1 I DC_EDIT2 I DC_EDIT3
第 9页 / 共 23页
还有 加减乘除的控件添加当初没有进行名字的设置 默认为 void CMyDlg::OnButton1()//加 void CMyDlg::OnButton2()//减 void CMyDlg::OnButton3()//乘 void CMyDlg::OnButton4()//除 //////////////////////////////////////////////////// 在开始第二步之前有一项工作时必须要做的,那便是添加 3 个成员变量和一个 CEdit 类的 变量
第 14页 / 共 23页
手把手教你 MFC 编程计算器
第 15页 / 共 23页
Hale Waihona Puke 这里我特地说明一下由于我们预设了 2 个编辑框所想实现的功能是,如在编辑框 1 内输入一个输入 30,然 后再编辑框 2 内输入另一个数字 20,并且再进行运算。那么存在一个问题。这个问题其实 困惑了我很久,那就是,如何用判断用户是在哪个编辑框上输入了数字,所以我们需要给 程序加入一个功能,那便是判断用户是在编辑框 1 输入,还是编辑框 2 内输入。
这样一来,一切逻辑都理顺了。我们用户用鼠标选择并点击编辑框的时候,我们用 WM_LBUTTONDOWN 消息去响应,然后与此同此,我们把响应的和 EN_SETFOCUS 联系起来,我 们预设一个全局变量 nEditFlag ,作为在 EN_SETFOCUS 函数里的一个 标记,并在鼠标点 下的时候用 nEditFlag 去表示编辑框目前被选定的状态,nEditFlag ==1 的时候我们就判 断用户选择了编辑框 1 ,再者当 nEditFlag ==2 的时候说明编辑框 2 被选定。
相关文档
最新文档