Какой Win32 API сообщает о предпочтениях формата в панели управления «Регион и язык»? - PullRequest
1 голос
/ 17 июня 2010

Windows 7 и Windows Vista имеют панель управления «Регион и язык», которая содержит вкладку «Форматы», которая содержит всплывающее меню «Формат».Это меню позволяет пользователю выбирать из множества языковых наборов параметров форматирования чисел, валюты, времени и даты независимо от языка базовой системы.Например, я мог бы решить, что предпочитаю, чтобы символом валюты по умолчанию была японская иена в американской системе США. Меня не волнует, в частности, символ валюты ;это был просто пример.Я имею в виду наборы настроек, которые можно применить, выбрав элементы в меню «Формат».

Приложение «Контакты Windows», похоже, меняет свое поведение в зависимости от выбора в этом меню.,Например, если я выбираю японский язык, отображаются контакты Windows, и я могу редактировать фонетические имена (AKA "ruby", "yomi" и "furigana"), но не отчество.Если я выберу американский английский, отобразятся контакты Windows, и я смогу редактировать отчество, но не фонетические имена.

Мне нужно написать код (нативный C, вызывающий Win32 на XP SP2 и более поздних версиях), который отражает поведение WindowsКонтакты приложения в этом отношении.Какой API мне позвонить?

Ответы [ 2 ]

0 голосов
/ 17 июня 2010

Для большинства из этих элементов вы можете использовать такие функции, как GetTimeFormat, GetNumberFormat и GetCurrencyFormat.Вопреки тому, что подразумевают имена, они на самом деле будут форматировать данные по запросу, а не просто сообщать вам, какой должен быть формат.Хотя вы можете указать для них используемый языковой стандарт, обычно вы хотите передать LOCALE_USER_DEFAULT, чтобы использовать настройки, заданные пользователем на панели управления.

0 голосов
/ 17 июня 2010

Вопрос, кажется, объединяет два вида функций.

С помощью апплета панели управления можно выбрать общую настройку языка, а затем отдельным элементам форматирования будут присвоены значения по умолчанию, связанные с этой настройкой языка.

Если вы хотите получить общую настройку языка пользователя, то просто получите LCID пользователя по умолчанию или что-то в этом роде.

Если вы хотите получить отдельные элементы форматирования, я думаю, вам нужен языковой стандарт функции CRT ().Win32 API SetLocaleInfo может установить переопределяемую пользователем часть локали.Однако, по крайней мере, как задокументировано, GetLocaleInfo и GetLocaleInfoEx (только для Vista и более поздних версий) получают информацию, связанную с некоторой существующей локалью, а не из переопределений пользователей.Хотя стандартная функция языка locale () должна работать.

Ваш вопрос задает вопрос о том, как извлечь отдельные элементы форматирования, но затем вы говорите, что должны набирать выбранную пользователем общую локаль вместо отдельных элементов форматирования.Из вашего описания приложения Windows Contacts, похоже, вам нужен GetUserDefaultLCID.

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