马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
注:本文档由 Diu 翻译,小甲鱼校对。
原文链接 -> 传送门
函数功能:
GetLocaleInfo 函数用于获取标识符指定的区域设置相关信息。
注意:为了互通性,应用程序应该更倾向于使用 GetLocaleInfoEx 函数而不是 GetLocaleInfo,因为对于新的区域,微软逐渐向使用区域的名字来代替区域标识符。任何在 Windows Vista 和之后版本的应用程序都应该使用 GetLocaleInfoEx 函数。
API 函数原型:
注释:_In_ 说明该参数是输入的。int GetLocaleInfo(
_In_ LCID Locale,
_In_ LCTYPE LCType,
_Out_opt_ LPTSTR lpLCData,
_In_ int cchData
);
参数解析:
参数 | 含义 | Locale | 获取信息所使用的区域标识符。你可以使用 MAKELCID 宏来创建一个区域标识符或者使用下列预定义值中的某一个:
- LOCALE_CUSTOM_DEFAULT
- LOCALE_CUSTOM_UI_DEFAULT
- LOCALE_CUSTOM_UNSPECIFIED
- LOCALE_INVARIANT
- LOCALE_SYSTEM_DEFAULT
- LOCALE_USER_DEFAULT
| LCType | 需要获取的区域相关信息。详细信息,请参看 GetLocaleInfoEx 函数的 LCType 参数
注意:对于 GetLocaleInfo 函数,值 LOCALE_USE_CP_ACP 仅适用于 ANSI 版本 | lpLCData | 1. 指向一个缓冲区的指针,该缓冲区在函数中用来获取所需的区域信息
2. 如果 cchData 设置为 0,则不使用该指针。更多信息,请参看备注部分 | cchData | 1. 指定 lpLCData 参数指示的数据缓冲区的大小,以 TCHAR 为单位
2. 另外,应用程序可以设置该参数为 0,在这种情况下,函数将不会使用 lpLCData 参数,并且返回所需的缓冲区大小,包括终止空字符 |
返回值:
1. 如果函数调用成功,并且 cchData 为非 0 值,则返回获取的区域数据缓冲区中字符的个数。如果函数调用成功,cchData 为非 0 值,并且指定了 LOCALE_RETURN_NUMBER,则返回值为获取的数据缓冲区中整形数据的大小(也就是说,对于该函数的 Unicode 版本,返回 2,对于该函数的 ANSI 版本,返回 4);如果函数调用成功,并且 cchData 的值为 0,则返回值为以字符为单位,获取的区域数据缓冲区的大小。
2. 如果函数调用失败,则返回 0。
获取有关错误的更多信息,请调用 GetLastError 函数,该函数将返回下列的错误代码:
错误码 | 含义 | ERROR_INSUFFICIENT_BUFFER | 提供的缓冲区大小不够大,或者是错误地设置为 NULL | ERROR_INVALID_FLAGS | 提供的标识符无效 | ERROR_INVALID_PARAMETER | 任何一个参数无效 |
备注:
1. 此函数的操作,见 GetLocaleInfoEx 函数备注部分。
注意:即使 LCType 参数被指定为 LOCALE_FONTSIGNATURE,cchData 和函数返回仍然是 TCHAR 数。对于该函数的 ANSI 和 Unicode 版本,该数不一样。当应用程序调用一般的 GetLocaleInfoEx 版本,并且指定 LOCALE_FONTSIGNATURE,cchData 可以安全地指定为 sizeof(LOCALESIGNATURE) / sizeof(TCHAR)。
2. 下面的例子展示了非文本值缓冲器大小的直接处理:
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) );
3. 该函数的 ANSI 版获取的 ANSI 字符串是从 Unicode 转换成的 ANSI,根据区域标识符的默认 ANSI 编码页。然而,如果指定了 LOCALE_USE_CP_ACP,则转换是基于系统的默认 ANSI 编码页。
4. 当使用该函数的 ANSI 版,并且使用了只能用 Unicode 表示的区域标识符,函数还是能够调用成功,因为操作系统使用的是系统编码页。然而,字符串中在系统编码页中未定义的字符将显示为问号(?)。
需求:
Minimum supported client | Windows 2000 专业版 [仅桌面应用程序] | Minimum supported server | Windows 2000 服务器版 [仅桌面应用程序] | Header | Winnls.h (包含于 Windows.h) | Library | Kernel32.lib | DLL | Kernel32.dll | Unicode and ANSI names | GetLocaleInfoW(Unicode)和 GetLocaleInfoA(ANSI) |
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|