实现计算器代码实例

在对话框头文件中声明如下变量:

CEdit m_ret;
 

 CString num1;       //数值计算符号前面的数值
 CString num2;       //数值计算后面的数值
 BOOL isresult;        //是否按下加、减、乘、除符号
 int witch;                //是加、减、乘、除哪种计算

 

在对话框初始化代码中定义变量初始值,如下:

BOOL CTest1::OnInitDialog()
{
 CDialog::OnInitDialog();

 num1="";        //第一个数据
 num2="";        //第二个数据
 isresult=FALSE;     //保存是否点击了运算按钮
 witch=0;              //保存运算按钮

 m_result="";  //清空操作


 SetIcon(m_Icon, TRUE);   // 设置大图标
 SetIcon(m_Icon, FALSE);  // 设置小图标


 return TRUE;  // return TRUE unless you set the focus to a control
 // 异常: OCX 属性页应返回 FALSE
}

 

具体代码实现如下:

效果如下:

 

void CTest1::OnBnClickedButton1()
{
//  CString st1;
//  CString ret;
//  UpdateData(true);
//  GetDlgItemText(IDC_BUTTON_1,st1);
//  //MessageBox(st1);
//  ret=st1;
//  //ret.Format("%s",st1);
//  SetDlgItemText(IDC_EDIT_RET,ret);
//  //m_ret.SetWindowText(ret);
//  //MessageBox(ret);

 

 if(isresult==FALSE)
 {
  
  num1+="1";
  m_result=num1;
 // MessageBox(m_result,NULL,0);
  UpdateData(false);
  
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="1";
 
  m_result=num2;

//   AfxMessageBox(m_result);
//   AfxMessageBox(num2);
  UpdateData(false);
 }


}

 

void CTest1::OnBnClickedButton2()
{
 if(isresult==FALSE)
 {

  num1+="2";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {

  m_result="";
  num2="";

  num2+="2";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton3()
{
 if(isresult==FALSE)
 {

  num1+="3";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="3";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton4()
{
 if(isresult==FALSE)
 {

  num1+="4";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="4";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton5()
{
 if(isresult==FALSE)
 {

  num1+="5";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="5";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton6()
{
 if(isresult==FALSE)
 {

  num1+="6";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="6";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton8()
{
 if(isresult==FALSE)
 {

  num1+="7";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="7";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton10()
{
 if(isresult==FALSE)
 {

  num1+="8";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="8";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton7()
{
 if(isresult==FALSE)
 {
  
  num1+="9";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="9";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton14()
{
 if(isresult==FALSE)
 {

  num1+="0";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)

 {
  m_result="";
  num2="";
  num2+="0";
  m_result=num2;
  UpdateData(false);
 }

}

void CTest1::OnBnClickedButton15()
{
 if(isresult==FALSE)
 {

  num1+=".";
  m_result=num1;
  UpdateData(false);
 }
 if(isresult==TRUE)
 {
  m_result="";
  num2="";
  num2+=".";
  m_result=num2;
  UpdateData(false);
 }


}

void CTest1::OnBnClickedButton9()
{
 isresult=TRUE;
 witch=1;

}

void CTest1::OnBnClickedButton11()
{
 isresult=TRUE;
 witch=2;

}

void CTest1::OnBnClickedButton12()
{
 isresult=TRUE;
 witch=3;

}

void CTest1::OnBnClickedButton13()
{
 isresult=TRUE;
 witch=4;

}

void CTest1::OnBnClickedButton16()
{
 double number1=atof(num1);
 double number2=atof(num2);
 //AfxMessageBox(num1);  //此时,该值为空?
 //AfxMessageBox(num2);
 double result=0.0;
 switch(witch)
 {
 case 1:result=number1+number2;break;
 case 2:result=number1-number2;break;
 case 3:result=number1*number2;break;
 case 4:result=number1/number2;break;
 default:AfxMessageBox("程序运行错误");break;
 }
 
 m_result.Format("%f",result);

 UpdateData(false);


}

void CTest1::OnBnClickedButton17()
{

 m_result="0";
  UpdateData(false);
 SetDlgItemText(IDC_EDIT_RET,m_result); 
  //num1="";    
 num2="";  //将num1值赋值为空
 m_result="0";
 
 
}

技术改变世界! --狂诗绝剑
上一篇:进阶接口:查询ECS新购可用的资源实践


下一篇:《C语言接口与实现:创建可重用软件的技术》一1.2 程序设计风格