Как мы только что сказали, в операционной системе Microsoft Windows NT для установки набора национальных параметров, используемых текущей задачей, эта задача должна вызвать функцию SetThreadLocale:
BOOL SetThreadLocale(
LCID Locale); // идентификатор национального набора
Работа с функцией SetThreadLocale проста - вам достаточно передать ей нужный идентификатор в качестве параметра. При успехе функция возвратит значение TRUE, а при ошибке - FASLE. В последнем случае вы можете определить код ошибки с помощью функции GetLastError.
Как задавать идентификатор национального набора параметров?
Вы можете передать функции SetThreadLocale либо одну из констант, либо значение, полученное от макрокоманды MAKELCID. Список констант приведен ниже.
Константа |
Описание |
LOCALE_SYSTEM_DEFAULT |
Идентификатор, который используется операционной системой по умолчанию |
LOCALE_USER_DEFAULT |
Идентификатор, который используется по умолчанию для текущего пользователя, работающего в среде Microsoft Windows NT |
Макрокоманда MAKELCID позволяет составить идентификатор национального набора параметров LCID из двух значений: идентификатора национального языка и идентификатора метода сортировки. Ниже мы привели прототип этой макрокоманды и ее определение:
DWORD MAKELCID(
WORD wLanguageID, // идентификатор национального языка
WORD wSortID); // идентификатор метода сортировки
#define MAKELCID(lgid, srtid) \
((DWORD)((((DWORD)((WORD)(srtid))) << 16) \
| ((DWORD)((WORD)(lgid)))))
Что касается идентификатора сортировки, то здесь вы должны указывать значение SORT_DEFAULT. А для создания идентификатора национального языка вам придется воспользоваться еще одной макрокомандой с именем MAKELANGID:
WORD MAKELANGID(
USHORT usPrimaryLanguage, // первичный идентификатор языка
USHORT usSubLanguage); // вторичный идентификатор языка
#define MAKELANGID(usPrimaryLanguage, usSubLanguage) \
((((WORD)( usSubLanguage)) << 10) \