Я получаю ввод текста и нажатие клавиш из сообщений WM_CHAR и WM_KEYDOWN.
Что я хочу сделать, так это отфильтровать сообщения WM_CHAR, которые имеют тот же код VK_, что и ключ, связанный для включения элемента управления, в который вы вводите текст.
Например: игра использует ~ для включения консоли, привязка клавиш выполняется через VK_OEM3 и WM_KEYDOWN, но для ввода текста в консоль требуется текст из WM_CHAR.
Поскольку сначала происходит WM_KEYDOWN, консоль активируется, затем в буфер консоли отправляется WM_CHAR из ~, чего я не хочу.
Я решил, что лучший способ предотвратить это — сравнить VK_ из WM_CHAR с привязанным ключом для элемента управления и отфильтровать его.
Есть ли способ получить VK_ из сообщения WM_CHAR?
Я читал, что вы можете получить скан-код из Lparam в битах 16-23.
Но я не уверен, как:
- Извлеките значение скан-кода из lparam
- Переведите скан-код в ВК_ правильно