Получение символа Юникода в WM_KEYDOWN - PullRequest
1 голос
/ 29 ноября 2010

В приложении, где мне нужно обрабатывать много ключей по-разному, я хочу обрабатывать все случаи в WM_KEYDOWN и вообще не использовать WM_CHAR.Можно ли получить правильный символ ASCII / UNICODE из последовательности предоставленных WM_KEYDOWN виртуальных ключей вместо того, чтобы полагаться на более обычный TranslateMsg / WM_CHAR?

Например: приложение должно иметь возможность обрабатывать Shift-Bсовершенно по-другому, что нажатие на обычный B CTRL-B.

Используя MapVirtualKey, вы не используете состояние клавиш Shift, Control и Alt или, по крайней мере, то, что я не вижу.

Как ответил Лео Дэвидсон: вы можете использовать вызов ToUnicodeвыполнить конвертацию VK -> Unicode самостоятельно.

1 Ответ

6 голосов
/ 29 ноября 2010

WM_KEYDOWN имеет дело с кодами символов, что в основном означает физические клавиши на клавиатуре.

Если вы хотите работать с символами Юникода, обработайте WM_CHAR (16-битовые символы Unicode, предполагая, что само ваше окно является Unicode) или WM_UNICHAR (32-разрядные символы Unicode).

EDIT: Если вы хотите выполнить преобразование самостоятельно, используйте ToUnicode API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...