n double xy extern int z ifx0 yx x0 else yxy x0 z1void C 计算器 Dlg::OnBnClickedbtnjian // TODO: 在此添加控件通知处理程序代码 extern double xy extern int z ifx0 yx x0 z2 else yy-x x0 z2 void C 计算器 Dlg::OnBnClickedbtncheng // TODO: 在此添加控件通知处理程序代码 extern double xy extern int z ifx0 yxx0z3 else yyx x0 z3void C 计算器 Dlg::OnBnClickedbtnchu // TODO: 在此添加控件通知处理程序代码 extern double xy extern int z ifx0 yxx0z4 else yy/x x0 z4void C 计算器 Dlg::OnBnClickedbtnc // TODO: 在此添加控件通知处理程序代码 extern double xy extern int zk x0 y0 z0 k0 CEdit0 UpdateDataFALSEvoid C 计算器 Dlg::OnBnClickedbtndeng // TODO: 在此添加控件通知处理程序代码 extern double xy extern int z switchz//用于等号键的语句,实现运算操作,并将计算结果输出到显示器 case 1:xxybreak case 2:xy-xbreak case 3:xxybreak case 4:xy/xbreak CEditx UpdateDataFALSEvoid C 计算器 Dlg::OnBnClickedbtnche // TODO: 在此添加控件通知处理程序代码 extern double x extern int k int ssx kss10 xx-k/10 CEditx UpdateDataFALSE这些仅是 Dialog 的实现代码。
我只是简单的在这里面添了点代码。
我用的编译器版本是vs2008。
手把手教 MFC 做计算器 2010-10-27 16:20:15 转载▼标签: 分类:Cplusplus杂谈 上个月,国庆期间在研究 MFC 贪吃蛇的程序之余,很有兴致去想做一个“加法器”,顾名思义也就只能实现一个加法功能而已。
当初是做出来了,不过是只能用键 盘输入数字的,这个和 Windows 自带的计算器有差别,再者,我当初做的加法器实现的方式很简单,就是用在对话框页面中添加2个编辑框控件和一个按钮控 件“”,然后关联 ID然后再CDialog 中添加代码实现功能。
近日,在继续学习 MFC 的过程,看到这个半成品,就有完善它成为一个计算器的想法,当然就在此基础上。
这里声明,该计算器的制作方法和过程和百度上的有一 些区别,并不是“很常规”的那种计算器写法,纵然是我自己练手的作品,但是一些基本的功能也是能实现的,现在就手把手教制作这个计算器。
////////////////////////////////////////////////////////STEP 1(页面设计部分 与控件添加部分) 首先打开 VC,选择 MFC AppWizardexe,设定好路径和工程名(这里我设置工程名为 。
为 “My” ) 这 里 要 注 意 的 是 在 创 建 向 导 步 骤 1 的 时 候 , 我 们 选 择 “ 基 本 对 话 框 ” 。
之后我们可以点击完成便看到以下界面此时我们把当前页面上原配的控件按 Delete 全部清除(如下图)接着我们按照 MFC 自带的控件选项进行我们本次计算器的控件添加(以下是控件)我们在原先清空的界面中依次用上图控件画出一个基本的计算器页面(如下图) 。
当然作为“所见即所得”的 MFC 控件设计,干净整齐的界面是基本要求,甚至会影响用户的心情。
上图我们用按钮控件添加一共15个按钮,分别是数字“ 0 9” 以及 “ - /”。
每个控件“属性”都有属于它自己的 ID,默认的按钮按键为 IDC_BUTTON0而且 Cap 当然我们为了“顾名思义”,对控件 ID 进行修改成我们容易辨认的(也可以不改) ,添加完控件并修改 ID 之后。
如下图这里我们把数字按钮0 设置 ID 为 IDC_BUTTON14_NUM0,其他的依次类推完成修改 ID 后,就需给控件添加消息响应了,基本操作可以是直接双击控件,便会有向导提示。
MFC 默认下了的响应信息都为 On_开头,而且以下显示的是数字5的消息响应.之后所有的依次类推,这步骤一般不对成员函数名称做任何修改,直接点击 OK 即可之后就会跳转到具体的代码实现过程 这里我们依次给每一个控件添加消息响应函数(以下仅列出一部分)到此为止 我们基本上完成了计算器页面的前半部分预备工作,下来是我们的对控件具体实现代码的添加这里我把添加的控件消息响应函数列出来这里忘记了,提醒一点编辑框控件的 ID 是IDC_EDIT1IDC_EDIT2IDC_EDIT3还有 加减乘除 的控件添加当初没有进行名字的设置默认为void CMyDlg::OnButton1//加void CMyDlg::OnButton2//减void CMyDlg::OnButton3//乘void CMyDlg::OnButton4//除////////////////////////////////////////////////////在开始第二步之前有一项工作时必须要做的,那便是添加3个成员变量和一个 CEdit 类的变量具体添加方法,就是右键主对话框 CMyDlg-Add Member Variable也可以是在菜单栏中选择“查看”-“建立类向导”这里我们把3个编辑框控件内的变量都改变为 double 型的(因为进行四则运算难免出现小数点)之后再在控件 IDC_EDIT3中选择Add Variable并且数据类型选择 Control 类型 此时变量自动改为了 CEdit 类这 步 的 意 思 是 说 我 们 把 编 辑 框 控 件 3 的 设 置 为 CEdit 类 并 且 设 置 一 个 成 员 对 象 是m_CResult。
//////////////////////////////////////////////////////////////////////////STEP 2(控件消息响应函数具体代码添加部分)首先从加法开始void CMyDlg::OnButton1 // TODO: Add your control notification handler code here UpdateDatadouble n_resultn_result m_num1 m_num2m_result n_resultchar sz20sprintfszfm_resultm_CResult.SetWindowTextszUpdateData 是 MFC 的窗口函数,用来刷新数据的 (可以认为是必须的)由于我们进行基本运算需要更新数据 所以必须添加这个函数。
n_result m_num1 m_num2m_result n_resultchar sz20sprintfszfm_result以上代码是进行 加法的基本语句,然后数组保存并格式化打印输出。
m_CResult.SetWindowTextsz此句是把结果输出在之前用 CEdit 类创建的对象 m_CResult,m_CResult 调用 SetWindowTextsz把结果显示在编辑框中。
无独有偶剩下的减法 乘法 和除法 也是大同小异(只是把 符号小改一下便可)这里贴出所有加减乘除的代码void CMyDlg::OnButton1 // TODO: Add your control notification handler code here UpdateDatadouble n_resultn_result m_num1 m_num2m_result n_resultchar sz20sprintfszfm_resultm_CResult.SetWindowTextszvoid CMyDlg::OnButton2 // TODO: Add your control notification handler code here UpdateData double n_result n_result m_num1 - m_num2 m_result n_result char sz20 sprintfszfm_result m_CResult.SetWindowTextszvoid CMyDlg::OnButton3 // TODO: Add your control notification handler code here UpdateData double n_result n_result m_num1 m_num2 m_result n_result char sz20 sprintfszfm_result m_CResult.SetWindowTextszvoid CMyDlg::OnButton4 // TODO: Add your control notification handler code here UpdateData double n_result n_result m_num1 / m_num2 m_result n_result char sz20 sprintfszfm_result m_CResult.SetWindowTextsz 这里我特地说明一下 由于我们预设了2个编辑框所想实现的功能是, 如在编辑框1内输入一个输入30, 然后再编辑框2内输入另一个数字20,并且再进行运算。
那么存在一个问题。
这个问题其实困惑了我很久,那就是,如何用判断用户是在哪个编辑框上输入了数字,所以我们需要给程序加入一个功能,那便是判断用户是在编辑框1输入,还是 编辑框2内输入。
那么我们想, 在日常我们用电脑的过程中, 一般都是用
上一篇:
c++课程设计总结报告_通讯录管理系统
下一篇:
群体性突发事件论文:“边界冲突”:农村群体性事件的县域分析