这篇文章里通过计算器的简单实现,让大家能够了解一般对话框应用程序开发的基本流程

要求:编写简单的计算器应用程序,要求利用按钮进行加、减、乘,除操作,在对话框输出计算机结果。

下面结合操作步骤,讲解对话框应用程序开发的基本流程:

(1)、在对话框资源上添加按钮和编辑框控件,并设置按钮控件和编辑框控件的标题和ID,并且

将编辑框设置为只读属性。最终的运行结果如下图。

(2)、添加单机数字按钮和加、减、乘、除按钮,及单机“等号”按钮的消息响应函数

(3)、添加消息响应函数的函数体。

(4)、程序调试无错误后,进行测试,分析测试结果。保证程序的正确性。

下面分析本程序的代码:

1、新建一个对话框应用程序Test,采用默认设置;

2、在类CTestDlg中添加数据成员:

CString num1;       //数值计算符号前面的数值
               CString num2;       //数值计算后面的数值
               BOOL isresult;        //是否按下加、减、乘、除符号
               int witch;                //是加、减、乘、除哪种计算

3、在CTestDlg::OnInitDialog()函数中对相关变量进行初始化

num1="";        //第一个数据 
              num2="";        //第二个数据
              isresult=FALSE;     //保存是否点击了运算按钮
              witch=0;              //保存运算按钮

4、然后是按钮的响应的函数,下面对同一类的按钮响应函数只列出了一个,其他的都是一样的

void CGeliangDlg::OnN1()                   //单击“1”按钮
         {
             // TODO: Add your control notification handler code here
             if(isresult==FALSE)
            {

num1+="1";
                 m_result=num1;
                 UpdateData(false);
            }
            if(isresult==TRUE)

{

num2+="1";
                m_result=num2;
               UpdateData(false);
            }
         }

void CGeliangDlg::OnN10()          //单击“+\-按钮”
        {
             // TODO: Add your control notification handler code here
             CString m_m="-";
             if(isresult==FALSE)
            {

m_m+=num1;
             m_result=m_m;
             UpdateData(false);
            }
           if(isresult==TRUE)
            {

m_m+=num2;
            m_result=m_m;
            UpdateData(false);
            } 
       }

void CGeliangDlg::OnN11()                   //单击“.”按钮
        {
              // TODO: Add your control notification handler code here
              if(isresult==FALSE)
              {

num1+=".";
                m_result=num1;
                UpdateData(false);
               }
               if(isresult==TRUE)
               {

num2+=".";
                m_result=num2;
                UpdateData(false);
               }
            }

void CGeliangDlg::OnJia()                  //单击“+”按钮
           {
             // TODO: Add your control notification handler code here
             isresult=TRUE;
            witch=1;
           }

void CGeliangDlg::OnResult()            //单击“=”按钮
      {
           // TODO: Add your control notification handler code here
           double number1=atof(num1);
           double number2=atof(num2);
           double result=0.0;
           switch(witch)
           {
               case 1:result=number1+number2;break;
              case 2:result=number1-number2;break;
              case 3:result=number1*number2;break;
              case 4:result=number1/number2;break;
              default:AfxMessageBox("程序运行错误");break;
           }
      m_result="";
     m_result.Format("%f",result);
     UpdateData(false);

}

上面的程序代码中,仅给出数字按钮,符号按钮和“+/-”按钮,及“.”按钮,的响应函数。数字键按钮的代码是基本类似的

,符号按钮的代码也是类似的,读者可以自己写出其他按钮的消息映射,然后编写函数代码。

2012-11-17 12:28 用MFC实现的计算器(详细版)的更多相关文章

  1. 基于dsp_builder的算法在FPGA上的实现(转自https://www.cnblogs.com/sunev/archive/2012/11/17/2774836.html)

    一.摘要 结合dsp_builder.matlab.modelsim和quartus ii等软件完成算法的FPGA实现. 二.实验平台 硬件平台:DIY_DE2 软件平台:quartus ii9.0 ...

  2. string源码分析 ——转载 http://blogs.360.cn/360cloud/2012/11/26/linux-gcc-stl-string-in-depth/

    1. 问题提出 最近在我们的项目当中,出现了两次与使用string相关的问题. 1.1. 问题1:新代码引入的Bug 前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求.测试阶 ...

  3. 总结近期CNN模型的发展(一)---- ResNet [1, 2] Wide ResNet [3] ResNeXt [4] DenseNet [5] DPNet [9] NASNet [10] SENet [11] Capsules [12]

    总结近期CNN模型的发展(一) from:https://zhuanlan.zhihu.com/p/30746099 余俊 计算机视觉及深度学习   1.前言 好久没有更新专栏了,最近因为项目的原因接 ...

  4. Java编程思想(11~17)

    [注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第十一章 持有对象 11.1 泛型和类型安全的容器>eg: List<St ...

  5. .NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区

    .NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区 开始时间 2020年11月10日 08:00 (PT) | 16:00 (UTC)| 24:00(北 ...

  6. [CareerCup] 17.12 Sum to Specific Value 和为特定数

    17.12 Design an algorithm to find all pairs of integers within an array which sum to a specified val ...

  7. [团队项目]第二个冲刺 看板和燃尽图 Sprint2 6.8/6.9/6.10/6.11/6.12/6.13/6.14

    1.开始一个新的冲刺: 起止:2016.6.1~2016.6.14 按照以下过程进行 ProductBacklog:继续向下细化 Sprint 计划会议:确定此次冲刺要完成的目标 Sprint Bac ...

  8. 2016年11月12日 星期六 --出埃及记 Exodus 20:3

    2016年11月12日 星期六 --出埃及记 Exodus 20:3 "You shall have no other gods before me.除了我以外,你不可有别的 神.

  9. careercup-中等难度 17.12

    17.12 设计一个算法,找出数组中两数之和为指定值的所有整数对. 解答 时间复杂度O(n)的解法 我们可以用一个哈希表或数组或bitmap(后两者要求数组中的整数非负)来保存sum-x的值, 这样我 ...

随机推荐

  1. Windows Server 2008 如何在IIS中添加MIME类型

    用户可以通过使用MIME以设置服务器传送多媒体文件,如声音和视频等.MIME是一种技术规范,现在可以用于浏览器上,传送可以供浏览器识别的信息 如果我们的网站提供下载服务,有时传上去的文件比如 xxx. ...

  2. Python 第二课笔记

    1.模块初识 Python标准库和第三方库, 写好的功能封装好,起个名字,就是模块也叫库,直接导入就能用了. 标准库就是不需要安装,就能够导入的库 第三方库必须下载,安装才能使用的库. 1.1 两个标 ...

  3. java基础值进制转换

    十进制转换为二进制: 解: 十进制数42连续除以2,当被除数为0时停止除以2,将余数倒加即为结果 :42(10)=101010(2) 注: 计算机内部表示数的字节单位是定长的,且只能是字节(1byte ...

  4. OGG强制停止进程

    1.异常现象[oracle@localhost ~]$ ggsci Oracle GoldenGate Command Interpreter for OracleVersion 11.1.1.0.0 ...

  5. Xcode-之CocoaPads

    一.说明 CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以 ...

  6. LOOPS

    LOOPS 题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3853 递推 设dp[i][j]为(i,j)到终点期望的使用魔力值,mp[i][ ...

  7. 登录SQL注入

    在登录页面的账号密码的输入框中分别输入,这个值:1' or '1'='1 一,验证的数据库语句,讲传人的值组合成数据库语句: public DataTable CheckLogin(string na ...

  8. magento寄存器的使用

    1.Mage::register('validation_image_name', $validationImageName);//这个是把变量$validationImageName存储在valid ...

  9. spoj1811:Longest Common Substrin

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=2796 把一个字符串做出后缀自动机,另一个字符串与之匹配. #include<cs ...

  10. hdu_5925_Coconuts(离散化+dfs)

    题目链接:hdu_5925_Coconuts 题意: 给你一张很大的图,和小于200个的障碍点,问这张图中的联通块有多少个 题解: 由于障碍点只有200个,所以肯定有很多的空白部分,我们将这些空白部分 ...