none
在做计算器是如何为数字按钮映射消息 RRS feed

  • 问题

  • 本人在尝试用MFC做一个小计算器,想获得这种功能 :
                                                               按上数字按钮和运算按钮都能在编辑框中显示,
                                                               然后再为”等于“按钮添加消息映射,在其内利用栈的方式算出这个
                                                              表达式的结果。
    在网上百度,数字按钮消息映射函数里代码是:int k=0;
    CString m_edit ;
    m_edit.Format("%d",k);
    UpdateData(FALSE);
    可我加了按“0”按钮编辑框毫无反应。这些按钮类型都只能为CButton的。
        m_edit 我选的是CString 类型。
                请高手指点啊。

    2011年8月25日 9:09

答案

  • 可以在PreTranslateMessage中过滤WK_KEYDOWN消息
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年8月25日 9:29
    版主
  • 添加按钮控件,并设置控件ID,变量

    void CGeliangDlg::OnN1()

    {

    if(isresult==false)

    {num1+="1";

    m_result=num1;

    UpdateData(false);

    }

    if(isresult==true)

    {num2+="1";

    m_result=num2;

    UpdateData(false);

    }

    }

    2011年8月25日 14:29

全部回复

  • 可以在PreTranslateMessage中过滤WK_KEYDOWN消息
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年8月25日 9:29
    版主
  • 不懂啊,能不能说得详细点啊。

    2011年8月25日 13:24
  • 添加按钮控件,并设置控件ID,变量

    void CGeliangDlg::OnN1()

    {

    if(isresult==false)

    {num1+="1";

    m_result=num1;

    UpdateData(false);

    }

    if(isresult==true)

    {num2+="1";

    m_result=num2;

    UpdateData(false);

    }

    }

    2011年8月25日 14:29
  • void CCalculator4Dlg::OnOne()
    {
     // TODO: Add your control notification handler code here
     
    }

    void CCalculator4Dlg::OnSeven()
    {
     // TODO: Add your control notification handler code here
     
    }

    void CCalculator4Dlg::OnSix()
    {
     // TODO: Add your control notification handler code here
     
    }

    void CCalculator4Dlg::OnThree()
    {
     // TODO: Add your control notification handler code here
     
    }

    void CCalculator4Dlg::OnTwo()
    {
     // TODO: Add your control notification handler code here
     
    }
    不知道是我问题问得不够清楚还是什么的。我为这十个数字按钮创建了相对应的变量。都是CButton类型啊。按你的代码我又新加了BOOL类型的isresult变量。以及int型的num1,num2.编译时有好多错误。num1+="1";这表达式根本通不过,不管我把num1

    类型改成string还是char。还请您详细说说你那代码的意思哈。谢谢你的答复。

    2011年8月26日 3:12