SetLocaleInfoA 函数 (winnls.h)

设置当前区域设置中用户替代部分的信息项。 此函数不设置系统默认值。

警告 由于此函数修改了所有应用程序的值,因此它只能由控制面板的区域和语言选项功能或类似的实用工具调用。 如果对系统参数进行国际更改,调用应用程序必须广播 WM_SETTINGCHANGE 消息,以避免在其他应用程序中造成不稳定。
 

语法

BOOL SetLocaleInfoA(
  [in] LCID   Locale,
  [in] LCTYPE LCType,
  [in] LPCSTR lpLCData
);

参数

[in] Locale

对于函数的 ANSI 版本,区域设置标识符,以及解释 lpLCData 信息时使用的代码页。 对于 Unicode 版本,将忽略此参数。

可以使用 MAKELCID 宏创建区域设置标识符或使用以下预定义值之一。

还支持以下自定义区域设置标识符。

[in] LCType

要设置的区域设置信息的类型。 有关有效常量,请参阅 区域设置信息常量的 GetLocaleInfo、GetLocaleInfoEx 和 SetLocaleInfo 的 LCType 参数中使用的常量。 应用程序每个调用只能指定一个值,但它可以使用二进制 OR 运算符将 LOCALE_USE_CP_ACP 与其他任何常量组合在一起。

[in] lpLCData

指向包含要设置的区域设置信息的 null 终止字符串的指针。 信息必须采用特定于指定常量的格式。 应用程序使用 Unicode 字符串作为函数的 Unicode 版本,为 ANSI 版本使用 ANSI 字符串。

返回值

如果成功,则返回非零值,否则返回 0。 若要获取扩展的错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:

  • ERROR_ACCESS_DISABLED_BY_POLICY。 计算机或用户的组策略禁止此操作。
  • ERROR_INVALID_ACCESS。 访问代码无效。
  • ERROR_INVALID_FLAGS。 为标志提供的值无效。
  • ERROR_INVALID_PARAMETER。 任何参数值都无效。

言论

此函数写入注册表,其中设置与特定用户(而不是特定应用程序)关联的值。 这些注册表值会影响用户运行的其他应用程序的行为。 作为规则,仅当用户显式请求更改时,应用程序才应调用此函数。 为方便单个应用程序,不应更改注册表设置。

对于 LCType 参数,应用程序应将 LOCALE_USE_CP_ACP 设置为使用操作系统 ANSI 代码页,而不是用于字符串转换的区域设置代码页。

当此函数的 ANSI 版本与仅 Unicode 区域设置标识符一起使用时,该函数可能会成功,因为操作系统使用系统代码页。 但是,系统代码页中未定义的字符在字符串中显示为问号(?)。

从 Windows Vista 起,LOCALE_SDATELOCALE_STIME 常量已过时。 请勿使用这些常量。 请改用 LOCALE_SSHORTDATELOCALE_STIMEFORMAT。 自定义区域设置可能没有日期或时间格式中的单个统一分隔符:例如,格式(如“12/31,2006”或“03:56'23”)可能有效。

注意

winnls.h 标头将 SetLocaleInfo 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 winnls.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

GetLocaleInfo

国家语言支持

国家语言支持函数