Есть ли в 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";