EnumCalendarInfo

This function enumerates the calendar information by calling an application-defined callback function. It passes the callback function a pointer to a string buffer that contains the requested calendar information. This continues until either the last applicable calendar is found or the callback function returns FALSE.

At a Glance

Header file: Winnls.h
Windows CE versions: 1.0 and later

Syntax

BOOL EnumCalendarInfo(CALINFO_ENUMPROC lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType);

Parameters

lpCalInfoEnumProc

[in] Pointer to an application-defined callback function. For more information, see the EnumCalendarInfoProc callback function.

Locale

[in] Specifies the locale to retrieve calendar information for. This parameter can be a locale identifier created by the MAKELCID macro, or one of the following predefined values:

Value Description
LOCALE_SYSTEM_DEFAULT Default system locale.
LOCALE_USER_DEFAULT Default user locale.
LOCALE_NEUTRAL Default language-neutral locale.

Calendar

[in] Specifies the calendar for which information is requested. The following values are defined:

Value Description
ENUM_ALL_CALENDARS Enumerate all applicable calendars for the locale specified by Locale.
CAL_GREGORIAN Gregorian (localized)
CAL_GREGORIAN_US Gregorian (English strings always)
CAL_JAPAN Japanese Emperor Era
CAL_TAIWAN Taiwan Era
CAL_KOREA Korean Tangun Era
CAL_HIJRI Hijri (Arabic Lunar)
CAL_THAI Thai
CAL_HEBREW Hebrew
CAL_GREGORIAN_ME_FRENCH Gregorian Middle East French
CAL_GREGORIAN_ARABIC Gregorian Arabic
CAL_GREGORIAN_XLIT_ENGLISH Gregorian transliterated English
CAL_GREGORIAN_XLIT_FRENCH Gregorian transliterated French

CalType

[in] Indicates the type of calendar information to be returned. See the listing of constant values in the “Remarks” section.

Return Values

Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError. Possible values for GetLastError include the following:

Remarks

The CALTYPE constants define particular pieces of calendar information. The following table shows CALTYPE constants that are mutually exclusive—that is, they cannot be used in combination with each other in a function call.

Type Description
CAL_ICALINTVALUE An integer value indicating the calendar type of the alternate calendar.
CAL_IYEAROFFSETRANGE One or more null-terminated strings that specify the year offsets for each of the era ranges. The last string has an extra terminating null character.
CAL_SABBREVDAYNAME1 Abbreviated native name of the first day of the week.
CAL_SABBREVDAYNAME2 Abbreviated native name of the second day of the week.
CAL_SABBREVDAYNAME3 Abbreviated native name of the third day of the week.
CAL_SABBREVDAYNAME4 Abbreviated native name of the fourth day of the week.
CAL_SABBREVDAYNAME5 Abbreviated native name of the fifth day of the week.
CAL_SABBREVDAYNAME6 Abbreviated native name of the sixth day of the week.
CAL_SABBREVDAYNAME7 Abbreviated native name of the seventh day of the week.
CAL_SABBREVMONTHNAME1 Abbreviated native name of the first month of the year.
CAL_SABBREVMONTHNAME2 Abbreviated native name of the second month of the year.
CAL_SABBREVMONTHNAME3 Abbreviated native name of the third month of the year.
CAL_SABBREVMONTHNAME4 Abbreviated native name of the fourth month of the year.
CAL_SABBREVMONTHNAME5 Abbreviated native name of the fifth month of the year.
CAL_SABBREVMONTHNAME6 Abbreviated native name of the sixth month of the year.
CAL_SABBREVMONTHNAME7 Abbreviated native name of the seventh month of the year.
CAL_SABBREVMONTHNAME8 Abbreviated native name of the eighth month of the year.
CAL_SABBREVMONTHNAME9 Abbreviated native name of the ninth month of the year.
CAL_SABBREVMONTHNAME10 Abbreviated native name of the tenth month of the year.
CAL_SABBREVMONTHNAME11 Abbreviated native name of the eleventh month of the year.
CAL_SABBREVMONTHNAME12 Abbreviated native name of the twelfth month of the year.
CAL_SABBREVMONTHNAME13 Abbreviated native name of the thirteenth month of the year, if it exists.
CAL_SCALNAME Native name of the alternate calendar.
CAL_SDAYNAME1 Native name of the first day of the week.
CAL_SDAYNAME2 Native name of the second day of the week.
CAL_SDAYNAME3 Native name of the third day of the week.
CAL_SDAYNAME4 Native name of the fourth day of the week.
CAL_SDAYNAME5 Native name of the fifth day of the week.
CAL_SDAYNAME6 Native name of the sixth day of the week.
CAL_SDAYNAME7 Native name of the seventh day of the week.
CAL_SERASTRING One or more null-terminated strings that specify each of the Unicode codepoints specifying the era associated with the given CAL_IYEAROFFSETRANGE. The last string has an extra terminating null character. See example below.
CAL_SLONGDATE Long date formats for this calendar type.
CAL_SMONTHNAME1 Native name of the first month of the year.
CAL_SMONTHNAME2 Native name of the second month of the year.
CAL_SMONTHNAME3 Native name of the fifth month of the year.
CAL_SMONTHNAME4 Native name of the fourth month of the year.
CAL_SMONTHNAME5 Native name of the fifth month of the year.
CAL_SMONTHNAME6 Native name of the sixth month of the year.
CAL_SMONTHNAME7 Native name of the seventh month of the year.
CAL_SMONTHNAME8 Native name of the eighth month of the year.
CAL_SMONTHNAME9 Native name of the ninth month of the year.
CAL_SMONTHNAME10 Native name of the tenth month of the year.
CAL_SMONTHNAME11 Native name of the eleventh month of the year.
CAL_SMONTHNAME12 Native name of the twelfth month of the year.
CAL_SMONTHNAME13 Native name of the thirteenth month of the year, if it exists.
CAL_SSHORTDATE Short date formats for this calendar type.

If the native name for the day of the week or for a month is an empty string, that name is identical to the name given in the corresponding locale information and therefore is not duplicated here.

The CAL_IYEAROFFSETRANGE and CAL_SERASTRING values vary in format depending on the type of optional calendar. The following example shows the values for these types (for each supported alternate calendar type) along with the formula for how to use the CAL_IYEAROFFSETRANGE value to compute the correct year given the Gregorian current year value Y:

CAL_ICALINTVALUE = "1"
CAL_IYEAROFFSETRANGE = ""
CAL_SERASTRING = ""

CAL_ICALINTVALUE = "2"
CAL_IYEAROFFSETRANGE = ""
CAL_SERASTRING = ""

CAL_ICALINTVALUE = "3"
CAL_IYEAROFFSETRANGE = "1989\01926\01912\01868\0"
CAL_SERASTRING = "Ux337B\0Ux337C\0Ux337D\0Ux337E\0"
if (Y>=1989) { Y = (Y–1989)+1; } 
if (Y>=1926 && Y<1989) { Y = (Y–1926)+1; } 
if (Y>=1912 && Y<1926) { Y = (Y–1912)+1; }
if (Y>=1868 && Y<1912) { Y = (Y–1868)+1; } 
if (Y<1868) { Y = Y; } 

CAL_ICALINTVALUE = "4"
CAL_IYEAROFFSETRANGE = "1912\0"
CAL_SERASTRING = "Ux4E2D\0Ux83EF\0Ux6C11\0Ux570B\0"
if (Y>=1912) { Y = (Y–1912)+1; } 
if (Y<1912) { Y = Y; }

CAL_ICALINTVALUE = "5"
CAL_IYEAROFFSETRANGE = "2333\0"
CAL_SERASTRING = ""
Y = Y+2333;
 

See Also

EnumDateFormats, EnumCalendarInfoProc