win10风格的MFC计算器

这篇博客介绍了如何使用MFC在VS2019环境下开发一款具备基础运算、科学计算功能的计算器,包括加减乘除、倒数、平方、开方等操作。此外,还提供了项目的运行环境需求和部分关键代码片段,并提供了完整的项目下载链接。
摘要由CSDN通过智能技术生成

功能

基本的加减乘除
倒数、平方、开方、百分数计算、科学计数法
回退、清屏
表达式和计算结果两行显示…

运行环境

vs2019

项目截图

在这里插入图片描述

部分代码

//功能函数
void CCalDlg::isZero() {
   
	UpdateData(TRUE);
	int num0 = _ttof(m_result);
	if (num0==0 && m_result.Find('.') == -1) {
   
		m_result = "";
	}
}

void CCalDlg::SaveValue1() {
   
	UpdateData(TRUE);
	m_number1 = _ttof(m_result);  //CString=>浮点数
	m_result = "";
	UpdateData(FALSE);
}

void CCalDlg::calculator() {
   
	UpdateData(TRUE);
	m_number2 = _ttof(m_result);
	double i = 0.0;
	switch (m_isign) {
   
	case 0:
		i = m_number1 + m_number2; break;
	case 1:
		i = m_number1 - m_number2; break;
	case 2:
		i = m_number1 * m_number2; break;
	case 3:
		if (m_number2 == 0.0) {
   
			i = m_number1; 
			m_result = "除数不能为0";
			UpdateData(FALSE);
			return;
		}
		else {
   
			i = m_number1 / (double)m_number2; break;
		}
	case 4:
		i = (m_number1*0.01); break;
	}
	
	if (i - int(i) <= 1e-5)
		m_result.Format(_T("%d"), (int)i);
	else
		m_result.Format(_T("%lf"), i);
	if (m_result.GetLength() > 15) {
   
		m_result.Format(_T("%e"), i);
	}

	UpdateData(FALSE);
	m_number1 = i;
	m_number2 = 0.0;

}


//小数点
void CCalDlg::OnBnClickedButton3()
{
   
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	if (m_result.Find('.') == -1) {
   
		m_result += '.';
		//m_display += '.';
	}
	UpdateData(FALSE);

}

//等号
void CCalDlg::OnBnClickedButton4()
{
   
	// TODO: 在此添加控件通知处理程序代码
	//按下平方开放,就会calFlag=true,   ===>不要拼接
	//当下等号键,flag=true,后面再按等号键时,不要拼接
	UpdateData(TRUE);
	if (!calFlag) {
   
		m_display += m_result;
	}
	UpdateData(FALSE);
	flag = true;
	calFlag = false;
	calculator();
}

//加号
void CCalDlg::OnBnClickedButton8()
{
   
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	m_display = "";
	m_display += m_result;
	m_display += '+';
	UpdateData(FALSE);
	SaveValue1();
	m_isign = 0;
	flag = false;
	calFlag = false;

}

//减号
void CCalDlg::OnBnClickedButton12()
{
   
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	m_display = "";
	m_display += m_result;
	m_display += '-';
	UpdateData(FALSE);
	SaveValue1();
	m_isign = 1;
	flag = false;
	calFlag = false;
}

//乘号
void CCalDlg::OnBnClickedButton16()
{
   
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	m_display = "";
	m_display += m_result;
	m_display += '*';
	UpdateData(FALSE);
	SaveValue1(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值