刚学MFC,想做一个实现加法计算的对话框,不知道哪里出问题了

一鸣惊天 2011-09-13 10:34:25
m_edit1,m_edit2和m_edit3,我设制为int的,代表两个加数和结果。

void C加法器Dlg::OnBnClickedOk()
{
C加法器Dlg jia;
jia.DoModal();
jia.UpdateData(TRUE);
jia.m_edit3=jia.m_edit1+jia.m_edit2;
jia.UpdateData(FALSE);
jia.DoModal();



// TODO: Add your control notification handler code here
CDialogEx::OnOK();
}

应该怎么改。。。
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一鸣惊天 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 0153 的回复:]
做法完全错了,应该是:

C/C++ code
void C加法器Dlg::OnBnClickedOk()
{
UpdateData(TRUE);
m_edit3 = m_edit1 + m_edit2;
UpdateData(FALSE);
// TODO: Add your control notification handler code here
……
[/Quote]

谢谢
一鸣惊天 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiuchang 的回复:]
问题是什么?

把最后一行注释掉
CDialogEx::OnOK();
[/Quote]

还是不行。
我在m_edit1中输入2,在m_edit2中输入3,按OK,弹出的不是2+3=5,而是0+0=0;再按CANCEL,弹出窗口“中止”,“重试”,“忽略”。。。
0153 2011-09-13
  • 打赏
  • 举报
回复
做法完全错了,应该是:
void C加法器Dlg::OnBnClickedOk()
{
UpdateData(TRUE);
m_edit3 = m_edit1 + m_edit2;
UpdateData(FALSE);
// TODO: Add your control notification handler code here
//CDialogEx::OnOK();
}

另外,如果你没有做过特殊处理,一般不要把需要显示结果的事件放在IDOK和IDCANCEL按钮中,因为默认按了这两个按钮窗口就退出了。
jiuchang 2011-09-13
  • 打赏
  • 举报
回复
问题是什么?

把最后一行注释掉
CDialogEx::OnOK();
计算mfc 代码 基于VC++简易计算器实验详细过程 硬件环境: 软件环境:WinXP+VC++6.0 一、实验目的:构造一个类似Windows自带的计算器一样的简易计算器,能够连续进行加、减、乘、除四则整数运算,并能随时清除计算结果进行下一次计算。 二、具体实验步骤: 1、添加编辑框对应的变量m_Display 2、添加运算符类型变量 char CompuType; //用于存储运算符类型 CString FirstInput; //用于保存运算符前面的输入值 3、添加各种按钮的单击事件处理方法的函数 控件名称列表: 主对话框标识:IDD_CALC_DIALOG 关于对话框标识:IDD_ABOUTBOX 编辑框: IDC_EDIT 运算符按钮标识: 加: IDC_BUTTONADD 减: IDC_BUTTONSUBTRACT 乘: IDC_BUTTONMULTIPLY 除: IDC_BUTTONDIVIDE 等于: IDC_BUTTONEQUER 0~9数字符按钮标识: 7:IDC_BUTTONSEVEN 8:DC_BUTTONEIGHT 9: IDC_BUTTONNINE 4:IDC_BUTTONFOUR 5:IDC_BUTTONFIVE 6:IDC_BUTTONSIX 1:C_BUTTONONE 2:IDC_BUTTONTWO 3:IDC_BUTTONTHREE 0:IDC_BUTTONZERO 清除按钮标识:IDC_BUTTONCLEAR 关于按钮标识:IDC_BUTTONABOUT 类的成员变量: class CCalcDlg : public CDialog { // Construction public: char CompuType; //用于存储运算符类型 CCalcDlg(CWnd* pParent = NULL); // standard constructor //… (省略) protected: CString FirstInput; //用于保存运算符前面的输入值 //… (省略) }; 按钮单击的事件对应方法程序列表: void CCalcDlg::OnButtonone() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("1"); UpdateData(FALSE); } void CCalcDlg::OnButtontwo() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("2"); UpdateData(FALSE); } void CCalcDlg::OnButtonthree() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("3"); UpdateData(FALSE); } void CCalcDlg::OnButtonfour() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("4"); UpdateData(FALSE); } void CCalcDlg::OnButtonfive() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("5"); UpdateData(FALSE); } void CCalcDlg::OnButtonsix() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("6"); UpdateData(FALSE); } void CCalcDlg::OnButtonseven() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("7"); UpdateData(FALSE); } void CCalcDlg::OnButtoneight() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("8"); UpdateData(FALSE); } void CCalcDlg::OnButtonnine() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("9"); UpdateData(FALSE); } void CCalcDlg::OnButtonzero() { // TODO: Add your control notification handler code here m_Display = m_Display+_T("0"); UpdateData(FALSE); } void CCalcDlg::OnButtonadd() { // TODO: Add your control notification handler code here FirstInput = m_Display; m_Display = _T(""); UpdateData(FALSE); CompuType='+'; } void CCalcDlg::OnButtonsubtract() { // TODO: Add your control notification handler code here FirstInput = m_Display; m_Display = _T(""); UpdateData(FALSE); CompuType='-'; } void CCalcDlg::OnButtondivide() { // TODO: Add your control notification handler code here FirstInput = m_Display; m_Display = _T(""); UpdateData(FALSE); CompuType='/'; } void CCalcDlg::OnButtonmultiply() { // TODO: Add your control notification handler code here FirstInput = m_Display; m_Display = _T(""); UpdateData(FALSE); CompuType='*'; } void CCalcDlg::OnButtonequer() { // TODO: Add your control notification handler code here int TempResult; //定义存储结果的临时变量 int FirstInputValue,NewInputValue; //定义进行运算的临时变量 FirstInputValue=atoi(FirstInput.GetBuffer(24)); //将字符串变量转换成整型值 FirstInput.ReleaseBuffer(-1); NewInputValue=atoi(m_Display.GetBuffer(24)); //将字符串变量转换成整型值 m_Display.ReleaseBuffer(-1); switch(CompuType) //开关语句判断运算符类型 { case '+': TempResult = FirstInputValue + NewInputValue; //将加法运算结果传给临时变量TempResult break; case '-': TempResult = FirstInputValue - NewInputValue; //将减法运算结果传给临时变量TempResult break; case '*': TempResult = FirstInputValue * NewInputValue; //将乘法运算结果传给临时变量TempResult break; case '/': TempResult = FirstInputValue / NewInputValue; //将除法运算结果传给临时变量TempResult break; } sprintf(m_Display.GetBuffer(24),"%d",TempResult); //将运算结果变量值传递给编辑控件变量m_Display m_Display.ReleaseBuffer(-1); UpdateData(FALSE); //刷新编辑控件变量,并在编辑框中显示运算结果 } void CCalcDlg::OnButtonclear() { // TODO: Add your control notification handler code here m_Display.Empty(); //清空存储在变量m_Display中的数据 UpdateData(FALSE); } void CCalcDlg::OnButtonabout() { // TODO: Add your control notification handler code here CAboutDlg DlgAbout; DlgAbout.DoModal();

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧