MFC屏蔽按键ESC、ENTER、Alt+F4

 

1、重写

  重写下面的函数

virtual BOOL PreTranslateMessage(MSG* pMsg);

 

2、函数体

BOOL Cfile_trans_codeDlg::PreTranslateMessage(MSG* pMsg)
{
    if (WM_KEYDOWN == pMsg->message )
    {
        switch (pMsg->wParam)
        {
        case VK_ESCAPE: //Esc按键事件
            return TRUE;

        case VK_RETURN: //Enter按键事件
            return TRUE;

        default:
            break;
        }
    }

    if ( (WM_SYSKEYDOWN == pMsg->message) // WM_SYSKEYDOWN  表示ALT键按下
        && 
        (VK_F4 == pMsg->wParam) )
    {
        return TRUE;
    }

    return CDialogEx::PreTranslateMessage(pMsg);
}

 

3、注意:

  如果 窗口继承 CDialog, 则上面的函数返回值应为:

return CDialog::PreTranslateMessage(pMsg);

  若继承CDiaologEX,则返回值应为:

return CDialogEx::PreTranslateMessage(pMsg);

 

  这样,按下enter 等屏蔽的按键,窗体就不会关闭了

 

posted @ 2020-08-14 11:53  mohist  阅读(816)  评论(0编辑  收藏  举报