none
怎么判断按键 RRS feed

  • 问题

  • void CMFDlg::OnEnUpdateEdit1()
    {
    SumWater(); //自定义函数,计算的
    }

    我想判断 按键,如果是空格键就清空edit

    要怎么判断呢?

    谢谢

    2014年6月8日 12:39

答案

  • 不是的,是在CMFCDlg类中添加虚函数PreTranslateMessage。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年6月16日 0:55
    版主
  • 可以再CMFDlg类中重写PreTranslateMessage虚函数,在里面过滤WM_KEYDOWN消息,判断空格键是否按下,比如这样:
    BOOL CMFDlg::PreTranslateMessage(MSG* pMsg)
    {
       if(WM_KEYDOWN == pMsg->message && VK_SPACE == pMsg->wParam)
       {
            SetDlgItemText(IDC_EDIT1, _T(""));
            return TRUE;
       }
       return CDialog::PreTranslateMessage(pMsg);
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已建议为答案 长流 2014年6月26日 13:46
    • 已标记为答案 angel725 2014年6月29日 2:31
    2014年6月8日 13:24
    版主

全部回复

  • 可以再CMFDlg类中重写PreTranslateMessage虚函数,在里面过滤WM_KEYDOWN消息,判断空格键是否按下,比如这样:
    BOOL CMFDlg::PreTranslateMessage(MSG* pMsg)
    {
       if(WM_KEYDOWN == pMsg->message && VK_SPACE == pMsg->wParam)
       {
            SetDlgItemText(IDC_EDIT1, _T(""));
            return TRUE;
       }
       return CDialog::PreTranslateMessage(pMsg);
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已建议为答案 长流 2014年6月26日 13:46
    • 已标记为答案 angel725 2014年6月29日 2:31
    2014年6月8日 13:24
    版主
  • void CMFDlg::OnEnUpdateEdit1()  
    { 
           BOOL CMFDlg::PreTranslateMessage(MSG* pMsg)//错误1
           {//错误2
                  if(WM_KEYDOWN == pMsg->message && VK_SPACE == pMsg->wParam)
                  {
                         SetDlgItemText(IDC_EDIT1, _T(""));
                         return TRUE;
                  }
                         return CDialog::PreTranslateMessage(pMsg);
                  }
           SumWater();
    }

    是这样吗?

    总是有这两个错误

    1 IntelliSense:  不能在成员函数 "CMFCDlg::PreTranslateMessage" 的类外部重新声明该函数 c:\Users\hui\Documents\Visual Studio 2013\Projects\MFCsum\MFCsum\MFCDlg.cpp 198 19 MFCsum

    2 IntelliSense:  应输入“;” c:\Users\hui\Documents\Visual Studio 2013\Projects\MFCsum\MFCsum\MFCDlg.cpp 199 2 MFCsum

    没弄明白


    • 已编辑 angel725 2014年6月9日 12:45
    2014年6月9日 12:40
  • 不是的,是在CMFCDlg类中添加虚函数PreTranslateMessage。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年6月16日 0:55
    版主