我試圖使用以下代碼來偵聽基於對話框的應用程序中的簡單鍵盤事件,但按下這些鍵時沒有任何事情發生。有人可以告訴我哪裏出了問題?在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'更好。 –