MFC对话框处理Esc和Enter键,避免对话框关闭

要在MFC对话框中处理ESC和ENTER消息,避免对话框退出,您可以重写对话框类的PreTranslateMessage函数,并在该函数中处理这些消息。

首先,打开对话框类的头文件(.h文件),添加以下声明:

    afx_msg BOOL PreTranslateMessage(MSG* pMsg);

然后在.cpp文件中,实现PreTranslateMessage函数:

复制代码
    BOOL YourDialog::PreTranslateMessage(MSG* pMsg)
    {
        if (pMsg->message == WM_KEYDOWN)
        {
            if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
                return TRUE; // 返回TRUE表示消息已被处理,不再传递给窗口
        }

        return CDialog::PreTranslateMessage(pMsg);
    }
复制代码

在这个函数中,我们检查消息的类型是否是键盘消息(WM_KEYDOWN),如果是,则检查按下的键是ESC键还是ENTER键。如果是其中一个键,则返回TRUE表示消息已被处理,不再传递给窗口,从而避免对话框退出。

如果要处理Alt+F4,则需要添加如下代码:

BOOL bAlt = GetKeyState(VK_MENU) & 0x8000;
else if (pMsg->message == WM_SYSKEYDOWN)
{
    if (pMsg->wParam == VK_F4 && bAlt)
    {
        return TRUE;
    }
}

 

posted @   快雪  阅读(212)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示