按下一个按键只能产生WM_KEYDOWN消息,如何处理这个按键的键名呢?

2025-02-27 14:48:00
推荐回答(2个)
回答1:

比方说mfc吧,添加个pretranslatemessage,其中就是这样判断的:
if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_F1)

这是一个个参考
01.LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
02.{
03. switch (message)
04. {
05. case WM_KEYDOWN: //按下键盘消息
06. switch (wParam)
07. {
08. case VK_ESCAPE: //按下【Esc】键
09. //定义消息处理程序
10. break;
11. case VK_UP: //按下【↑】键
12. //定义消息处理程序
13. break;
14. case WM_DESTROY: //窗口结束消息
15. PostQuitMessage(0);
16. break;
17.default: //其他消息
18. return DefWindowProc(hWnd, message, wParam, lParam);
19. }
20. return 0;
21.}

回答2:

TranslateMessage(&msg)将WM_KEYDOWN转换成WM_CHAR消息,然后通过消息处理过程(WndProc)进行处理!
MFC系统会自动调用!