MFC简单计算器

最近开始学习MFCvs2010),看了一段时间教程始终没有感觉,所以就想做一个实际的东西熟练一下。

觉得初学MFC写个计算器吧,模拟一下微软的calc,其实很早就有这种想法啦,哈哈!言归正传吧!!

这是最终的界面,也是一开始设计的界面;


1.放置的控件有

               Group Box----------1

EDIT----------------1

BUTTON-----------17

2.属性的修改

Group Box    Caption="计算器"

EDIT              IDC_EDIT_DISPLAY

BUTTON      修改后如上图所示;

3.这个小程序的操作说明

参考windows的计算器

4.实现步骤

(一)新建“MFC_CALC”对话框工程,控件已放置如上所示

(二)为MFC_CALCDlg类添加5private变量:

double m_num1,      double m_num2,      double m_result,     CString m_str,      char m_state;

存储第一个操作数           存储第二个操作数     存储结果   记录,处理中间数据     记录操作的类型(+-x,/)

(三)为按钮增加处理函数

1)为数字键(0----9)小数点键,增加处理函数(双击对应按钮控件即可)

添加如下代码

  void CMFC_CALCDlg::OnBnClickedButton1()

{

// TODO: 在此添加控件通知处理程序代码

m_str+='1';

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

}//数字键---'1'的处理代码;

void CMFC_CALCDlg::OnBnClickedButton2()

{

// TODO: 在此添加控件通知处理程序代码

m_str+='2';

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

}//数字键---“2”的处理代码;

//其他键盘(3-9,0)都按上述处理即可;

void CMFC_CALCDlg::OnBnClickedButtondot()

{

// TODO: 在此添加控件通知处理程序代码

m_str=m_str+'.';

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

}//小数点键的处理代码;

2)  加减乘除键的处理代码

void CMFC_CALCDlg::OnBnClickedButtonAdd()

{

// TODO: 在此添加控件通知处理程序代码

m_num1=_tcstod(m_str,0);

m_str.Empty();

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

m_state='+';

}


void CMFC_CALCDlg::OnBnClickedButtonSub()

{

// TODO: 在此添加控件通知处理程序代码

m_num1=_tcstod(m_str,0);

m_str.Empty();

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

m_state='-';

}


void CMFC_CALCDlg::OnBnClickedButtonMul()

{

// TODO: 在此添加控件通知处理程序代码

m_num1=_tcstod(m_str,0);

m_str.Empty();

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

m_state='x';

}


void CMFC_CALCDlg::OnBnClickedButtonDiv()

{

// TODO: 在此添加控件通知处理程序代码

m_num1=_tcstod(m_str,0);

m_str.Empty();

SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

m_state='/';

}

3)为“=”"CE"键添加处理代码

void CMFC_CALCDlg::OnBnClickedButton25Ans()

{

// TODO: 在此添加控件通知处理程序代码

    m_num2=_tcstod(m_str,0);

switch(m_state)

{

case '+':

m_result=m_num1+m_num2;break;

case '-':

m_result=m_num1-m_num2;break;

case 'x':

m_result=m_num1*m_num2;break;

case '/':

m_result=m_num1/m_num2;break;

}

CString cs;

cs.Format(_T("%lf"),m_result);

SetDlgItemText(IDC_EDIT_DISPLAY,cs);

m_str.Empty();

}


void CMFC_CALCDlg::OnBnClickedButtonCe()
{

 // TODO: 在此添加控件通知处理程序代码

 m_str.Empty();

 m_num1=0;

 m_num2=0;

 m_result=0;

 m_state='0';

 SetDlgItemText(IDC_EDIT_DISPLAY,m_str);

}

(四)完成啦!实验一下~~


难点说明,把CString转换为double型的变量要用到函数_tcstod函数;


猜你喜欢

转载自blog.csdn.net/u010795146/article/details/8972844