win32中是否有一个函数可以接受CTRL,ALT或capslock键的虚拟键代码并返回一个字符串,说明“CTRL”,“ALT”,“CAPSLOCK”?

我只能接收WM_KEYDOWN消息,而不能接收WM_CHAR消息。我知道我可以通过将虚拟键代码传递给函数ToUnicode()来确定已按下的字符键,它将告诉我已按下的字符键。

但是,如果我通过CTRL虚拟键代码,该函数将不返回任何内容。

char keyPressed[256];
KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
GetKeyboardState((PBYTE)&keyState);
ToUnicode(kbdStruct.vkCode, kbdStruct.scanCode, (PBYTE)&keyState, (LPWSTR)&keyPressed, sizeof(keyPressed) / 2, 0);
// so if the key pressed was 'a' then keyPressed = "a";
// & if the key pressed was CTRL then keyPressed = "CTRL";

最佳答案

您可以将lParam值从WM_KEYDOWN传递给 GetKeyNameText ,它将为您返回密钥名称。

关于c++ - 从WM_KEYDOWN消息中检测到非字符按下,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6644313/

10-10 19:51