VC++实现类似Window的计算器

VC++ 入门难,个人感觉确实有点,但精通更难。不过话说回来,一旦你精通了那就是海阔天空了。

这里作为刚学VC++的我把刚写完的类似Window的计算器拿出来晒晒,以帮助初学者减少点弯路...

在这里我先列出初学普遍认为的难点列出来

1、数字的录入

2、小数点的处理

3、加减乘除的结果

4、结果的算法

5、记忆的功能

好,下面我一一叙述

第一点和第二点 数字的录入和小数点的判断,我将其写成了一个函数,代码如下:

//校验文本框的数据合法性
void CCounterDlg::SetEditContent(CString num)
{
//文本框最大内容数不超过40
      m_edt_content.GetWindowText(m_tmp_content);
      if(!m_isMark && m_tmp_content=="0." && m_tmp_content.GetLength()<=MAX_LENGTH)
      {
            if(m_isDot)
                  m_edt_content.SetWindowText(m_tmp_content+num);
            else
                  m_edt_content.SetWindowText(num+'.');
      }
      else if(!m_isMark && m_tmp_content.GetLength()<=MAX_LENGTH)
      {
            if(m_isDot)
            {
                  m_edt_content.SetWindowText(m_tmp_content+num);
            }
            else
            {
                  m_tmp_content.Insert(m_tmp_content.GetLength()-1,num);
                  m_edt_content.SetWindowText(m_tmp_content);
            }
      }
      else
      {
                  m_edt_content.GetWindowText(m_pre_content);
                  m_edt_content.SetWindowText(num+'.');
                  m_isMark=false;
      }
}

第三点 加减乘除的结果

只要申明个变量就可以了用来标记符号比如:1:加法;2:减法;3:乘法;4:除法

并且保存当前文本框中的值即可

第四点 结果的算法

这里只要把上次保存的值和现在的值进行相应的运算,关于运算类型是什么?忘记上次申明了变量保存了吗,对,就是那个1,2,3,4,明白了吧 代码如下:

void CCounterDlg::OnResult()
{
      CString str;
      CString r_str;
      double result;

       switch (m_mark)
       {
            case 1://加法
                  m_edt_content.GetWindowText(str);
                  result=atof(m_pre_content)+atof(str);
                  r_str.Format("%f",result);
                  m_edt_content.SetWindowText(r_str);
                  break;
            case 2://减法
                  m_edt_content.GetWindowText(str);
                  result=atof(m_pre_content)-atof(str);
                  r_str.Format("%f",result);
                  m_edt_content.SetWindowText(r_str);
                  break;
            case 3://乘法
                  m_edt_content.GetWindowText(str);
                  result=atof(m_pre_content) * atof(str);
                  r_str.Format("%f",result);
                  m_edt_content.SetWindowText(r_str);
                  break;
            case 4://除法
                  m_edt_content.GetWindowText(str);
                  if(atoi(str)==0)
                  {
                        m_edt_content.SetWindowText("除数不能为0。");
                        return;
                  }
                  result=atof(m_pre_content) / atof(str);
                  r_str.Format("%f",result);
                  m_edt_content.SetWindowText(r_str);
                  break;
            }
      }

最后就是记忆功能,这里同样可以申明个变量保存,这样就做到了记忆的功能了

最后,VC++的学习是个很痛苦的过程,不要因为一时碰壁,马上就放弃了,要坚持下去。才会发现他真正强大的功能.当然用惯了 Delphi,VS等IDE的你一时会有点不习惯,坚持下去,相信会进步的....

 

转载请说明出处:51编程网 www.51bcw.com 

整套源码下载:马上下载

如有疑问可以来51编程网论坛提问

效果图如下:

51编程网

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值