winnls.h

来自「用于查询PC机上的USB端口是否有设备挂接上」· C头文件 代码 · 共 1,656 行 · 第 1/4 页

H
1,656
字号
#define LOCALE_INEGCURR             0x0000001C   /* negative currency mode */

#define LOCALE_SDATE                0x0000001D   /* date separator */
#define LOCALE_STIME                0x0000001E   /* time separator */
#define LOCALE_SSHORTDATE           0x0000001F   /* short date format string */
#define LOCALE_SLONGDATE            0x00000020   /* long date format string */
#define LOCALE_STIMEFORMAT          0x00001003   /* time format string */
#define LOCALE_IDATE                0x00000021   /* short date format ordering */
#define LOCALE_ILDATE               0x00000022   /* long date format ordering */
#define LOCALE_ITIME                0x00000023   /* time format specifier */
#define LOCALE_ITIMEMARKPOSN        0x00001005   /* time marker position */
#define LOCALE_ICENTURY             0x00000024   /* century format specifier (short date) */
#define LOCALE_ITLZERO              0x00000025   /* leading zeros in time field */
#define LOCALE_IDAYLZERO            0x00000026   /* leading zeros in day field (short date) */
#define LOCALE_IMONLZERO            0x00000027   /* leading zeros in month field (short date) */
#define LOCALE_S1159                0x00000028   /* AM designator */
#define LOCALE_S2359                0x00000029   /* PM designator */

#define LOCALE_ICALENDARTYPE        0x00001009   /* type of calendar specifier */
#define LOCALE_IOPTIONALCALENDAR    0x0000100B   /* additional calendar types specifier */
#define LOCALE_IFIRSTDAYOFWEEK      0x0000100C   /* first day of week specifier */
#define LOCALE_IFIRSTWEEKOFYEAR     0x0000100D   /* first week of year specifier */

#define LOCALE_SDAYNAME1            0x0000002A   /* long name for Monday */
#define LOCALE_SDAYNAME2            0x0000002B   /* long name for Tuesday */
#define LOCALE_SDAYNAME3            0x0000002C   /* long name for Wednesday */
#define LOCALE_SDAYNAME4            0x0000002D   /* long name for Thursday */
#define LOCALE_SDAYNAME5            0x0000002E   /* long name for Friday */
#define LOCALE_SDAYNAME6            0x0000002F   /* long name for Saturday */
#define LOCALE_SDAYNAME7            0x00000030   /* long name for Sunday */
#define LOCALE_SABBREVDAYNAME1      0x00000031   /* abbreviated name for Monday */
#define LOCALE_SABBREVDAYNAME2      0x00000032   /* abbreviated name for Tuesday */
#define LOCALE_SABBREVDAYNAME3      0x00000033   /* abbreviated name for Wednesday */
#define LOCALE_SABBREVDAYNAME4      0x00000034   /* abbreviated name for Thursday */
#define LOCALE_SABBREVDAYNAME5      0x00000035   /* abbreviated name for Friday */
#define LOCALE_SABBREVDAYNAME6      0x00000036   /* abbreviated name for Saturday */
#define LOCALE_SABBREVDAYNAME7      0x00000037   /* abbreviated name for Sunday */
#define LOCALE_SMONTHNAME1          0x00000038   /* long name for January */
#define LOCALE_SMONTHNAME2          0x00000039   /* long name for February */
#define LOCALE_SMONTHNAME3          0x0000003A   /* long name for March */
#define LOCALE_SMONTHNAME4          0x0000003B   /* long name for April */
#define LOCALE_SMONTHNAME5          0x0000003C   /* long name for May */
#define LOCALE_SMONTHNAME6          0x0000003D   /* long name for June */
#define LOCALE_SMONTHNAME7          0x0000003E   /* long name for July */
#define LOCALE_SMONTHNAME8          0x0000003F   /* long name for August */
#define LOCALE_SMONTHNAME9          0x00000040   /* long name for September */
#define LOCALE_SMONTHNAME10         0x00000041   /* long name for October */
#define LOCALE_SMONTHNAME11         0x00000042   /* long name for November */
#define LOCALE_SMONTHNAME12         0x00000043   /* long name for December */
#define LOCALE_SMONTHNAME13         0x0000100E   /* long name for 13th month (if exists) */
#define LOCALE_SABBREVMONTHNAME1    0x00000044   /* abbreviated name for January */
#define LOCALE_SABBREVMONTHNAME2    0x00000045   /* abbreviated name for February */
#define LOCALE_SABBREVMONTHNAME3    0x00000046   /* abbreviated name for March */
#define LOCALE_SABBREVMONTHNAME4    0x00000047   /* abbreviated name for April */
#define LOCALE_SABBREVMONTHNAME5    0x00000048   /* abbreviated name for May */
#define LOCALE_SABBREVMONTHNAME6    0x00000049   /* abbreviated name for June */
#define LOCALE_SABBREVMONTHNAME7    0x0000004A   /* abbreviated name for July */
#define LOCALE_SABBREVMONTHNAME8    0x0000004B   /* abbreviated name for August */
#define LOCALE_SABBREVMONTHNAME9    0x0000004C   /* abbreviated name for September */
#define LOCALE_SABBREVMONTHNAME10   0x0000004D   /* abbreviated name for October */
#define LOCALE_SABBREVMONTHNAME11   0x0000004E   /* abbreviated name for November */
#define LOCALE_SABBREVMONTHNAME12   0x0000004F   /* abbreviated name for December */
#define LOCALE_SABBREVMONTHNAME13   0x0000100F   /* abbreviated name for 13th month (if exists) */

#define LOCALE_SPOSITIVESIGN        0x00000050   /* positive sign */
#define LOCALE_SNEGATIVESIGN        0x00000051   /* negative sign */
#define LOCALE_IPOSSIGNPOSN         0x00000052   /* positive sign position */
#define LOCALE_INEGSIGNPOSN         0x00000053   /* negative sign position */
#define LOCALE_IPOSSYMPRECEDES      0x00000054   /* mon sym precedes pos amt */
#define LOCALE_IPOSSEPBYSPACE       0x00000055   /* mon sym sep by space from pos amt */
#define LOCALE_INEGSYMPRECEDES      0x00000056   /* mon sym precedes neg amt */
#define LOCALE_INEGSEPBYSPACE       0x00000057   /* mon sym sep by space from neg amt */

#if(WINVER >= 0x0400)
#define LOCALE_FONTSIGNATURE        0x00000058   /* font signature */
#endif /* WINVER >= 0x0400 */

#if(WINVER >= 0x040a)
#define LOCALE_SISO639LANGNAME        0x00000059   // ISO abbreviated language name
#define LOCALE_SISO3166CTRYNAME       0x0000005A   // ISO abbreviated country name
#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x00001012   // default ebcdic code page
#define LOCALE_IPAPERSIZE             0x0000100A   // 0 = letter, 1 = a4, 2 = legal, 3 = a3
#define LOCALE_SENGCURRNAME           0x00001007   // english name of currency
#define LOCALE_SNATIVECURRNAME        0x00001008   // native name of currency
#define LOCALE_SYEARMONTH             0x00001006   // year month format string
#define LOCALE_SSORTNAME              0x00001013   // sort name
#endif /* WINVER >= 0x040a */

//;begin_winver_500 
#if(WINVER >= 0x040a)
#define LOCALE_IDIGITSUBSTITUTION     0x00001014   // 0 = context, 1 = none, 2 = national
#endif /* WINVER >= 0x040a */
//;end_winver_500

/*
 *  Time Flags for GetTimeFormatW.
 */
#define TIME_NOMINUTESORSECONDS    0x00000001  /* do not use minutes or seconds */
#define TIME_NOSECONDS             0x00000002  /* do not use seconds */
#define TIME_NOTIMEMARKER          0x00000004  /* do not use time marker */
#define TIME_FORCE24HOURFORMAT     0x00000008  /* always use 24 hour format */

/*
 *  Date Flags for GetDateFormatW.
 */
#define DATE_SHORTDATE             0x00000001  /* use short date picture */
#define DATE_LONGDATE              0x00000002  /* use long date picture */
#define DATE_USE_ALT_CALENDAR      0x00000004  /* use alternate calendar (if any) */
#if(WINVER >= 0x040a)
#define DATE_YEARMONTH            0x00000008  // use year month picture
#define DATE_LTRREADING           0x00000010  // add marks for left to right reading order layout
#define DATE_RTLREADING           0x00000020  // add marks for right to left reading order layout
#endif /* WINVER >= 0x040a */

//
//  Calendar Types.
//
//  These types are used for the EnumCalendarInfo and GetCalendarInfo
//  NLS API routines.
//  Some of these types are also used for the SetCalendarInfo NLS API
//  routine.
//

//
//  The following CalTypes may be used in combination with any other CalTypes.
//
//    CAL_NOUSEROVERRIDE
//
//    CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string
//    translation.
//
//    CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a
//    number instead of a string.  This flag is only valid for the CalTypes
//    beginning with CAL_I.
//
#if(WINVER >= 0x040a)
#define CAL_NOUSEROVERRIDE        LOCALE_NOUSEROVERRIDE  // do not use user overrides
#define CAL_USE_CP_ACP            LOCALE_USE_CP_ACP      // use the system ACP
#define CAL_RETURN_NUMBER         LOCALE_RETURN_NUMBER   // return number instead of string
#endif /* WINVER >= 0x040a */

//
//  The following CalTypes are mutually exclusive in that they may NOT
//  be used in combination with each other.
//
#define CAL_ICALINTVALUE           0x00000001   /* calendar type */
#define CAL_SCALNAME               0x00000002   /* native name of calendar */
#define CAL_IYEAROFFSETRANGE       0x00000003   /* starting years of eras */
#define CAL_SERASTRING             0x00000004   /* era name for IYearOffsetRanges */
#define CAL_SSHORTDATE             0x00000005   /* short date format string */
#define CAL_SLONGDATE              0x00000006   /* long date format string */
#define CAL_SYEARMONTH            0x0000002f  // year month format string
#define CAL_SDAYNAME1              0x00000007   /* native name for Monday */
#define CAL_SDAYNAME2              0x00000008   /* native name for Tuesday */
#define CAL_SDAYNAME3              0x00000009   /* native name for Wednesday */
#define CAL_SDAYNAME4              0x0000000a   /* native name for Thursday */
#define CAL_SDAYNAME5              0x0000000b   /* native name for Friday */
#define CAL_SDAYNAME6              0x0000000c   /* native name for Saturday */
#define CAL_SDAYNAME7              0x0000000d   /* native name for Sunday */
#define CAL_SABBREVDAYNAME1        0x0000000e   /* abbreviated name for Monday */
#define CAL_SABBREVDAYNAME2        0x0000000f   /* abbreviated name for Tuesday */
#define CAL_SABBREVDAYNAME3        0x00000010   /* abbreviated name for Wednesday */
#define CAL_SABBREVDAYNAME4        0x00000011   /* abbreviated name for Thursday */
#define CAL_SABBREVDAYNAME5        0x00000012   /* abbreviated name for Friday */
#define CAL_SABBREVDAYNAME6        0x00000013   /* abbreviated name for Saturday */
#define CAL_SABBREVDAYNAME7        0x00000014   /* abbreviated name for Sunday */
#define CAL_SMONTHNAME1            0x00000015   /* native name for January */
#define CAL_SMONTHNAME2            0x00000016   /* native name for February */
#define CAL_SMONTHNAME3            0x00000017   /* native name for March */
#define CAL_SMONTHNAME4            0x00000018   /* native name for April */
#define CAL_SMONTHNAME5            0x00000019   /* native name for May */
#define CAL_SMONTHNAME6            0x0000001a   /* native name for June */
#define CAL_SMONTHNAME7            0x0000001b   /* native name for July */
#define CAL_SMONTHNAME8            0x0000001c   /* native name for August */
#define CAL_SMONTHNAME9            0x0000001d   /* native name for September */
#define CAL_SMONTHNAME10           0x0000001e   /* native name for October */
#define CAL_SMONTHNAME11           0x0000001f   /* native name for November */
#define CAL_SMONTHNAME12           0x00000020   /* native name for December */
#define CAL_SMONTHNAME13           0x00000021   /* native name for 13th month (if any) */
#define CAL_SABBREVMONTHNAME1      0x00000022   /* abbreviated name for January */
#define CAL_SABBREVMONTHNAME2      0x00000023   /* abbreviated name for February */
#define CAL_SABBREVMONTHNAME3      0x00000024   /* abbreviated name for March */
#define CAL_SABBREVMONTHNAME4      0x00000025   /* abbreviated name for April */
#define CAL_SABBREVMONTHNAME5      0x00000026   /* abbreviated name for May */
#define CAL_SABBREVMONTHNAME6      0x00000027   /* abbreviated name for June */
#define CAL_SABBREVMONTHNAME7      0x00000028   /* abbreviated name for July */
#define CAL_SABBREVMONTHNAME8      0x00000029   /* abbreviated name for August */
#define CAL_SABBREVMONTHNAME9      0x0000002a   /* abbreviated name for September */
#define CAL_SABBREVMONTHNAME10     0x0000002b   /* abbreviated name for October */
#define CAL_SABBREVMONTHNAME11     0x0000002c   /* abbreviated name for November */
#define CAL_SABBREVMONTHNAME12     0x0000002d   /* abbreviated name for December */
#define CAL_SABBREVMONTHNAME13     0x0000002e   /* abbreviated name for 13th month (if any) */

#if(WINVER >= 0x040a)
#define CAL_SYEARMONTH            0x0000002f  // year month format string
#define CAL_ITWODIGITYEARMAX      0x00000030  // two digit year max
#endif /* WINVER >= 0x040a */

/*
 *  Calendar Enumeration Value.
 */
#define ENUM_ALL_CALENDARS         0xffffffff   /* enumerate all calendars */

/*
 *  Calendar ID Values.
 */
#define CAL_GREGORIAN                  1      // Gregorian (localized) calendar 
#define CAL_GREGORIAN_US               2      // Gregorian (U.S.) calendar 
#define CAL_JAPAN                      3      // Japanese Emperor Era calendar 
#define CAL_TAIWAN                     4      // Republic of China Era calendar 
#define CAL_KOREA                      5      // Korean Tangun Era calendar 
#define CAL_HIJRI                      6      // Hijri Era calendar 
#define CAL_THAI                       7      // Thai Era calendar 
#define CAL_HEBREW                     8      // Hebrew Lunar Era calendar 
#define CAL_GREGORIAN_ME_FRENCH        9      // Gregorian Middle East French calendar
#define CAL_GREGORIAN_ARABIC           10     // Gregorian Arabic calendar
#define CAL_GREGORIAN_XLIT_ENGLISH     11     // Gregorian Transliterated English calendar
#define CAL_GREGORIAN_XLIT_FRENCH      12     // Gregorian Transliterated French calendar

//begin_winver_500
#if(WINVER >= 0x040a)
//
//  Language Group ID Values.
//
#define LGRPID_WESTERN_EUROPE        0x0001   // Western Europe & U.S.
#define LGRPID_CENTRAL_EUROPE        0x0002   // Central Europe
#define LGRPID_BALTIC                0x0003   // Baltic
#define LGRPID_GREEK                 0x0004   // Greek
#define LGRPID_CYRILLIC              0x0005   // Cyrillic
#define LGRPID_TURKISH               0x0006   // Turkish
#define LGRPID_JAPANESE              0x0007   // Japanese
#define LGRPID_KOREAN                0x0008   // Korean
#define LGRPID_TRADITIONAL_CHINESE   0x0009   // Traditional Chinese
#define LGRPID_SIMPLIFIED_CHINESE    0x000a   // Simplified Chinese
#define LGRPID_THAI                  0x000b   // Thai
#define LGRPID_HEBREW                0x000c   // Hebrew
#define LGRPID_ARABIC                0x000d   // Arabic
#define LGRPID_VIETNAMESE            0x000e   // Vietnamese
#define LGRPID_INDIC                 0x000f   // Indic
#define LGRPID_GEORGIAN              0x0010   // Georgian
#define LGRPID_ARMENIAN              0x0011   // Armenian
#endif /* WINVER >= 0x040a */
//;end_winver_500

/***************************************************************************\
* Typedefs
*
* Define all types for the NLS component here.
\***************************************************************************/

//
//  Language Group ID.
//
typedef DWORD LGRPID;

/*
 *  Locale type constant.
 */
typedef DWORD LCTYPE;

/*
 *  Calendar type constant.
 */
typedef DWORD CALTYPE;

/*
 *  Calendar ID.
 */
typedef DWORD CALID;

/*
 *  CP Info.
 */

typedef struct _cpinfo {
    UINT    MaxCharSize;                    /* max length (bytes) of a char */
    BYTE    DefaultChar[MAX_DEFAULTCHAR];   /* default character */
    BYTE    LeadByte[MAX_LEADBYTES];        /* lead byte ranges */
} CPINFO, *LPCPINFO;

typedef struct _cpinfoexA {
    UINT    MaxCharSize;                    // max length (in bytes) of a char
    BYTE    DefaultChar[MAX_DEFAULTCHAR];   // default character (MB)
    BYTE    LeadByte[MAX_LEADBYTES];        // lead byte ranges
    WCHAR   UnicodeDefaultChar;             // default character (Unicode)
    UINT    CodePage;                       // code page id
    CHAR    CodePageName[MAX_PATH];         // code page name (Unicode)
} CPINFOEXA, *LPCPINFOEXA;
typedef struct _cpinfoexW {
    UINT    MaxCharSize;                    // max length (in bytes) of a char
    BYTE    DefaultChar[MAX_DEFAULTCHAR];   // default character (MB)
    BYTE    LeadByte[MAX_LEADBYTES];        // lead byte ranges
    WCHAR   UnicodeDefaultChar;             // default character (Unicode)
    UINT    CodePage;                       // code page id
    WCHAR   CodePageName[MAX_PATH];         // code page name (Unicode)
} CPINFOEXW, *LPCPINFOEXW;
#ifdef UNICODE
typedef CPINFOEXW CPINFOEX;
typedef LPCPINFOEXW LPCPINFOEX;
#else
typedef CPINFOEXA CPINFOEX;
typedef LPCPINFOEXA LPCPINFOEX;
#endif // UNICODE

/*
 *  Number format.
 */

typedef struct _numberfmtA {
    UINT    NumDigits;                 /* number of decimal digits */
    UINT    LeadingZero;               /* if leading zero in decimal fields */
    UINT    Grouping;                  /* group size left of decimal */
    LPSTR   lpDecimalSep;              /* ptr to decimal separator string */
    LPSTR   lpThousandSep;             /* ptr to thousand separator string */
    UINT    NegativeOrder;             /* negative number ordering */
} NUMBERFMTA, *LPNUMBERFMTA;
typedef struct _numberfmtW {
    UINT    NumDigits;                 /* number of decimal digits */
    UINT    LeadingZero;               /* if leading zero in decimal fields */
    UINT    Grouping;                  /* group size left of decimal */
    LPWSTR  lpDecimalSep;              /* ptr to decimal separator string */
    LPWSTR  lpThousandSep;             /* ptr to thousand separator string */
    UINT    NegativeOrder;             /* negative number ordering */
} NUMBERFMTW, *LPNUMBERFMTW;
#ifdef UNICODE
typedef NUMBERFMTW NUMBERFMT;
typedef LPNUMBERFMTW LPNUMBERFMT;
#else
typedef NUMBERFMTA NUMBERFMT;
typedef LPNUMBERFMTA LPNUMBERFMT;
#endif // UNICODE

/*
 *  Currency format.
 */

typedef struct _currencyfmtA {
    UINT    NumDigits;                 /* number of decimal digits */
    UINT    LeadingZero;               /* if leading zero in decimal fields */
    UINT    Grouping;                  /* group size left of decimal */
    LPSTR   lpDecimalSep;              /* ptr to decimal separator string */
    LPSTR   lpThousandSep;             /* ptr to thousand separator string */
    UINT    NegativeOrder;             /* negative currency ordering */
    UINT    PositiveOrder;             /* positive currency ordering */
    LPSTR   lpCurrencySymbol;          /* ptr to currency symbol string */
} CURRENCYFMTA, *LPCURRENCYFMTA;
typedef struct _currencyfmtW {
    UINT    NumDigits;                 /* number of decimal digits */
    UINT    LeadingZero;               /* if leading zero in decimal fields */
    UINT    Grouping;                  /* group size left of decimal */
    LPWSTR  lpDecimalSep;              /* ptr to decimal separator string */
    LPWSTR  lpThousandSep;             /* ptr to thousand separator string */
    UINT    NegativeOrder;             /* negative currency ordering */
    UINT    PositiveOrder;             /* positive currency ordering */
    LPWSTR  lpCurrencySymbol;          /* ptr to currency symbol string */
} CURRENCYFMTW, *LPCURRENCYFMTW;
#ifdef UNICODE
typedef CURRENCYFMTW CURRENCYFMT;
typedef LPCURRENCYFMTW LPCURRENCYFMT;
#else
typedef CURRENCYFMTA CURRENCYFMT;
typedef LPCURRENCYFMTA LPCURRENCYFMT;
#endif // UNICODE

/*
 * GEO defines
 */

typedef LONG    GEOID;
typedef DWORD   GEOTYPE;
typedef DWORD   GEOCLASS;

#define GEOID_NOT_AVAILABLE -1
#define IDS_GEO_BASE        0x8000

/*
 * GEO information types for clients to query
 */

enum SYSGEOTYPE {
    GEO_NATION      =       0x0001,
    GEO_LATITUDE    =       0x0002,
    GEO_LONGITUDE   =       0x0003,
    GEO_ISO2        =       0x0004,
    GEO_ISO3        =       0x0005,
    GEO_RFC1766     =       0x0006,
    GEO_LCID        =       0x0007,
    GEO_FRIENDLYNAME=       0x0008,
    GEO_OFFICIALNAME=       0x0009,
    GEO_TIMEZONES   =       0x000A,
    GEO_OFFICIALLANGUAGES = 0x000B,
};

/*
 * More GEOCLASS defines will be listed here
 */

enum SYSGEOCLASS {
    GEOCLASS_NATION  = 16,
    GEOCLASS_REGION  = 14,
};

/*
 *  Enumeration function constants.
 */

#ifdef STRICT
typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LPARAM);
typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LPARAM);
typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCA)(LPSTR, LPARAM);
typedef BOOL (CALLBACK* LOCALE_ENUMPROCA)(LPSTR);
typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCA)(LPSTR);
typedef BOOL (CALLBACK* DATEFMT_ENUMPROCA)(LPSTR);
typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXA)(LPSTR, CALID);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?