Как вернуть языковой стандарт системы, а не языковой стандарт пользователя?

Я запускаю приложение VB6.0 и проверяю, вызывает ли изменение настроек локали ошибки. Приложение работает нормально, когда для локали пользователя и локали системы задана одна и та же страна. Однако, если локаль пользователя отличается от локали системы, у меня возникают проблемы.

Почему GetThreadLocale не возвращает языковой стандарт системы?

Кажется, он возвращает локаль пользователя.

E.g.

Язык системы установлен на польский язык и язык пользователя (Великобритания), GetThreadLocale возвращает 2057. Почему 1045 не возвращается?

Любые советы или советы будут оценены.


person dan983    schedule 04.03.2015    source источник


Ответы (1)


VB6 - это Unicode внутри и с COM. Вызовы API, включающие любые окна, созданные формами, соответствуют стандарту ANSI.

В справке VB6 есть большая глава по этой теме.

Для приложений ANSI вы устанавливаете параметр, отличный от Unicode, в региональных параметрах.

Windows, созданные с помощью CreateWindowExA, имеют все отправленные им строки Unicode, преобразованные в ANSI и наоборот для CreateWindowsExW (W означает широкий, т.е. два байта на символ).

Это потому, что Windows 95 не поддерживала юникод.

person Serenity    schedule 04.03.2015
comment
Я могу ошибаться, но ваш ответ кажется немного не по теме. Не могли бы вы уточнить вопрос ОП? - person Rubik; 04.03.2015
comment
Его нити имеют маркировку ANSI. Я сказал ему исправить системные настройки. Я указал, что перед исправленными программами Windows в справке есть целая глава, посвященная всем различным подходам. Но Windows теперь исправляет это, если установлено правильно. - person Serenity; 04.03.2015