原文链接 -> 传送门
函数功能:
GetLocaleInfoEx 函数用于获取名称指定的区域设置相关信息。
注意1:如果应用程序被设计为仅在 Windows Vista 和以后的版本中使用,则应该优先使用该函数而不是 GetLocaleInfo函数。
注意2:GetLocaleInfoEx 函数可以获取版本之间的变化。比如基于定制的语言环境数据。如果您的应用程序必须持续或传输数据,见 Using Persistent Locale Data。
API 函数原型:
注释:_In_ 说明该参数是输入的;_Out_ 说明该参数是输出的;_opt_ 说明该参数是可选的
int GetLocaleInfoEx( _In_opt_ LPCWSTR lpLocaleName, _In_ LCTYPE LCType, _Out_opt_ LPWSTR lpLCData, _In_ int cchData );
参数解析:
|
参数 |
含义 |
|
lpLocaleName |
指向区域名称的指针,或者是下列预定义值中的某一个: · LOCALE_NAME_INVARIANT · LOCALE_NAME_SYSTEM_DEFAULT · LOCALE_NAME_USER_DEFAULT |
|
LCType |
1. 指向需要获取的区域相关信息。对于可能的取值,参看 Locale Information Constants 中 "Constants Used in the LCType Parameter of GetLocaleInfo, GetLocaleInfoEx, and SetLocaleInfo" 一节。注意每次调用该函数只能指定一种区域信息 |
|
lpLCData |
1. 指向一个缓冲区的指针,该缓冲区在函数中用来获取所需的区域信息 |
|
cchData |
1. 指定 lpLCData 参数指示的数据缓冲区的大小,以字符为单位 |
返回值:
1. 如果函数调用成功,并且 cchData 为非零值,则返回获取的区域数据缓冲区中字符的个数。如果函数调用成功,cchData 为非零值,并且指定了 LOCALE_RETURN_NUMBER,则返回值为获取的数据缓冲区中整形数据的大小(也就是 2)。如果函数调用成功,并且 cchData 的值为 0,则返回值为以字符为单位,获取的区域数据缓冲区的大小,包括空字符。
2. 如果函数调用失败,则返回 0。
获取有关错误的更多信息,请调用 GetLastError 函数,该函数将返回下列的错误代码:
|
错误码 |
含义 |
|
ERROR_INSUFFICIENT_BUFFER |
提供的缓冲区大小不够大,或者是错误地设置为 NULL |
|
ERROR_INVALID_FLAGS |
提供的标识符无效 |
|
ERROR_INVALID_PARAMETER |
任何一个参数无效 |
备注:
1. 该函数通常获取文本格式的信息。如果信息是一个数值,并且 LCType 值为 LOCALE_ILANGUAGE 或 LOCALE_IDEFAULTLANGUAGE,则该函数获取包含十六进制数的字符串。否则,获取的数值型信息为一个十进制数。
2. 这个规则有两个例外。第一,应用程序可以通过在 LCType 参数中指定 LOCALE_RETURN_NUMBER 来获取整形的数值型值。第二种例外情况是,LOCALE_FONTSIGNATURE 不同于其他所有区域设置信息常量的行为。应用程序必须提供至少 sizeof(LOCALESIGNATURE) 字节大小的数据缓冲区。一旦从函数中成功返回,缓冲区就被填充为一个 LOCALESIGNATURE 结构。
注意:即使 LCType 参数被指定为 LOCALE_FONTSIGNATURE,cchData 和函数返回仍然是 字符数。当应用程序调用 GetLocaleInfoEx,并且指定LCType 参数为 LOCALE_FONTSIGNATURE,则 cchData 可以安全地指定为 sizeof(LOCALESIGNATURE) / sizeof(WCHAR)。
3. 下面的例子展示了非文本值缓冲器大小的直接处理:
int ret;
CALID calid;
DWORD value;
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER,
(LPTSTR)&value,
sizeof(value) / sizeof(TCHAR) );
calid = value;
LOCALESIGNATURE LocSig;
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_FONTSIGNATURE,
(LPWSTR)&LocSig,
sizeof(LocSig) / sizeof(TCHAR) );
4. 该函数可以获取自定义区域设置的数据。数据在不同计算机之间或者应用程序的使用中不保证取得相同的值。
5. 从 Windows 8 开始:如果你的应用程序从 Windows.Globalization 命名空间传递语言标记到这个函数,必须首先调用 ResolveLocaleName 函数转换该标记。
需求:
|
Minimum supported client |
Windows Vista [桌面应用程序 | Windows 商店应用程序] |
|
Minimum supported server |
Windows Server 2008 [桌面应用程序 | Windows 商店应用程序] |
|
Minimum supported phone |
Windows Phone 8 |
|
Header |
Winnls.h (包含于 Windows.h) |
|
Library |
Kernel32.lib |
|
DLL |
Kernel32.dll |




