我试图使用以下代码来侦听基于对话框的应用程序中的简单键盘事件,但按下这些键时没有任何事情发生。有人可以告诉我哪里出了问题?在PreTranslateMessage中监听MFC中的键盘事件
BOOL PreTranslateMessage(MSG *pMsg)
{
CListeningApp* App = (CListeningApp*) AfxGetApp();
int x=(int)pMsg->wParam;
if(pMsg->message==WM_KEYDOWN)
{
if(x==VK_UP)
MessageBox(NULL,L"UP",L"UP", MB_OK);
if(x==VK_DOWN)
MessageBox(NULL,L"DOWN",L"DOWN", MB_OK);
if(x==VK_RIGHT)
MessageBox(NULL,L"RIGHT",L"RIGHT", MB_OK);
if(x==VK_LEFT)
MessageBox(NULL,L"LEFT",L"LEFT", MB_OK);
if(x==65)
MessageBox(NULL,L"Keyboard Event",L"You Pressed the letter a", MB_OK);
}
return TRUE;
}
因为没有人叫'PreTranslateMessage'。你的'PreTranslateMessage'只是一个独立的函数。你可以将'PreTranslateMessage'重命名为'foobar',结果是一样的。阅读[this](https://msdn.microsoft.com/library/kkbhxcs2.aspx)。 –
只是一个建议:永远不要用'MessageBox()'调试任何东西,特别是不要使用键盘事件处理程序。使用':: OutputDebugString()'并在调试器的Output窗口中观察它。 –
@VladFeinstein它在这里用于测试目的,但你是正确的'OutputDebugString'更好。 –