OnKeyDown不行
Dialog程序本来没有直接响应键盘的事件,如果你用OnKeyDown会发现不起作用。
那么你想按下“左键”、“W键”、“9键盘”应该怎么响应呢?
重载基类的BOOL PreTranslateMessage(MSG* pMsg)函数
最简单的键盘响应函数
头文件声明:
BOOL PreTranslateMessage(MSG* pMsg);
源文件定义:
BOOL CmfcDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case VK_ESCAPE://屏蔽ESCAPE键
return TRUE;
//VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) 不区分大小写
case 'A':
AfxMessageBox(_T("A key down"));return TRUE;
case VK_RIGHT:
AfxMessageBox(_T("-> key down"));return TRUE;
case '0':
AfxMessageBox(_T("0 key down"));return TRUE;
default:
return TRUE;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
本文介绍了一种在Dialog程序中实现键盘事件响应的方法。通过重载PreTranslateMessage函数,可以有效地捕捉并处理WM_KEYDOWN消息,实现对特定按键如ESC、A键、右箭头键等的响应。
4504

被折叠的 条评论
为什么被折叠?



