首页 > 编程语言 >MFC,VC++计算器小程序

MFC,VC++计算器小程序

时间:2022-12-09 16:02:40浏览次数:37  
标签:case MFC C++ break code CMyDlg 计算器 TODO showend


大学期末没课,某个中午闲来无聊,正好在自学MFC,于是想用MFC、C++写点东西,由于能力有限,当然的写个简单点的啦,于是花了两个小时写了这个计算器的小程序,希望对初学VC++和MFC的朋友有所帮助。程序运行效果如下:

MFC,VC++计算器小程序_编辑框



(1)首先按上图添加控件;

(2)然后在Dlg类的头文件中添加如下的变量,功能如注释所示:

MFC,VC++计算器小程序_头文件_02

(3)下面是程序的主要代码:

void CMyDlg::OnZero() 
{
// TODO: Add your control notification handler code here
m_showend+="0";
UpdateData(false);
}


void CMyDlg::OnOne()
{
// TODO: Add your control notification handler code here
m_showend+="1";
UpdateData(false);
}


void CMyDlg::OnTwo()
{
// TODO: Add your control notification handler code here
m_showend+="2";
UpdateData(false);
}


void CMyDlg::OnThree()
{
// TODO: Add your control notification handler code here
m_showend+="3";
UpdateData(false);
}


void CMyDlg::OnFour()
{
// TODO: Add your control notification handler code here
m_showend+="4";
UpdateData(false);
}


void CMyDlg::OnFive()
{
// TODO: Add your control notification handler code here
m_showend+="5";
UpdateData(false);
}


void CMyDlg::OnSix()
{
// TODO: Add your control notification handler code here
m_showend+="6";
UpdateData(false);
}


void CMyDlg::OnSeven()
{
// TODO: Add your control notification handler code here
m_showend+="7";
UpdateData(false);
}


void CMyDlg::OnEight()
{
// TODO: Add your control notification handler code here
m_showend+="8";
UpdateData(false);
}


void CMyDlg::OnNine()
{
// TODO: Add your control notification handler code here
m_showend+="9";
UpdateData(false);
}


void CMyDlg::OnClearEditBox() //此函数用于清空编辑框信息
{
// TODO: Add your control notification handler code here
m_showend="";
operand_one=0.0;
operand_two=0.0;
UpdateData(false); //更新编辑框信息
}


void CMyDlg::OnRun()
{
// TODO: Add your control notification handler code here
operand_two=atof(m_showend);
double end=0.0;


//此处为判断操作的类型;
if(operate==add)
{
end=operand_one+operand_two;
m_showend.Format("%g",end);
}
else if(operate==subtraction)
{
end=operand_one-operand_two;
m_showend.Format("%g",end);
}
else if(operate==multiplication)
{
end=operand_one*operand_two;
m_showend.Format("%g",end);
}
else if(operate==division)
{
end=operand_one/operand_two;
m_showend.Format("%g",end);
}
UpdateData(false);
}


void CMyDlg::OnDivision() //除法运算
{
// TODO: Add your control notification handler code here
operand_one=atof(m_showend);
m_showend="";
UpdateData(false);


operate=division;//操作类型为“除”;
}


void CMyDlg::OnMultiplication() //乘法运算
{
// TODO: Add your control notification handler code here
operand_one=atof(m_showend);
m_showend="";
UpdateData(false);


operate=multiplication;//操作类型为“乘”;
}


void CMyDlg::OnSubtraction() //减法运算
{
// TODO: Add your control notification handler code here
operand_one=atof(m_showend);
m_showend="";
UpdateData(false);


operate=subtraction;//操作类型为“减”;
}


void CMyDlg::OnAdd() //加法运算
{
// TODO: Add your control notification handler code here
operand_one=atof(m_showend);
m_showend="";
UpdateData(false);


operate=add;//操作类型为“加”;


}


void CMyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox("345234");
switch(nChar)
{
case 48:CMyDlg::OnZero();break;
case 49:CMyDlg::OnOne();break;
case 50:CMyDlg::OnTwo();break;
case 51:CMyDlg::OnThree();break;
case 52:CMyDlg::OnFour();break;
case 53:CMyDlg::OnFive();break;
case 54:CMyDlg::OnSix();break;
case 55:CMyDlg::OnSeven();break;
case 56:CMyDlg::OnEight();break;
case 57:CMyDlg::OnNine();break;
default:break;
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}


BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam==VK_ESCAPE) //忽略掉键盘上的esc按键消息
{
return true;
}
//CMyDlg::OnKeyDown(nChar, nRepCnt, nFlags) ;
switch(pMsg->wParam)
{
case 48:CMyDlg::OnZero();break;
case 49:CMyDlg::OnOne();break;
case 50:CMyDlg::OnTwo();break;
case 51:CMyDlg::OnThree();break;
case 52:CMyDlg::OnFour();break;
case 53:CMyDlg::OnFive();break;
case 54:CMyDlg::OnSix();break;
case 55:CMyDlg::OnSeven();break;
case 56:CMyDlg::OnEight();break;
case 57:CMyDlg::OnNine();break;
default:break;

}
}
return CDialog::PreTranslateMessage(pMsg);
}

以上是程序的主要代码;

当然了,还得为编辑框添加一个CString类型的变量,用来保存输入的数据;下面是对话框头文件中需要定义的变量


主要的代码就这些吧,怎么添加响应函数就不用说了吧,嘿嘿



标签:case,MFC,C++,break,code,CMyDlg,计算器,TODO,showend
From: https://blog.51cto.com/u_15907770/5926143

相关文章

  • 冒泡排序算法详解C++程序
    (1)冒泡排序算法:(BubbleSort)首先肯定是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到......
  • 《安富莱嵌入式周报》第294期:将C/C++代码转换为各种高级语言,超炫渲染着色器,VS2022新闻
    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104更新视频教程:USB应用实战视频教程第5期:手把手玩转USBHID免驱方式......
  • C++那些事-static
    static那些事关于作者微信公众号:当与不同类型一起使用时,Static关键字具有不同的含义。我们可以使用static关键字:静态变量:函数中的变量,类中的变量静态类的成员:类对......
  • C++那些事-const
    关于作者微信公众号:1.const含义常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。2.const作用可以定义常量constinta=100;......
  • C++笔记(自用)
    《EffectiveC++》条款11在operator=中处理“自我赋值”自我赋值证同测试:if(this==&rhs)return*this;影响并行处理效率记住副本:type*memberO=member;pmember=ne......
  • Win10 TrafficMonitor 缺少mfc140u.dll
    问题描述电脑在Win11上不能运行TrafficMonitor,提示缺少mfc140u.dll,重装Win10后还是出现了同样的问题。解决方案安装XMeters,卸载XMeters,下载TrafficMonitor。解决过程......
  • 一、Qt初尝试,做一个QT计算器《QT 入门到实战》
    学习目标了解qt的基本信息了解qt的下载及安装了解创建一个基本qt项目的流程了解信号与槽通过示例了解信号与槽的设置与编写了解控件添加的方式了解控件如何使......
  • C++不知算法系列之排序从玩转冒泡算法开始
    1.前言所谓排序,指把数据群体按个体数据的特征按从大到小或从小到大的顺序存放。排序在应用开发中很常见,如对商品按价格、人气、购买数量等排序,便于使用者快速找到数据。......
  • MFC-CSize类
     CSizesz;//创建对象//{cx=0cy=0}CSizesz1(10,25);//创建并赋值//{cx=10cy=25}SIZEsz2;sz2.cx=10;sz2.cy......
  • C++学习---cstdio的源码学习分析02-文件删除函数remove
    cstdio中的文件操作函数stdio.h中定义了文件删除函数remove,文件重命名函数rename,打开临时文件函数tmpfile,生成临时文件名函数tmpnam。接下来我们一起来分析一下remove对应的......