WM_CHAR и юникод
От: TailWind  
Дата: 01.09.19 20:23
Оценка:
Как получить Unicode символ с клавиатуры?

WM_KEYDOWN + toUnicode — непонятно как отделить служебные символы
WM_UNICHAR — не приходит
WM_CHAR — wParam не содержит код русских букв
Re: WM_CHAR и юникод
От: TailWind  
Дата: 02.09.19 13:00
Оценка: 5 (2)
Всё оказалось просто
Но в гугле решение не ищется на первых страницах

1. WM_CHAR может присылать как ANSI так и UNICODE коды символов
Это зависит от того является ли окно unicode'ным

Проверить это можно так:
if (IsWindowUnicode(hwnd)) Show(L"Yes");
else                       Show(L"No");


2. Чтобы сделать окно unicode'ным нужно регистрировать его класс с помощью RegisterClassExW, а не RegisterClassEx

Что самое смешное, в документации на WM_CHAR про это ни слова
Всё написано в доке на IsWindowUnicode и RegisterClassEx
Отредактировано 02.09.2019 13:31 TailWind . Предыдущая версия . Еще …
Отредактировано 02.09.2019 13:30 TailWind . Предыдущая версия .
Re[2]: WM_CHAR и юникод
От: Pavel Dvorkin Россия  
Дата: 03.09.19 02:29
Оценка: 8 (2)
Здравствуйте, TailWind, Вы писали:

TW>2. Чтобы сделать окно unicode'ным нужно регистрировать его класс с помощью RegisterClassExW, а не RegisterClassEx


Или просто определить макросы _UNICODE и UNICODE (они, кстати, определены по умолчанию). Тем самым все будет юникодное, в том числе и окна.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.