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);
    }

  • 相关阅读:
    Redhat Lighttpd安装配置
    PHP正则表达式学习参考的文章
    50点提高PHP编程效率 引入缓存提升性能
    位运算符C语言
    Redhat Mongodb学习笔记
    Redhat Cacti安装配置
    HTTP 状态代码表示什么意思?
    map容器对象插入数据的4种方式
    socket网络间通信初识
    仿美团项目-第一部分
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/2954637.html
Copyright © 2011-2022 走看看