setLocaleInfoW 函数 (winnls.h)

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

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

语法

BOOL SetLocaleInfoW(
  [in] LCID    Locale,
  [in] LCTYPE  LCType,
  [in] LPCWSTR 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 [仅限桌面应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetLocaleInfo

国家/地区语言支持

国家/地区语言支持函数