使用MFC制作简单计算器
在文件开头定义了intoper;CStringnum1;CStringnum2;BOOLisresult;以下是加法按钮、等号按钮、1、2按钮的功能voidCCalDlg...
在文件开头定义了
int oper;
CString num1;
CString num2;
BOOL isresult;
以下是加法按钮、等号按钮、1、2按钮的功能
void CCalDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
isresult=TRUE;
m_edit="";
UpdateData(false);
oper=1;
}
void CCalDlg::OnButtondeng()
{
// TODO: Add your control notification handler code here
double result=0;
double firnum=atof(num1);
double secnum=atof(num2);
switch(oper)
{case 1:result=firnum+secnum;
m_edit.Format("%g",result);
UpdateData(false);
break;}
}
void CCalDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if (isresult=FALSE)
{m_edit=m_edit+"1";
num1=m_edit;
UpdateData(false);}
if (isresult=TRUE)
{m_edit=m_edit+"1";
num2=m_edit;
UpdateData(false);}
}
void CCalDlg::OnButton2()
{
// TODO: Add your control notification handler code here
if (isresult=FALSE)
{m_edit=m_edit+"2";
num1=m_edit;
UpdateData(false);}
if (isresult=TRUE)
{m_edit=m_edit+"2";
num2=m_edit;
UpdateData(false);}
}
在运行的时候,发现他们能正确显示,但等号不起作用(按了等号之后没反应,或者说是还只是显示第二个数字),请教一下是哪里错了?为什么错?要怎么改?谢了!
初始化的时候还定义了isresult=FALSE的 展开
int oper;
CString num1;
CString num2;
BOOL isresult;
以下是加法按钮、等号按钮、1、2按钮的功能
void CCalDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
isresult=TRUE;
m_edit="";
UpdateData(false);
oper=1;
}
void CCalDlg::OnButtondeng()
{
// TODO: Add your control notification handler code here
double result=0;
double firnum=atof(num1);
double secnum=atof(num2);
switch(oper)
{case 1:result=firnum+secnum;
m_edit.Format("%g",result);
UpdateData(false);
break;}
}
void CCalDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if (isresult=FALSE)
{m_edit=m_edit+"1";
num1=m_edit;
UpdateData(false);}
if (isresult=TRUE)
{m_edit=m_edit+"1";
num2=m_edit;
UpdateData(false);}
}
void CCalDlg::OnButton2()
{
// TODO: Add your control notification handler code here
if (isresult=FALSE)
{m_edit=m_edit+"2";
num1=m_edit;
UpdateData(false);}
if (isresult=TRUE)
{m_edit=m_edit+"2";
num2=m_edit;
UpdateData(false);}
}
在运行的时候,发现他们能正确显示,但等号不起作用(按了等号之后没反应,或者说是还只是显示第二个数字),请教一下是哪里错了?为什么错?要怎么改?谢了!
初始化的时候还定义了isresult=FALSE的 展开
1个回答
展开全部
void CCalDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
UpdateData();
isresult=TRUE;
num1 = m_edit;
m_edit="";
UpdateData(false);
oper=1;
}
void CCalDlg::OnButtondeng()
{
// TODO: Add your control notification handler code here
UpdateData();
num2 = m_edit;
double result=0;
double firnum=atof(num1);
double secnum=atof(num2);
switch(oper)
{case 1:result=firnum+secnum;
m_edit.Format("%g",result);
UpdateData(false);
break;}
}
在使用m_edit前,要先updatedata更新控件内容到变量。
追问
我在1、2的数字按钮那里有num1=m_edit;num2=m_edit,加了UpdateData();之后却还是无法显示,但是像你这么分别加在加法和等号的按钮里面就能输出了。这是为什么呢?
追答
UpdateData();参数不同,用处相反,你另外两个里面用的也不好。我只改了两个关键的,够用了。
UpdateData(TRUE)
——刷新控件的值到对应的变量。(外部输入值交给内部变量)
即:控件的值—>变量。
UpdateData(FALSE)
—— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)
即:变量值—>控件显示。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询