mfc基于对话框的简单四则运算计算器

这篇博客介绍了如何使用MFC(Microsoft Foundation Classes)创建一个基于对话框的四则运算计算器。首先,博主创建了一个对话框并设置了相应的控件,包括按钮和编辑框。接着,定义了枚举类型来表示四种运算符,并定义了存储输入值和运算符的变量。博主还实现了保存第一个输入值、计算结果和处理不同运算的功能。通过双击控件触发事件处理,实现了数字和运算符的输入、小数点、等于号以及清屏等操作。
摘要由CSDN通过智能技术生成

1.①创建mfc对话框窗口,对话框中所有控件都delete。

   ②绘制界面,按键都button,显示区域edit control,计算器名字用static text。

   ③所有控件ID改成语义化ID(可不改),如数字1 IDC_BUTTON_NUM1,改变caption值(显示)。

   ④edit control属性中,外观中align text表示显示对齐位置(计算器靠右对齐,选择right),行为中的read only选择true(文本框只用来显示,故只读),最上方的static text标题属性align text选择居中(center)。

   ⑤在edit control右键添加变量,选择value Cstring,变量名字(如:mmm)。

2.①双击所有控件代码编辑。

   ②在calculatorDlg.h中添加

        //运算符
        enum CALCULATOR_FLAG {
        FLAG_JIA = 0,
        FLAG_JIAN,
        FLAG_CHENG,
        FLAG_CHU,
        };

 

       private:
       //输入的2个值
       double mNum1;
       double mNum2;
       //运算符号
       CALCULATOR_FLAG mFlag;

    没有的话加

       void SaveFirstValue(); //保存第一个输入值
       void Calculator();//计算

  ③在calculatorDlg.cpp里添加

     Calculator()函数具体如下:

    

void CcalculatorDlg::Calculator()   //注意CcalculatorDlg大小写
{
UpdateData(TRUE);
mNum2 = _wtof(mmm);
double result = 0.0f;
switch (mFlag)
{
case FLAG_JIA: //加
result = mNum1 + mNum2;
break;
case FLAG_JIAN: //减
result = mNum1 - mNum2;
break;
case FLAG_CHENG: //乘
result = mNum1 * mNum2;
break;
case FLAG_CHU: //除
if (mNum2 == 0.0f)
{
result = mNum1;
}
else
{
result = mNum1 / mNum2;
}
break;
default:
break;
}
//如果浮点数其实是个整数,就显示为整数
if (result - int(result) <= 1e-5)
{
mmm.Format(L"%d", (int)result);
}
else
{
mmm.Format(L"%f", result);
}
UpdateData(FALSE);
mNum1 = result;
mNum2 = 0.0f;
}

  SaveFirstValue()函数具体如下:

void CcalculatorDlg::SaveFirstValue()    //注意CcalculatorDlg大小写
{
UpdateData(TRUE);
mNum1 = _wtof(mmm);
mmm= L"";
UpdateData(FALSE);
}

  数字键:

void CcalculatorDlg::OnBnClickedButtonNum0()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
mmm += L"0";
UpdateData(FALSE);

}                                //不同的数字只改变L“0”中0的位置

  运算键:

  +:

void CcalculatorDlg::OnBnClickedButtonNumjia()
{
// TODO: 在此添加控件通知处理程序代码
SaveFirstValue();
mFlag = FLAG_JIA;
}

  -:

void CcalculatorDlg::OnBnClickedButtonNumjian()
{
// TODO: 在此添加控件通知处理程序代码
SaveFirstValue();
mFlag = FLAG_JIAN;
}

  *:

void CcalculatorDlg::OnBnClickedButtonNumcheng()
{
// TODO: 在此添加控件通知处理程序代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值