vs实现my first calculator

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
}

计算器没有中间输入式,如图直接产生结果
在这里插入图片描述

发布了4 篇原创文章 · 获赞 0 · 访问量 117

猜你喜欢

转载自blog.csdn.net/qq_43743037/article/details/98949989