SetCalendarInfoA 函数 (winnls.h)

设置日历的区域设置信息项。 有关详细信息,请参阅 日期和日历

语法

BOOL SetCalendarInfoA(
  [in] LCID    Locale,
  [in] CALID   Calendar,
  [in] CALTYPE CalType,
  [in] LPCSTR  lpCalData
);

参数

[in] Locale

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

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

[in] Calendar

要为其设置信息的日历的日历标识符

[in] CalType

要设置的日历信息的类型。 只有以下 CALTYPE 值对此函数有效。 CAL_USE_CP_ACP常量仅对函数的 ANSI 版本有意义。

  • CAL_USE_CP_ACP
  • CAL_ITWODIGITYEARMAX
每次调用此函数时,应用程序只能指定一个日历标识符。 如果应用程序使用二进制 OR 运算符将CAL_USE_CP_ACP与 日历类型信息中定义的任何有效 CALTYPE 值组合在一起,则可能会发生异常。

[in] lpCalData

指向以 null 结尾的日历信息字符串的指针。 信息必须采用指定日历类型的格式。

返回值

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

  • ERROR_INTERNAL_ERROR。 函数中发生意外错误。
  • ERROR_INVALID_FLAGS。 为标志提供的值无效。
  • ERROR_INVALID_PARAMETER。 任何参数值都无效。

注解

此函数仅影响日历设置的用户替代部分。 它不设置系统默认值。

在此函数的 Unicode 版本中,日历信息始终作为以 null 结尾的 Unicode 字符串传递,在 ANSI 版本中作为以 null 结尾的 ANSI 字符串传递。 此函数不允许任何整数。 任何数值都必须指定为 Unicode 或 ANSI 文本。

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

CAL_ITWODIGITYEARMAX可用于任何日历,即使指定的区域设置不支持日历。 为了避免复杂情况,应用程序应调用 EnumCalendarInfo ,以确保相关区域设置支持日历。

注意

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

要求

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

另请参阅

EnumCalendarInfo

GetCalendarInfo

国家语言支持

国家语言支持函数