zoukankan      html  css  js  c++  java
  • VS2010 MFC中屏蔽ESC和ENTER键关闭对话框的方法

    重载PreTranslateMessage()函数,在此函数里捕捉ESC和ENTER键按下时的消息。
    1.完全屏蔽ESC键与ENTER回车键
    BOOL CLXTDlg::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)    //回车
            return TRUE;
        if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)    //ESC
            return TRUE;
        return CDialogEx::PreTranslateMessage(pMsg);
    }

    由于是完全屏蔽了,所以按钮上按ENTER键也是没有反应的。

    回车键ENTER处理的是CDilog::OnOk()函数,因此,重载以下函数,并在PreTranslateMessage()函数中只屏蔽ESC就可以在按钮上使用ENTER键了。

    void CLXTDlg::OnOK()
    {
    // TODO: Add extra validation here

    //CDialogEx::OnOK();  //注意此句注释掉
    }

    2.完全屏蔽ESC键,捕捉ENTER回车键
    BOOL CLXTDlg::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN )    
        {
            if(GetFocus()->GetDlgCtrlID()==IDC_LXT)//按下回车,如果当前焦点是在自己期望的控件上
            {                                          
                CLxtDlg::OnBnClickedBtnSend();//添加自己的处理代码
            }
             return TRUE;
        }
        if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)    
            return TRUE; 
        return CDialogEx::PreTranslateMessage(pMsg);
    }

  • 相关阅读:
    撕裂寂寞
    创业中的“孙子兵法”
    生命的颜色占卜
    常常激励我们的36句话
    创建自己的3D虚拟身体!
    富人和穷人的八大差异
    有时,孤单是一种享受
    JavaScript类
    上网的十条基本礼节
    程序设计中的感悟
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/2954637.html
Copyright © 2011-2022 走看看