Как всегда в сценариях, отличных от Unicode, вы получите надежный результат только в том случае, если языковой стандарт системы (также называемый на панели управления «язык для приложений, не поддерживающих Юникод») установлен соответствующим образом. Если нет, не ожидайте ничего хорошего.
Например, если языковой стандарт системы - китайский традиционный, вы получите 2 последовательных сообщения WM_CHAR (по одному на каждый байт, при условии, что пользователь состоит из двухсимвольного символа).
isleadbyte () должен помочь вам определить, скоро ли появится второй байт.
Если ваша системная локаль НЕ установлена на китайском языке, не ожидайте получения правильных сообщений, даже используя китайскую клавиатуру / IME. Вводящая в заблуждение часть заключается в том, что некоторые сценарии работают. например используя греческую клавиатуру, вы получите значения символов WM_CHAR на основе греческой кодовой страницы, даже если ваша системная локаль основана на латинице. Но вам действительно следует избегать попыток справиться с такими сценариями: успех не гарантирован и, скорее всего, будет зависеть от версии Windows и локали.
Как писал MikeB, MS AppLocale - ваш друг для базовых тестов.
[ad] и appTranslator - ваш друг, если вам нужно перевести свой интерфейс [/ ad]