mfc中我的对话框按下enter就会自动关闭,如何让他不响应enter热键
时间: 2023-06-01 12:08:03 浏览: 102
MFC中在一个对话框中弹出另一个对话框.pdf
可以在对话框类的OnInitDialog()函数中加入如下代码:
m_hWndFocus = m_hWnd; // 记录当前焦点窗口句柄
// 禁用 Esc 和 Enter 热键
::RegisterHotKey(m_hWnd, 1, MOD_ALT | MOD_NOREPEAT, VK_ESCAPE);
::RegisterHotKey(m_hWnd, 2, MOD_NOREPEAT, VK_RETURN);
然后在对话框类的PreTranslateMessage(MSG* pMsg)函数中加入如下代码:
if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN))
{
CWnd* pWndFocus = CWnd::FromHandle(m_hWndFocus);
if (pWndFocus && pWndFocus->IsDialogMessage(pMsg))
{
// 如果有控件获取了焦点并处理了按键消息,则返回 TRUE
return TRUE;
}
}
这样就可以禁用 Enter 热键响应了。
阅读全文