Получить код сканирования из сообщения WM_CHAR

Как я могу преобразовать символ любого языка, который я ловлю с помощью WM_CHAR в WndProc код сканирования клавиатуры? Например, если нажата кнопка x он вернул бы 0x2d и т. д.

1 ответ

Решение

Код сканирования находится в битах 16-23 параметра lParam в соответствии с документацией WM_CHAR, поэтому просто сдвиньте и замаскируйте:

int scanCode = (lParam >> 16) & 0xff;

Если у вас есть символ, вы можете вызвать OemKeyScan, который поместит код сканирования в младший байт:

char c='X';
int scanCode=OemKeyScan(c) & 0x0ff;
Другие вопросы по тегам