VS计算器
初学vs,如有出错请多指正。部分代码来源于网络,其中代码大多重复,自行搜索与体会
1.工程命名
2.基于对话框类,这跟工具集的调用也有关联,
3.工具箱的灰名,消失,参考csdn的解决
4.MFC中未定义标识符的解决,在resource.h把函数定义
5 类添加函数,会有无法识别该函数的警告,可重启vs,
6 m_coff的初始化1.0,初始化计算器
下面是部分代码,
数字N的button:
void CmycalculatorDlg::OnOnButtonN()
{
if (m_coff == 1.0)
m_second = m_second * 10 + N;
else
{
m_second = m_second + N * m_coff;
m_coff *= 0.1;
}
UpdateDisplay(m_second);
乘法符号:
void CmycalculatorDlg::OnButtonAdd()
{
Calculate();
m_operator = "+";
// TODO: 在此添加控件通知处理程序代码
}
其他符号类似;
下面是本计算器最关键的函数,实现了等于号及其他符号运算的功能:
void CmycalculatorDlg::OnButtonEqual()
{
Calculate();
m_first = 0.0;
m_operator = "+";
// TODO: 在此添加控件通知处理程序代码
}
void CmycalculatorDlg::Calculate(void)
{
switch (m_operator.GetAt(0))
{
case '+': m_first += m_second; break;
case '-': m_first -= m_second; break;
case '*': m_first *= m_second; break;
case '/':
if (fabs(m_second) <= 0.000001)
{
m_display = "除数不能为零";
UpdateData(false);
return;
}
m_first /= m_second;
break;
}
m_second = 0.0;
m_coff = 1.0;
UpdateDisplay(m_first);//更新编辑框的显示内容
}
void CmycalculatorDlg::UpdateDisplay(double lVal)
{
m_display.Format(_T("%f"), lVal);
int i = m_display.GetLength();
//格式化输出,将输出结果后的零全部截去
while (m_display.GetAt(i - 2) == '0')
{
m_display.Delete(i - 2, 1);
i--;
}
UpdateData(false); //更新显示编辑框变量m_display
}
计算器没有中间输入式,如图直接产生结果