一个简单的计算器程序,有点问题
class CCalculatorDlg : public CDialog
{
// Construction
public:
CCalculatorDlg(CWnd* pParent = NULL); // standard constructor
void OnEnternum();
void OnComputer();
float computer(float num,operation oper);
private:
BOOL m_bnext; //用来记录数据后是否为运算符
int m_ncomflag; //记录输入运算符次数
float m_numold; //记录上次运算结果
operation m_oper; //记录上次运算符号
};
//m_nnum 编辑框 输出结果用
void CCalculatorDlg::OnEnternum()
{
// TODO: Add your control notification handler code here
CString strnum,strold;
this->GetDlgItemText(IDC_EDITDIS,strold);
this->GetFocus()->GetWindowText(strnum);
m_nnum=atoi((char *)&strnum);
if(m_bnext)
{
this->SetDlgItemText(IDC_EDITDIS,strold);
m_bnext=FALSE;
}
else
{
if(strold=="0")
this->SetDlgItemText(IDC_EDITDIS,strold);
else
this->SetDlgItemText(IDC_EDITDIS,strold+strnum);
}
UpdateData(TRUE);
TRACE("%d",m_nnum);
}
void CCalculatorDlg::OnComputer()
{
// TODO: Add your control notification handler code here
CString stroper;
m_ncomflag++;
m_bnext=TRUE;
if(m_ncomflag>1)
{
m_numold=computer(m_numold,m_oper);
this->GetFocus()->GetWindowText(stroper);
if(stroper=="+") m_oper=add;
if(stroper=="-") m_oper=plus;
if(stroper=="*") m_oper=multiply;
if(stroper=="/") m_oper=devide;
}
else
{
this->GetFocus()->GetWindowText(stroper);
if(stroper=="+") m_oper=add;
if(stroper=="-") m_oper=plus;
if(stroper=="*") m_oper=multiply;
if(stroper=="/") m_oper=devide;
m_numold=m_nnum;
}
m_nnum=m_numold;
UpdateData(FALSE);
}
float CCalculatorDlg::computer(float num,operation m_oper)
{
float result;
switch(m_oper)
{
case add:
result=num+m_nnum;
break;
case plus:
result=num-m_nnum;
break;
case multiply:
result=num-m_nnum;
case devide:
if(m_nnum==0)
{
AfxMessageBox("除数为0,出错!");
result=0;
exit;
}
else
result=num/m_nnum;
break;
}
return result;
}
void CCalculatorDlg::OnEquall()
{
// TODO: Add your control notification handler code here
m_ncomflag=0;
if(!m_bnext)
{
m_numold=computer(m_numold,m_oper);
m_nnum=m_numold;
UpdateData(FALSE);
}
}
void CCalculatorDlg::OnButtoncls()
{
// TODO: Add your control notification handler code here
this->SetDlgItemText(IDC_EDITDIS,"0");
m_numold=0;
}
OnEnternum();函数响应所有单击从 0到9这9个按钮的单击事件
OnComputer(); 响应单击 “+” “-”“*”“/”按钮
OnEquall() 是=
OnButtoncls() 是清零
这个我做一个简单的比如说 3+2 结果都出不来,程序是看书上的,自己看了半天不知道问题在哪 请指教