Я пытался использовать следующий код для прослушивания простых событий клавиатуры в приложении на основе диалога, но при нажатии этих клавиш ничего не происходит. Может ли кто-нибудь сказать мне, что пошло не так?Прослушивание событий клавиатуры в MFC в PreTranslateMessage()
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()' и следите за ним в окне вывода отладчика. –
@ VladFeinstein он работает здесь для тестирования, но вы правы 'OutputDebugString' лучше. –