getLocaleInfoA 函数 (winnls.h)
检索有关标识符指定的区域设置的信息。
语法
int GetLocaleInfoA(
[in] LCID Locale,
[in] LCTYPE LCType,
[out, optional] LPSTR lpLCData,
[in] int cchData
);
参数
[in] Locale
要检索其信息的区域设置标识符。 可以使用 MAKELCID 宏创建区域设置标识符或使用以下预定义值之一。
- LOCALE_CUSTOM_DEFAULT
- LOCALE_CUSTOM_UI_DEFAULT
- LOCALE_CUSTOM_UNSPECIFIED
- LOCALE_INVARIANT
- LOCALE_SYSTEM_DEFAULT
- LOCALE_USER_DEFAULT
[in] LCType
要检索的区域设置信息。 有关详细定义,请参阅 GetLocaleInfoEx 的 LCType 参数。
[out, optional] lpLCData
指向缓冲区的指针,此函数在其中检索请求的区域设置信息。 如果 cchData 设置为 0,则不使用此指针。 有关详细信息,请参见“备注”部分。
[in] cchData
lpLCData 指示的数据缓冲区的大小(以 TCHAR 值为单位)。 或者,应用程序可以将此参数设置为 0。 在这种情况下,函数不使用 lpLCData 参数,并返回所需的缓冲区大小,包括终止 null 字符。
返回值
如果成功且 cchData 为非零值,则返回在区域设置数据缓冲区中检索到的字符数。 如果函数成功, 则 cchData 为非零值,并且 指定了LOCALE_RETURN_NUMBER ,则返回值为在数据缓冲区中检索到的整数的大小;即,2 表示函数的 Unicode 版本,4 表示 ANSI 版本。 如果函数成功且 cchData 的值为 0,则返回值是区域设置数据缓冲区所需的大小(以字符为单位,包括 null 字符)。
如果函数不成功,则返回 0。 若要获取扩展的错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:
- ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL。
- ERROR_INVALID_FLAGS。 为标志提供的值无效。
- ERROR_INVALID_PARAMETER。 任何参数值都无效。
注解
有关此函数的操作,请参阅 GetLocaleInfoEx 的备注。
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) );
此函数的 ANSI 版本检索到的 ANSI 字符串根据区域设置标识符的默认 ANSI 代码页从 Unicode 转换为 ANSI。 但是,如果指定 了LOCALE_USE_CP_ACP ,则转换基于系统默认 ANSI 代码页。
当此函数的 ANSI 版本与仅限 Unicode 的区域设置标识符一起使用时,该函数可以成功,因为操作系统使用系统代码页。 但是,系统代码页中未定义的字符在字符串中显示为问号 (?) 。
注意
winnls.h 标头将 GetLocaleInfo 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | winnls.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |