VS2010MFC中屏蔽ESC和ENTER键关闭对话框的方法

it2022-05-09  38

 

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

 

 

转载于:https://www.cnblogs.com/lxt287994374/archive/2013/03/11/2954637.html

相关资源:数据结构—成绩单生成器

最新回复(0)