1
在win32中有一個函數可以接受CTRL,ALT或大寫鎖鍵的虛擬鍵代碼&返回一個字符串,說「CTRL」,「ALT」,「CAPSLOCK」?從WM_KEYDOWN消息中檢測到非字符按下
我只能接收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";
「該函數可能爲不同的輸入語言環境提供不同的結果」。例如,不要指望Ctrl在德語中被命名爲Ctrl。 – MSalters