WinNls.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:57k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*++
  2. Copyright (c) Microsoft Corporation  All rights reserved.
  3. Module Name:
  4.     winnls.h
  5. Abstract:
  6.     Procedure declarations, constant definitions, and macros for the
  7.     NLS component.
  8. --*/
  9. #ifndef _WINNLS_
  10. #define _WINNLS_
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. #ifndef NONLS
  15. #ifdef _MAC
  16. #include <macwin32.h>
  17. #endif
  18. ////////////////////////////////////////////////////////////////////////////
  19. //
  20. //  Constants
  21. //
  22. //  Define all constants for the NLS component here.
  23. //
  24. ////////////////////////////////////////////////////////////////////////////
  25. //
  26. //  String Length Maximums.
  27. //
  28. #define MAX_LEADBYTES             12          // 5 ranges, 2 bytes ea., 0 term.
  29. #define MAX_DEFAULTCHAR           2           // single or double byte
  30. //
  31. //  MBCS and Unicode Translation Flags.
  32. //
  33. #define MB_PRECOMPOSED            0x00000001  // use precomposed chars
  34. #define MB_COMPOSITE              0x00000002  // use composite chars
  35. #define MB_USEGLYPHCHARS          0x00000004  // use glyph chars, not ctrl chars
  36. #define MB_ERR_INVALID_CHARS      0x00000008  // error for invalid chars
  37. #define WC_COMPOSITECHECK         0x00000200  // convert composite to precomposed
  38. #define WC_DISCARDNS              0x00000010  // discard non-spacing chars
  39. #define WC_SEPCHARS               0x00000020  // generate separate chars
  40. #define WC_DEFAULTCHAR            0x00000040  // replace w/ default char
  41. #if(WINVER >= 0x0500)
  42. #define WC_NO_BEST_FIT_CHARS      0x00000400  // do not use best fit chars
  43. #endif /* WINVER >= 0x0500 */
  44. //
  45. //  Character Type Flags.
  46. //
  47. #define CT_CTYPE1                 0x00000001  // ctype 1 information
  48. #define CT_CTYPE2                 0x00000002  // ctype 2 information
  49. #define CT_CTYPE3                 0x00000004  // ctype 3 information
  50. //
  51. //  CType 1 Flag Bits.
  52. //
  53. #define C1_UPPER                  0x0001      // upper case
  54. #define C1_LOWER                  0x0002      // lower case
  55. #define C1_DIGIT                  0x0004      // decimal digits
  56. #define C1_SPACE                  0x0008      // spacing characters
  57. #define C1_PUNCT                  0x0010      // punctuation characters
  58. #define C1_CNTRL                  0x0020      // control characters
  59. #define C1_BLANK                  0x0040      // blank characters
  60. #define C1_XDIGIT                 0x0080      // other digits
  61. #define C1_ALPHA                  0x0100      // any linguistic character
  62. #define C1_DEFINED                0x0200      // defined character
  63. //
  64. //  CType 2 Flag Bits.
  65. //
  66. #define C2_LEFTTORIGHT            0x0001      // left to right
  67. #define C2_RIGHTTOLEFT            0x0002      // right to left
  68. #define C2_EUROPENUMBER           0x0003      // European number, digit
  69. #define C2_EUROPESEPARATOR        0x0004      // European numeric separator
  70. #define C2_EUROPETERMINATOR       0x0005      // European numeric terminator
  71. #define C2_ARABICNUMBER           0x0006      // Arabic number
  72. #define C2_COMMONSEPARATOR        0x0007      // common numeric separator
  73. #define C2_BLOCKSEPARATOR         0x0008      // block separator
  74. #define C2_SEGMENTSEPARATOR       0x0009      // segment separator
  75. #define C2_WHITESPACE             0x000A      // white space
  76. #define C2_OTHERNEUTRAL           0x000B      // other neutrals
  77. #define C2_NOTAPPLICABLE          0x0000      // no implicit directionality
  78. //
  79. //  CType 3 Flag Bits.
  80. //
  81. #define C3_NONSPACING             0x0001      // nonspacing character
  82. #define C3_DIACRITIC              0x0002      // diacritic mark
  83. #define C3_VOWELMARK              0x0004      // vowel mark
  84. #define C3_SYMBOL                 0x0008      // symbols
  85. #define C3_KATAKANA               0x0010      // katakana character
  86. #define C3_HIRAGANA               0x0020      // hiragana character
  87. #define C3_HALFWIDTH              0x0040      // half width character
  88. #define C3_FULLWIDTH              0x0080      // full width character
  89. #define C3_IDEOGRAPH              0x0100      // ideographic character
  90. #define C3_KASHIDA                0x0200      // Arabic kashida character
  91. #define C3_LEXICAL                0x0400      // lexical character
  92. #define C3_ALPHA                  0x8000      // any linguistic char (C1_ALPHA)
  93. #define C3_NOTAPPLICABLE          0x0000      // ctype 3 is not applicable
  94. //
  95. //  String Flags.
  96. //
  97. #define NORM_IGNORECASE           0x00000001  // ignore case
  98. #define NORM_IGNORENONSPACE       0x00000002  // ignore nonspacing chars
  99. #define NORM_IGNORESYMBOLS        0x00000004  // ignore symbols
  100. #define NORM_IGNOREKANATYPE       0x00010000  // ignore kanatype
  101. #define NORM_IGNOREWIDTH          0x00020000  // ignore width
  102. //
  103. //  Locale Independent Mapping Flags.
  104. //
  105. #define MAP_FOLDCZONE             0x00000010  // fold compatibility zone chars
  106. #define MAP_PRECOMPOSED           0x00000020  // convert to precomposed chars
  107. #define MAP_COMPOSITE             0x00000040  // convert to composite chars
  108. #define MAP_FOLDDIGITS            0x00000080  // all digits to ASCII 0-9
  109. #if(WINVER >= 0x0500)
  110. #define MAP_EXPAND_LIGATURES      0x00002000  // expand all ligatures
  111. #endif /* WINVER >= 0x0500 */
  112. //
  113. //  Locale Dependent Mapping Flags.
  114. //
  115. #define LCMAP_LOWERCASE           0x00000100  // lower case letters
  116. #define LCMAP_UPPERCASE           0x00000200  // upper case letters
  117. #define LCMAP_SORTKEY             0x00000400  // WC sort key (normalize)
  118. #define LCMAP_BYTEREV             0x00000800  // byte reversal
  119. #define LCMAP_HIRAGANA            0x00100000  // map katakana to hiragana
  120. #define LCMAP_KATAKANA            0x00200000  // map hiragana to katakana
  121. #define LCMAP_HALFWIDTH           0x00400000  // map double byte to single byte
  122. #define LCMAP_FULLWIDTH           0x00800000  // map single byte to double byte
  123. #define LCMAP_LINGUISTIC_CASING   0x01000000  // use linguistic rules for casing
  124. #define LCMAP_SIMPLIFIED_CHINESE  0x02000000  // map traditional chinese to simplified chinese
  125. #define LCMAP_TRADITIONAL_CHINESE 0x04000000  // map simplified chinese to traditional chinese
  126. //
  127. //  Language Group Enumeration Flags.
  128. //
  129. #define LGRPID_INSTALLED          0x00000001  // installed language group ids
  130. #define LGRPID_SUPPORTED          0x00000002  // supported language group ids
  131. //
  132. //  Locale Enumeration Flags.
  133. //
  134. #define LCID_INSTALLED            0x00000001  // installed locale ids
  135. #define LCID_SUPPORTED            0x00000002  // supported locale ids
  136. #define LCID_ALTERNATE_SORTS      0x00000004  // alternate sort locale ids
  137. //
  138. //  Code Page Enumeration Flags.
  139. //
  140. #define CP_INSTALLED              0x00000001  // installed code page ids
  141. #define CP_SUPPORTED              0x00000002  // supported code page ids
  142. //
  143. //  Sorting Flags.
  144. //
  145. //    WORD Sort:    culturally correct sort
  146. //                  hyphen and apostrophe are special cased
  147. //                  example: "coop" and "co-op" will sort together in a list
  148. //
  149. //                        co_op     <-------  underscore (symbol)
  150. //                        coat
  151. //                        comb
  152. //                        coop
  153. //                        co-op     <-------  hyphen (punctuation)
  154. //                        cork
  155. //                        went
  156. //                        were
  157. //                        we're     <-------  apostrophe (punctuation)
  158. //
  159. //
  160. //    STRING Sort:  hyphen and apostrophe will sort with all other symbols
  161. //
  162. //                        co-op     <-------  hyphen (punctuation)
  163. //                        co_op     <-------  underscore (symbol)
  164. //                        coat
  165. //                        comb
  166. //                        coop
  167. //                        cork
  168. //                        we're     <-------  apostrophe (punctuation)
  169. //                        went
  170. //                        were
  171. //
  172. #define SORT_STRINGSORT           0x00001000  // use string sort method
  173. //
  174. //  Compare String Return Values.
  175. //
  176. #define CSTR_LESS_THAN            1           // string 1 less than string 2
  177. #define CSTR_EQUAL                2           // string 1 equal to string 2
  178. #define CSTR_GREATER_THAN         3           // string 1 greater than string 2
  179. //
  180. //  Code Page Default Values.
  181. //
  182. #define CP_ACP                    0           // default to ANSI code page
  183. #define CP_OEMCP                  1           // default to OEM  code page
  184. #define CP_MACCP                  2           // default to MAC  code page
  185. #define CP_THREAD_ACP             3           // current thread's ANSI code page
  186. #define CP_SYMBOL                 42          // SYMBOL translations
  187. #define CP_UTF7                   65000       // UTF-7 translation
  188. #define CP_UTF8                   65001       // UTF-8 translation
  189. //
  190. //  Country/Region Codes.
  191. //
  192. #define CTRY_DEFAULT              0
  193. #define CTRY_ALBANIA              355         // Albania
  194. #define CTRY_ALGERIA              213         // Algeria
  195. #define CTRY_ARGENTINA            54          // Argentina
  196. #define CTRY_ARMENIA              374         // Armenia
  197. #define CTRY_AUSTRALIA            61          // Australia
  198. #define CTRY_AUSTRIA              43          // Austria
  199. #define CTRY_AZERBAIJAN           994         // Azerbaijan
  200. #define CTRY_BAHRAIN              973         // Bahrain
  201. #define CTRY_BELARUS              375         // Belarus
  202. #define CTRY_BELGIUM              32          // Belgium
  203. #define CTRY_BELIZE               501         // Belize
  204. #define CTRY_BOLIVIA              591         // Bolivia
  205. #define CTRY_BRAZIL               55          // Brazil
  206. #define CTRY_BRUNEI_DARUSSALAM    673         // Brunei Darussalam
  207. #define CTRY_BULGARIA             359         // Bulgaria
  208. #define CTRY_CANADA               2           // Canada
  209. #define CTRY_CARIBBEAN            1           // Caribbean
  210. #define CTRY_CHILE                56          // Chile
  211. #define CTRY_COLOMBIA             57          // Colombia
  212. #define CTRY_COSTA_RICA           506         // Costa Rica
  213. #define CTRY_CROATIA              385         // Croatia
  214. #define CTRY_CZECH                420         // Czech Republic
  215. #define CTRY_DENMARK              45          // Denmark
  216. #define CTRY_DOMINICAN_REPUBLIC   1           // Dominican Republic
  217. #define CTRY_ECUADOR              593         // Ecuador
  218. #define CTRY_EGYPT                20          // Egypt
  219. #define CTRY_EL_SALVADOR          503         // El Salvador
  220. #define CTRY_ESTONIA              372         // Estonia
  221. #define CTRY_FAEROE_ISLANDS       298         // Faeroe Islands
  222. #define CTRY_FINLAND              358         // Finland
  223. #define CTRY_FRANCE               33          // France
  224. #define CTRY_GEORGIA              995         // Georgia
  225. #define CTRY_GERMANY              49          // Germany
  226. #define CTRY_GREECE               30          // Greece
  227. #define CTRY_GUATEMALA            502         // Guatemala
  228. #define CTRY_HONDURAS             504         // Honduras
  229. #define CTRY_HONG_KONG            852         // Hong Kong S.A.R., P.R.C.
  230. #define CTRY_HUNGARY              36          // Hungary
  231. #define CTRY_ICELAND              354         // Iceland
  232. #define CTRY_INDIA                91          // India
  233. #define CTRY_INDONESIA            62          // Indonesia
  234. #define CTRY_IRAN                 981         // Iran
  235. #define CTRY_IRAQ                 964         // Iraq
  236. #define CTRY_IRELAND              353         // Ireland
  237. #define CTRY_ISRAEL               972         // Israel
  238. #define CTRY_ITALY                39          // Italy
  239. #define CTRY_JAMAICA              1           // Jamaica
  240. #define CTRY_JAPAN                81          // Japan
  241. #define CTRY_JORDAN               962         // Jordan
  242. #define CTRY_KAZAKSTAN            7           // Kazakstan
  243. #define CTRY_KENYA                254         // Kenya
  244. #define CTRY_KUWAIT               965         // Kuwait
  245. #define CTRY_KYRGYZSTAN           996         // Kyrgyzstan
  246. #define CTRY_LATVIA               371         // Latvia
  247. #define CTRY_LEBANON              961         // Lebanon
  248. #define CTRY_LIBYA                218         // Libya
  249. #define CTRY_LIECHTENSTEIN        41          // Liechtenstein
  250. #define CTRY_LITHUANIA            370         // Lithuania
  251. #define CTRY_LUXEMBOURG           352         // Luxembourg
  252. #define CTRY_MACAU                853         // Macau S.A.R., PRC
  253. #define CTRY_MACEDONIA            389         // Former Yugoslav Republic of Macedonia
  254. #define CTRY_MALAYSIA             60          // Malaysia
  255. #define CTRY_MALDIVES             960         // Maldives
  256. #define CTRY_MEXICO               52          // Mexico
  257. #define CTRY_MONACO               33          // Principality of Monaco
  258. #define CTRY_MONGOLIA             976         // Mongolia
  259. #define CTRY_MOROCCO              212         // Morocco
  260. #define CTRY_NETHERLANDS          31          // Netherlands
  261. #define CTRY_NEW_ZEALAND          64          // New Zealand
  262. #define CTRY_NICARAGUA            505         // Nicaragua
  263. #define CTRY_NORWAY               47          // Norway
  264. #define CTRY_OMAN                 968         // Oman
  265. #define CTRY_PAKISTAN             92          // Islamic Republic of Pakistan
  266. #define CTRY_PANAMA               507         // Panama
  267. #define CTRY_PARAGUAY             595         // Paraguay
  268. #define CTRY_PERU                 51          // Peru
  269. #define CTRY_PHILIPPINES          63          // Republic of the Philippines
  270. #define CTRY_POLAND               48          // Poland
  271. #define CTRY_PORTUGAL             351         // Portugal
  272. #define CTRY_PRCHINA              86          // People's Republic of China
  273. #define CTRY_PUERTO_RICO          1           // Puerto Rico
  274. #define CTRY_QATAR                974         // Qatar
  275. #define CTRY_ROMANIA              40          // Romania
  276. #define CTRY_RUSSIA               7           // Russia
  277. #define CTRY_SAUDI_ARABIA         966         // Saudi Arabia
  278. #define CTRY_SERBIA               381         // Serbia
  279. #define CTRY_SINGAPORE            65          // Singapore
  280. #define CTRY_SLOVAK               421         // Slovak Republic
  281. #define CTRY_SLOVENIA             386         // Slovenia
  282. #define CTRY_SOUTH_AFRICA         27          // South Africa
  283. #define CTRY_SOUTH_KOREA          82          // Korea
  284. #define CTRY_SPAIN                34          // Spain
  285. #define CTRY_SWEDEN               46          // Sweden
  286. #define CTRY_SWITZERLAND          41          // Switzerland
  287. #define CTRY_SYRIA                963         // Syria
  288. #define CTRY_TAIWAN               886         // Taiwan
  289. #define CTRY_TATARSTAN            7           // Tatarstan
  290. #define CTRY_THAILAND             66          // Thailand
  291. #define CTRY_TRINIDAD_Y_TOBAGO    1           // Trinidad y Tobago
  292. #define CTRY_TUNISIA              216         // Tunisia
  293. #define CTRY_TURKEY               90          // Turkey
  294. #define CTRY_UAE                  971         // U.A.E.
  295. #define CTRY_UKRAINE              380         // Ukraine
  296. #define CTRY_UNITED_KINGDOM       44          // United Kingdom
  297. #define CTRY_UNITED_STATES        1           // United States
  298. #define CTRY_URUGUAY              598         // Uruguay
  299. #define CTRY_UZBEKISTAN           7           // Uzbekistan
  300. #define CTRY_VENEZUELA            58          // Venezuela
  301. #define CTRY_VIET_NAM             84          // Viet Nam
  302. #define CTRY_YEMEN                967         // Yemen
  303. #define CTRY_ZIMBABWE             263         // Zimbabwe
  304. //
  305. //  Locale Types.
  306. //
  307. //  These types are used for the GetLocaleInfo NLS API routine.
  308. //  Some of these types are also used for the SetLocaleInfo NLS API routine.
  309. //
  310. //
  311. //  The following LCTypes may be used in combination with any other LCTypes.
  312. //
  313. //    LOCALE_NOUSEROVERRIDE is also used in GetTimeFormat and
  314. //    GetDateFormat.
  315. //
  316. //    LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need
  317. //    to do string translation.
  318. //
  319. //    LOCALE_RETURN_NUMBER will return the result from GetLocaleInfo as a
  320. //    number instead of a string.  This flag is only valid for the LCTypes
  321. //    beginning with LOCALE_I.
  322. //
  323. #define LOCALE_NOUSEROVERRIDE         0x80000000   // do not use user overrides
  324. #define LOCALE_USE_CP_ACP             0x40000000   // use the system ACP
  325. #if(WINVER >= 0x0400)
  326. #define LOCALE_RETURN_NUMBER          0x20000000   // return number instead of string
  327. #endif /* WINVER >= 0x0400 */
  328. //
  329. //  The following LCTypes are mutually exclusive in that they may NOT
  330. //  be used in combination with each other.
  331. //
  332. #define LOCALE_ILANGUAGE              0x00000001   // language id
  333. #define LOCALE_SLANGUAGE              0x00000002   // localized name of language
  334. #define LOCALE_SENGLANGUAGE           0x00001001   // English name of language
  335. #define LOCALE_SABBREVLANGNAME        0x00000003   // abbreviated language name
  336. #define LOCALE_SNATIVELANGNAME        0x00000004   // native name of language
  337. #define LOCALE_ICOUNTRY               0x00000005   // country code
  338. #define LOCALE_SCOUNTRY               0x00000006   // localized name of country
  339. #define LOCALE_SENGCOUNTRY            0x00001002   // English name of country
  340. #define LOCALE_SABBREVCTRYNAME        0x00000007   // abbreviated country name
  341. #define LOCALE_SNATIVECTRYNAME        0x00000008   // native name of country
  342. #define LOCALE_IDEFAULTLANGUAGE       0x00000009   // default language id
  343. #define LOCALE_IDEFAULTCOUNTRY        0x0000000A   // default country code
  344. #define LOCALE_IDEFAULTCODEPAGE       0x0000000B   // default oem code page
  345. #define LOCALE_IDEFAULTANSICODEPAGE   0x00001004   // default ansi code page
  346. #define LOCALE_IDEFAULTMACCODEPAGE    0x00001011   // default mac code page
  347. #define LOCALE_SLIST                  0x0000000C   // list item separator
  348. #define LOCALE_IMEASURE               0x0000000D   // 0 = metric, 1 = US
  349. #define LOCALE_SDECIMAL               0x0000000E   // decimal separator
  350. #define LOCALE_STHOUSAND              0x0000000F   // thousand separator
  351. #define LOCALE_SGROUPING              0x00000010   // digit grouping
  352. #define LOCALE_IDIGITS                0x00000011   // number of fractional digits
  353. #define LOCALE_ILZERO                 0x00000012   // leading zeros for decimal
  354. #define LOCALE_INEGNUMBER             0x00001010   // negative number mode
  355. #define LOCALE_SNATIVEDIGITS          0x00000013   // native ascii 0-9
  356. #define LOCALE_SCURRENCY              0x00000014   // local monetary symbol
  357. #define LOCALE_SINTLSYMBOL            0x00000015   // intl monetary symbol
  358. #define LOCALE_SMONDECIMALSEP         0x00000016   // monetary decimal separator
  359. #define LOCALE_SMONTHOUSANDSEP        0x00000017   // monetary thousand separator
  360. #define LOCALE_SMONGROUPING           0x00000018   // monetary grouping
  361. #define LOCALE_ICURRDIGITS            0x00000019   // # local monetary digits
  362. #define LOCALE_IINTLCURRDIGITS        0x0000001A   // # intl monetary digits
  363. #define LOCALE_ICURRENCY              0x0000001B   // positive currency mode
  364. #define LOCALE_INEGCURR               0x0000001C   // negative currency mode
  365. #define LOCALE_SDATE                  0x0000001D   // date separator
  366. #define LOCALE_STIME                  0x0000001E   // time separator
  367. #define LOCALE_SSHORTDATE             0x0000001F   // short date format string
  368. #define LOCALE_SLONGDATE              0x00000020   // long date format string
  369. #define LOCALE_STIMEFORMAT            0x00001003   // time format string
  370. #define LOCALE_IDATE                  0x00000021   // short date format ordering
  371. #define LOCALE_ILDATE                 0x00000022   // long date format ordering
  372. #define LOCALE_ITIME                  0x00000023   // time format specifier
  373. #define LOCALE_ITIMEMARKPOSN          0x00001005   // time marker position
  374. #define LOCALE_ICENTURY               0x00000024   // century format specifier (short date)
  375. #define LOCALE_ITLZERO                0x00000025   // leading zeros in time field
  376. #define LOCALE_IDAYLZERO              0x00000026   // leading zeros in day field (short date)
  377. #define LOCALE_IMONLZERO              0x00000027   // leading zeros in month field (short date)
  378. #define LOCALE_S1159                  0x00000028   // AM designator
  379. #define LOCALE_S2359                  0x00000029   // PM designator
  380. #define LOCALE_ICALENDARTYPE          0x00001009   // type of calendar specifier
  381. #define LOCALE_IOPTIONALCALENDAR      0x0000100B   // additional calendar types specifier
  382. #define LOCALE_IFIRSTDAYOFWEEK        0x0000100C   // first day of week specifier
  383. #define LOCALE_IFIRSTWEEKOFYEAR       0x0000100D   // first week of year specifier
  384. #define LOCALE_SDAYNAME1              0x0000002A   // long name for Monday
  385. #define LOCALE_SDAYNAME2              0x0000002B   // long name for Tuesday
  386. #define LOCALE_SDAYNAME3              0x0000002C   // long name for Wednesday
  387. #define LOCALE_SDAYNAME4              0x0000002D   // long name for Thursday
  388. #define LOCALE_SDAYNAME5              0x0000002E   // long name for Friday
  389. #define LOCALE_SDAYNAME6              0x0000002F   // long name for Saturday
  390. #define LOCALE_SDAYNAME7              0x00000030   // long name for Sunday
  391. #define LOCALE_SABBREVDAYNAME1        0x00000031   // abbreviated name for Monday
  392. #define LOCALE_SABBREVDAYNAME2        0x00000032   // abbreviated name for Tuesday
  393. #define LOCALE_SABBREVDAYNAME3        0x00000033   // abbreviated name for Wednesday
  394. #define LOCALE_SABBREVDAYNAME4        0x00000034   // abbreviated name for Thursday
  395. #define LOCALE_SABBREVDAYNAME5        0x00000035   // abbreviated name for Friday
  396. #define LOCALE_SABBREVDAYNAME6        0x00000036   // abbreviated name for Saturday
  397. #define LOCALE_SABBREVDAYNAME7        0x00000037   // abbreviated name for Sunday
  398. #define LOCALE_SMONTHNAME1            0x00000038   // long name for January
  399. #define LOCALE_SMONTHNAME2            0x00000039   // long name for February
  400. #define LOCALE_SMONTHNAME3            0x0000003A   // long name for March
  401. #define LOCALE_SMONTHNAME4            0x0000003B   // long name for April
  402. #define LOCALE_SMONTHNAME5            0x0000003C   // long name for May
  403. #define LOCALE_SMONTHNAME6            0x0000003D   // long name for June
  404. #define LOCALE_SMONTHNAME7            0x0000003E   // long name for July
  405. #define LOCALE_SMONTHNAME8            0x0000003F   // long name for August
  406. #define LOCALE_SMONTHNAME9            0x00000040   // long name for September
  407. #define LOCALE_SMONTHNAME10           0x00000041   // long name for October
  408. #define LOCALE_SMONTHNAME11           0x00000042   // long name for November
  409. #define LOCALE_SMONTHNAME12           0x00000043   // long name for December
  410. #define LOCALE_SMONTHNAME13           0x0000100E   // long name for 13th month (if exists)
  411. #define LOCALE_SABBREVMONTHNAME1      0x00000044   // abbreviated name for January
  412. #define LOCALE_SABBREVMONTHNAME2      0x00000045   // abbreviated name for February
  413. #define LOCALE_SABBREVMONTHNAME3      0x00000046   // abbreviated name for March
  414. #define LOCALE_SABBREVMONTHNAME4      0x00000047   // abbreviated name for April
  415. #define LOCALE_SABBREVMONTHNAME5      0x00000048   // abbreviated name for May
  416. #define LOCALE_SABBREVMONTHNAME6      0x00000049   // abbreviated name for June
  417. #define LOCALE_SABBREVMONTHNAME7      0x0000004A   // abbreviated name for July
  418. #define LOCALE_SABBREVMONTHNAME8      0x0000004B   // abbreviated name for August
  419. #define LOCALE_SABBREVMONTHNAME9      0x0000004C   // abbreviated name for September
  420. #define LOCALE_SABBREVMONTHNAME10     0x0000004D   // abbreviated name for October
  421. #define LOCALE_SABBREVMONTHNAME11     0x0000004E   // abbreviated name for November
  422. #define LOCALE_SABBREVMONTHNAME12     0x0000004F   // abbreviated name for December
  423. #define LOCALE_SABBREVMONTHNAME13     0x0000100F   // abbreviated name for 13th month (if exists)
  424. #define LOCALE_SPOSITIVESIGN          0x00000050   // positive sign
  425. #define LOCALE_SNEGATIVESIGN          0x00000051   // negative sign
  426. #define LOCALE_IPOSSIGNPOSN           0x00000052   // positive sign position
  427. #define LOCALE_INEGSIGNPOSN           0x00000053   // negative sign position
  428. #define LOCALE_IPOSSYMPRECEDES        0x00000054   // mon sym precedes pos amt
  429. #define LOCALE_IPOSSEPBYSPACE         0x00000055   // mon sym sep by space from pos amt
  430. #define LOCALE_INEGSYMPRECEDES        0x00000056   // mon sym precedes neg amt
  431. #define LOCALE_INEGSEPBYSPACE         0x00000057   // mon sym sep by space from neg amt
  432. #if(WINVER >= 0x0400)
  433. #define LOCALE_FONTSIGNATURE          0x00000058   // font signature
  434. #define LOCALE_SISO639LANGNAME        0x00000059   // ISO abbreviated language name
  435. #define LOCALE_SISO3166CTRYNAME       0x0000005A   // ISO abbreviated country name
  436. #endif /* WINVER >= 0x0400 */
  437. #if(WINVER >= 0x0500)
  438. #define LOCALE_IDEFAULTEBCDICCODEPAGE 0x00001012   // default ebcdic code page
  439. #define LOCALE_IPAPERSIZE             0x0000100A   // 1 = letter, 5 = legal, 8 = a3, 9 = a4
  440. #define LOCALE_SENGCURRNAME           0x00001007   // english name of currency
  441. #define LOCALE_SNATIVECURRNAME        0x00001008   // native name of currency
  442. #define LOCALE_SYEARMONTH             0x00001006   // year month format string
  443. #define LOCALE_SSORTNAME              0x00001013   // sort name
  444. #define LOCALE_IDIGITSUBSTITUTION     0x00001014   // 0 = context, 1 = none, 2 = national
  445. #endif /* WINVER >= 0x0500 */
  446. //
  447. //  Time Flags for GetTimeFormat.
  448. //
  449. #define TIME_NOMINUTESORSECONDS   0x00000001  // do not use minutes or seconds
  450. #define TIME_NOSECONDS            0x00000002  // do not use seconds
  451. #define TIME_NOTIMEMARKER         0x00000004  // do not use time marker
  452. #define TIME_FORCE24HOURFORMAT    0x00000008  // always use 24 hour format
  453. //
  454. //  Date Flags for GetDateFormat.
  455. //
  456. #define DATE_SHORTDATE            0x00000001  // use short date picture
  457. #define DATE_LONGDATE             0x00000002  // use long date picture
  458. #define DATE_USE_ALT_CALENDAR     0x00000004  // use alternate calendar (if any)
  459. #if(WINVER >= 0x0500)
  460. #define DATE_YEARMONTH            0x00000008  // use year month picture
  461. #define DATE_LTRREADING           0x00000010  // add marks for left to right reading order layout
  462. #define DATE_RTLREADING           0x00000020  // add marks for right to left reading order layout
  463. #endif /* WINVER >= 0x0500 */
  464. //
  465. //  Calendar Types.
  466. //
  467. //  These types are used for the EnumCalendarInfo and GetCalendarInfo
  468. //  NLS API routines.
  469. //  Some of these types are also used for the SetCalendarInfo NLS API
  470. //  routine.
  471. //
  472. //
  473. //  The following CalTypes may be used in combination with any other CalTypes.
  474. //
  475. //    CAL_NOUSEROVERRIDE
  476. //
  477. //    CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string
  478. //    translation.
  479. //
  480. //    CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a
  481. //    number instead of a string.  This flag is only valid for the CalTypes
  482. //    beginning with CAL_I.
  483. //
  484. #if(WINVER >= 0x0500)
  485. #define CAL_NOUSEROVERRIDE        LOCALE_NOUSEROVERRIDE  // do not use user overrides
  486. #define CAL_USE_CP_ACP            LOCALE_USE_CP_ACP      // use the system ACP
  487. #define CAL_RETURN_NUMBER         LOCALE_RETURN_NUMBER   // return number instead of string
  488. #endif /* WINVER >= 0x0500 */
  489. //
  490. //  The following CalTypes are mutually exclusive in that they may NOT
  491. //  be used in combination with each other.
  492. //
  493. #define CAL_ICALINTVALUE          0x00000001  // calendar type
  494. #define CAL_SCALNAME              0x00000002  // native name of calendar
  495. #define CAL_IYEAROFFSETRANGE      0x00000003  // starting years of eras
  496. #define CAL_SERASTRING            0x00000004  // era name for IYearOffsetRanges
  497. #define CAL_SSHORTDATE            0x00000005  // short date format string
  498. #define CAL_SLONGDATE             0x00000006  // long date format string
  499. #define CAL_SDAYNAME1             0x00000007  // native name for Monday
  500. #define CAL_SDAYNAME2             0x00000008  // native name for Tuesday
  501. #define CAL_SDAYNAME3             0x00000009  // native name for Wednesday
  502. #define CAL_SDAYNAME4             0x0000000a  // native name for Thursday
  503. #define CAL_SDAYNAME5             0x0000000b  // native name for Friday
  504. #define CAL_SDAYNAME6             0x0000000c  // native name for Saturday
  505. #define CAL_SDAYNAME7             0x0000000d  // native name for Sunday
  506. #define CAL_SABBREVDAYNAME1       0x0000000e  // abbreviated name for Monday
  507. #define CAL_SABBREVDAYNAME2       0x0000000f  // abbreviated name for Tuesday
  508. #define CAL_SABBREVDAYNAME3       0x00000010  // abbreviated name for Wednesday
  509. #define CAL_SABBREVDAYNAME4       0x00000011  // abbreviated name for Thursday
  510. #define CAL_SABBREVDAYNAME5       0x00000012  // abbreviated name for Friday
  511. #define CAL_SABBREVDAYNAME6       0x00000013  // abbreviated name for Saturday
  512. #define CAL_SABBREVDAYNAME7       0x00000014  // abbreviated name for Sunday
  513. #define CAL_SMONTHNAME1           0x00000015  // native name for January
  514. #define CAL_SMONTHNAME2           0x00000016  // native name for February
  515. #define CAL_SMONTHNAME3           0x00000017  // native name for March
  516. #define CAL_SMONTHNAME4           0x00000018  // native name for April
  517. #define CAL_SMONTHNAME5           0x00000019  // native name for May
  518. #define CAL_SMONTHNAME6           0x0000001a  // native name for June
  519. #define CAL_SMONTHNAME7           0x0000001b  // native name for July
  520. #define CAL_SMONTHNAME8           0x0000001c  // native name for August
  521. #define CAL_SMONTHNAME9           0x0000001d  // native name for September
  522. #define CAL_SMONTHNAME10          0x0000001e  // native name for October
  523. #define CAL_SMONTHNAME11          0x0000001f  // native name for November
  524. #define CAL_SMONTHNAME12          0x00000020  // native name for December
  525. #define CAL_SMONTHNAME13          0x00000021  // native name for 13th month (if any)
  526. #define CAL_SABBREVMONTHNAME1     0x00000022  // abbreviated name for January
  527. #define CAL_SABBREVMONTHNAME2     0x00000023  // abbreviated name for February
  528. #define CAL_SABBREVMONTHNAME3     0x00000024  // abbreviated name for March
  529. #define CAL_SABBREVMONTHNAME4     0x00000025  // abbreviated name for April
  530. #define CAL_SABBREVMONTHNAME5     0x00000026  // abbreviated name for May
  531. #define CAL_SABBREVMONTHNAME6     0x00000027  // abbreviated name for June
  532. #define CAL_SABBREVMONTHNAME7     0x00000028  // abbreviated name for July
  533. #define CAL_SABBREVMONTHNAME8     0x00000029  // abbreviated name for August
  534. #define CAL_SABBREVMONTHNAME9     0x0000002a  // abbreviated name for September
  535. #define CAL_SABBREVMONTHNAME10    0x0000002b  // abbreviated name for October
  536. #define CAL_SABBREVMONTHNAME11    0x0000002c  // abbreviated name for November
  537. #define CAL_SABBREVMONTHNAME12    0x0000002d  // abbreviated name for December
  538. #define CAL_SABBREVMONTHNAME13    0x0000002e  // abbreviated name for 13th month (if any)
  539. #if(WINVER >= 0x0500)
  540. #define CAL_SYEARMONTH            0x0000002f  // year month format string
  541. #define CAL_ITWODIGITYEARMAX      0x00000030  // two digit year max
  542. #endif /* WINVER >= 0x0500 */
  543. //
  544. //  Calendar Enumeration Value.
  545. //
  546. #define ENUM_ALL_CALENDARS        0xffffffff  // enumerate all calendars
  547. //
  548. //  Calendar ID Values.
  549. //
  550. #define CAL_GREGORIAN                  1      // Gregorian (localized) calendar
  551. #define CAL_GREGORIAN_US               2      // Gregorian (U.S.) calendar
  552. #define CAL_JAPAN                      3      // Japanese Emperor Era calendar
  553. #define CAL_TAIWAN                     4      // Taiwan calendar
  554. #define CAL_KOREA                      5      // Korean Tangun Era calendar
  555. #define CAL_HIJRI                      6      // Hijri (Arabic Lunar) calendar
  556. #define CAL_THAI                       7      // Thai calendar
  557. #define CAL_HEBREW                     8      // Hebrew (Lunar) calendar
  558. #define CAL_GREGORIAN_ME_FRENCH        9      // Gregorian Middle East French calendar
  559. #define CAL_GREGORIAN_ARABIC           10     // Gregorian Arabic calendar
  560. #define CAL_GREGORIAN_XLIT_ENGLISH     11     // Gregorian Transliterated English calendar
  561. #define CAL_GREGORIAN_XLIT_FRENCH      12     // Gregorian Transliterated French calendar
  562. //
  563. //  Language Group ID Values.
  564. //
  565. #define LGRPID_WESTERN_EUROPE        0x0001   // Western Europe & U.S.
  566. #define LGRPID_CENTRAL_EUROPE        0x0002   // Central Europe
  567. #define LGRPID_BALTIC                0x0003   // Baltic
  568. #define LGRPID_GREEK                 0x0004   // Greek
  569. #define LGRPID_CYRILLIC              0x0005   // Cyrillic
  570. #define LGRPID_TURKISH               0x0006   // Turkish
  571. #define LGRPID_JAPANESE              0x0007   // Japanese
  572. #define LGRPID_KOREAN                0x0008   // Korean
  573. #define LGRPID_TRADITIONAL_CHINESE   0x0009   // Traditional Chinese
  574. #define LGRPID_SIMPLIFIED_CHINESE    0x000a   // Simplified Chinese
  575. #define LGRPID_THAI                  0x000b   // Thai
  576. #define LGRPID_HEBREW                0x000c   // Hebrew
  577. #define LGRPID_ARABIC                0x000d   // Arabic
  578. #define LGRPID_VIETNAMESE            0x000e   // Vietnamese
  579. #define LGRPID_INDIC                 0x000f   // Indic
  580. #define LGRPID_GEORGIAN              0x0010   // Georgian
  581. #define LGRPID_ARMENIAN              0x0011   // Armenian
  582. ////////////////////////////////////////////////////////////////////////////
  583. //
  584. //  Typedefs
  585. //
  586. //  Define all types for the NLS component here.
  587. //
  588. ////////////////////////////////////////////////////////////////////////////
  589. //
  590. //  Language Group ID.
  591. //
  592. typedef DWORD LGRPID;
  593. //
  594. //  Locale type constant.
  595. //
  596. typedef DWORD LCTYPE;
  597. //
  598. //  Calendar type constant.
  599. //
  600. typedef DWORD CALTYPE;
  601. //
  602. //  Calendar ID.
  603. //
  604. typedef DWORD CALID;
  605. //
  606. //  CP Info.
  607. //
  608. typedef struct _cpinfo {
  609.     UINT    MaxCharSize;                    // max length (in bytes) of a char
  610.     BYTE    DefaultChar[MAX_DEFAULTCHAR];   // default character
  611.     BYTE    LeadByte[MAX_LEADBYTES];        // lead byte ranges
  612. } CPINFO, *LPCPINFO;
  613. typedef struct _cpinfoexA {
  614.     UINT    MaxCharSize;                    // max length (in bytes) of a char
  615.     BYTE    DefaultChar[MAX_DEFAULTCHAR];   // default character (MB)
  616.     BYTE    LeadByte[MAX_LEADBYTES];        // lead byte ranges
  617.     WCHAR   UnicodeDefaultChar;             // default character (Unicode)
  618.     UINT    CodePage;                       // code page id
  619.     CHAR    CodePageName[MAX_PATH];         // code page name (Unicode)
  620. } CPINFOEXA, *LPCPINFOEXA;
  621. typedef struct _cpinfoexW {
  622.     UINT    MaxCharSize;                    // max length (in bytes) of a char
  623.     BYTE    DefaultChar[MAX_DEFAULTCHAR];   // default character (MB)
  624.     BYTE    LeadByte[MAX_LEADBYTES];        // lead byte ranges
  625.     WCHAR   UnicodeDefaultChar;             // default character (Unicode)
  626.     UINT    CodePage;                       // code page id
  627.     WCHAR   CodePageName[MAX_PATH];         // code page name (Unicode)
  628. } CPINFOEXW, *LPCPINFOEXW;
  629. #ifdef UNICODE
  630. typedef CPINFOEXW CPINFOEX;
  631. typedef LPCPINFOEXW LPCPINFOEX;
  632. #else
  633. typedef CPINFOEXA CPINFOEX;
  634. typedef LPCPINFOEXA LPCPINFOEX;
  635. #endif // UNICODE
  636. //
  637. //  Number format.
  638. //
  639. typedef struct _numberfmtA {
  640.     UINT    NumDigits;                 // number of decimal digits
  641.     UINT    LeadingZero;               // if leading zero in decimal fields
  642.     UINT    Grouping;                  // group size left of decimal
  643.     LPSTR   lpDecimalSep;              // ptr to decimal separator string
  644.     LPSTR   lpThousandSep;             // ptr to thousand separator string
  645.     UINT    NegativeOrder;             // negative number ordering
  646. } NUMBERFMTA, *LPNUMBERFMTA;
  647. typedef struct _numberfmtW {
  648.     UINT    NumDigits;                 // number of decimal digits
  649.     UINT    LeadingZero;               // if leading zero in decimal fields
  650.     UINT    Grouping;                  // group size left of decimal
  651.     LPWSTR  lpDecimalSep;              // ptr to decimal separator string
  652.     LPWSTR  lpThousandSep;             // ptr to thousand separator string
  653.     UINT    NegativeOrder;             // negative number ordering
  654. } NUMBERFMTW, *LPNUMBERFMTW;
  655. #ifdef UNICODE
  656. typedef NUMBERFMTW NUMBERFMT;
  657. typedef LPNUMBERFMTW LPNUMBERFMT;
  658. #else
  659. typedef NUMBERFMTA NUMBERFMT;
  660. typedef LPNUMBERFMTA LPNUMBERFMT;
  661. #endif // UNICODE
  662. //
  663. //  Currency format.
  664. //
  665. typedef struct _currencyfmtA {
  666.     UINT    NumDigits;                 // number of decimal digits
  667.     UINT    LeadingZero;               // if leading zero in decimal fields
  668.     UINT    Grouping;                  // group size left of decimal
  669.     LPSTR   lpDecimalSep;              // ptr to decimal separator string
  670.     LPSTR   lpThousandSep;             // ptr to thousand separator string
  671.     UINT    NegativeOrder;             // negative currency ordering
  672.     UINT    PositiveOrder;             // positive currency ordering
  673.     LPSTR   lpCurrencySymbol;          // ptr to currency symbol string
  674. } CURRENCYFMTA, *LPCURRENCYFMTA;
  675. typedef struct _currencyfmtW {
  676.     UINT    NumDigits;                 // number of decimal digits
  677.     UINT    LeadingZero;               // if leading zero in decimal fields
  678.     UINT    Grouping;                  // group size left of decimal
  679.     LPWSTR  lpDecimalSep;              // ptr to decimal separator string
  680.     LPWSTR  lpThousandSep;             // ptr to thousand separator string
  681.     UINT    NegativeOrder;             // negative currency ordering
  682.     UINT    PositiveOrder;             // positive currency ordering
  683.     LPWSTR  lpCurrencySymbol;          // ptr to currency symbol string
  684. } CURRENCYFMTW, *LPCURRENCYFMTW;
  685. #ifdef UNICODE
  686. typedef CURRENCYFMTW CURRENCYFMT;
  687. typedef LPCURRENCYFMTW LPCURRENCYFMT;
  688. #else
  689. typedef CURRENCYFMTA CURRENCYFMT;
  690. typedef LPCURRENCYFMTA LPCURRENCYFMT;
  691. #endif // UNICODE
  692. //
  693. //  GEO defines
  694. //
  695. typedef LONG    GEOID;
  696. typedef DWORD   GEOTYPE;
  697. typedef DWORD   GEOCLASS;
  698. #define GEOID_NOT_AVAILABLE -1
  699. //
  700. //  GEO information types for clients to query
  701. //
  702. enum SYSGEOTYPE {
  703.     GEO_NATION      =       0x0001,
  704.     GEO_LATITUDE    =       0x0002,
  705.     GEO_LONGITUDE   =       0x0003,
  706.     GEO_ISO2        =       0x0004,
  707.     GEO_ISO3        =       0x0005,
  708.     GEO_RFC1766     =       0x0006,
  709.     GEO_LCID        =       0x0007,
  710.     GEO_FRIENDLYNAME=       0x0008,
  711.     GEO_OFFICIALNAME=       0x0009,
  712.     GEO_TIMEZONES   =       0x000A,
  713.     GEO_OFFICIALLANGUAGES = 0x000B,
  714. };
  715. //
  716. //  More GEOCLASS defines will be listed here
  717. //
  718. enum SYSGEOCLASS {
  719.     GEOCLASS_NATION  = 16,
  720.     GEOCLASS_REGION  = 14,
  721. };
  722. //
  723. //  Enumeration function constants.
  724. //
  725. #ifdef STRICT
  726. typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
  727. typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
  728. typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
  729. typedef BOOL (CALLBACK* LOCALE_ENUMPROCA)(LPSTR);
  730. typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCA)(LPSTR);
  731. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCA)(LPSTR);
  732. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
  733. typedef BOOL (CALLBACK* TIMEFMT_ENUMPROCA)(LPSTR);
  734. typedef BOOL (CALLBACK* CALINFO_ENUMPROCA)(LPSTR);
  735. typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXA)(LPSTR, CALID);
  736. typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
  737. typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
  738. typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
  739. typedef BOOL (CALLBACK* LOCALE_ENUMPROCW)(LPWSTR);
  740. typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCW)(LPWSTR);
  741. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCW)(LPWSTR);
  742. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
  743. typedef BOOL (CALLBACK* TIMEFMT_ENUMPROCW)(LPWSTR);
  744. typedef BOOL (CALLBACK* CALINFO_ENUMPROCW)(LPWSTR);
  745. typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
  746. typedef BOOL (CALLBACK* GEO_ENUMPROC)(GEOID);
  747. #else // !STRICT
  748. typedef FARPROC LANGUAGEGROUP_ENUMPROCA;
  749. typedef FARPROC LANGGROUPLOCALE_ENUMPROCA;
  750. typedef FARPROC UILANGUAGE_ENUMPROCA;
  751. typedef FARPROC LOCALE_ENUMPROCA;
  752. typedef FARPROC CODEPAGE_ENUMPROCA;
  753. typedef FARPROC DATEFMT_ENUMPROCA;
  754. typedef FARPROC DATEFMT_ENUMPROCEXA;
  755. typedef FARPROC TIMEFMT_ENUMPROCA;
  756. typedef FARPROC CALINFO_ENUMPROCA;
  757. typedef FARPROC CALINFO_ENUMPROCEXA;
  758. typedef FARPROC GEO_ENUMPROC;
  759. typedef FARPROC LANGUAGEGROUP_ENUMPROCW;
  760. typedef FARPROC LANGGROUPLOCALE_ENUMPROCW;
  761. typedef FARPROC UILANGUAGE_ENUMPROCW;
  762. typedef FARPROC LOCALE_ENUMPROCW;
  763. typedef FARPROC CODEPAGE_ENUMPROCW;
  764. typedef FARPROC DATEFMT_ENUMPROCW;
  765. typedef FARPROC DATEFMT_ENUMPROCEXW;
  766. typedef FARPROC TIMEFMT_ENUMPROCW;
  767. typedef FARPROC CALINFO_ENUMPROCW;
  768. typedef FARPROC CALINFO_ENUMPROCEXW;
  769. #endif // !STRICT
  770. #ifdef UNICODE
  771. #define LANGUAGEGROUP_ENUMPROC    LANGUAGEGROUP_ENUMPROCW
  772. #define LANGGROUPLOCALE_ENUMPROC  LANGGROUPLOCALE_ENUMPROCW
  773. #define UILANGUAGE_ENUMPROC       UILANGUAGE_ENUMPROCW
  774. #define LOCALE_ENUMPROC           LOCALE_ENUMPROCW
  775. #define CODEPAGE_ENUMPROC         CODEPAGE_ENUMPROCW
  776. #define DATEFMT_ENUMPROC          DATEFMT_ENUMPROCW
  777. #define DATEFMT_ENUMPROCEX        DATEFMT_ENUMPROCEXW
  778. #define TIMEFMT_ENUMPROC          TIMEFMT_ENUMPROCW
  779. #define CALINFO_ENUMPROC          CALINFO_ENUMPROCW
  780. #define CALINFO_ENUMPROCEX        CALINFO_ENUMPROCEXW
  781. #else
  782. #define LANGUAGEGROUP_ENUMPROC    LANGUAGEGROUP_ENUMPROCA
  783. #define LANGGROUPLOCALE_ENUMPROC  LANGGROUPLOCALE_ENUMPROCA
  784. #define UILANGUAGE_ENUMPROC       UILANGUAGE_ENUMPROCA
  785. #define LOCALE_ENUMPROC           LOCALE_ENUMPROCA
  786. #define CODEPAGE_ENUMPROC         CODEPAGE_ENUMPROCA
  787. #define DATEFMT_ENUMPROC          DATEFMT_ENUMPROCA
  788. #define DATEFMT_ENUMPROCEX        DATEFMT_ENUMPROCEXA
  789. #define TIMEFMT_ENUMPROC          TIMEFMT_ENUMPROCA
  790. #define CALINFO_ENUMPROC          CALINFO_ENUMPROCA
  791. #define CALINFO_ENUMPROCEX        CALINFO_ENUMPROCEXA
  792. #endif // !UNICODE
  793. ////////////////////////////////////////////////////////////////////////////
  794. //
  795. //  Macros
  796. //
  797. //  Define all macros for the NLS component here.
  798. //
  799. ////////////////////////////////////////////////////////////////////////////
  800. ////////////////////////////////////////////////////////////////////////////
  801. //
  802. //  Function Prototypes
  803. //
  804. //  Only prototypes for the NLS APIs should go here.
  805. //
  806. ////////////////////////////////////////////////////////////////////////////
  807. //
  808. //  Code Page Dependent APIs.
  809. //
  810. WINBASEAPI
  811. BOOL
  812. WINAPI
  813. IsValidCodePage(
  814.     IN UINT  CodePage);
  815. WINBASEAPI
  816. UINT
  817. WINAPI
  818. GetACP(void);
  819. WINBASEAPI
  820. UINT
  821. WINAPI
  822. GetOEMCP(void);
  823. WINBASEAPI
  824. BOOL
  825. WINAPI
  826. GetCPInfo(
  827.     IN UINT       CodePage,
  828.     OUT LPCPINFO  lpCPInfo);
  829. WINBASEAPI
  830. BOOL
  831. WINAPI
  832. GetCPInfoExA(
  833.     IN UINT          CodePage,
  834.     IN DWORD         dwFlags,
  835.     OUT LPCPINFOEXA  lpCPInfoEx);
  836. WINBASEAPI
  837. BOOL
  838. WINAPI
  839. GetCPInfoExW(
  840.     IN UINT          CodePage,
  841.     IN DWORD         dwFlags,
  842.     OUT LPCPINFOEXW  lpCPInfoEx);
  843. #ifdef UNICODE
  844. #define GetCPInfoEx  GetCPInfoExW
  845. #else
  846. #define GetCPInfoEx  GetCPInfoExA
  847. #endif // !UNICODE
  848. WINBASEAPI
  849. BOOL
  850. WINAPI
  851. IsDBCSLeadByte(
  852.     IN BYTE  TestChar);
  853. WINBASEAPI
  854. BOOL
  855. WINAPI
  856. IsDBCSLeadByteEx(
  857.     IN UINT  CodePage,
  858.     IN BYTE  TestChar);
  859. WINBASEAPI
  860. int
  861. WINAPI
  862. MultiByteToWideChar(
  863.     IN UINT     CodePage,
  864.     IN DWORD    dwFlags,
  865.     IN LPCSTR   lpMultiByteStr,
  866.     IN int      cbMultiByte,
  867.     OUT LPWSTR  lpWideCharStr,
  868.     IN int      cchWideChar);
  869. WINBASEAPI
  870. int
  871. WINAPI
  872. WideCharToMultiByte(
  873.     IN UINT     CodePage,
  874.     IN DWORD    dwFlags,
  875.     IN LPCWSTR  lpWideCharStr,
  876.     IN int      cchWideChar,
  877.     OUT LPSTR   lpMultiByteStr,
  878.     IN int      cbMultiByte,
  879.     IN LPCSTR   lpDefaultChar,
  880.     OUT LPBOOL  lpUsedDefaultChar);
  881. //
  882. //  Locale Dependent APIs.
  883. //
  884. WINBASEAPI
  885. int
  886. WINAPI
  887. CompareStringA(
  888.     IN LCID     Locale,
  889.     IN DWORD    dwCmpFlags,
  890.     IN LPCSTR  lpString1,
  891.     IN int      cchCount1,
  892.     IN LPCSTR  lpString2,
  893.     IN int      cchCount2);
  894. WINBASEAPI
  895. int
  896. WINAPI
  897. CompareStringW(
  898.     IN LCID     Locale,
  899.     IN DWORD    dwCmpFlags,
  900.     IN LPCWSTR  lpString1,
  901.     IN int      cchCount1,
  902.     IN LPCWSTR  lpString2,
  903.     IN int      cchCount2);
  904. #ifdef UNICODE
  905. #define CompareString  CompareStringW
  906. #else
  907. #define CompareString  CompareStringA
  908. #endif // !UNICODE
  909. WINBASEAPI
  910. int
  911. WINAPI
  912. LCMapStringA(
  913.     IN LCID     Locale,
  914.     IN DWORD    dwMapFlags,
  915.     IN LPCSTR  lpSrcStr,
  916.     IN int      cchSrc,
  917.     OUT LPSTR  lpDestStr,
  918.     IN int      cchDest);
  919. WINBASEAPI
  920. int
  921. WINAPI
  922. LCMapStringW(
  923.     IN LCID     Locale,
  924.     IN DWORD    dwMapFlags,
  925.     IN LPCWSTR  lpSrcStr,
  926.     IN int      cchSrc,
  927.     OUT LPWSTR  lpDestStr,
  928.     IN int      cchDest);
  929. #ifdef UNICODE
  930. #define LCMapString  LCMapStringW
  931. #else
  932. #define LCMapString  LCMapStringA
  933. #endif // !UNICODE
  934. WINBASEAPI
  935. int
  936. WINAPI
  937. GetLocaleInfoA(
  938.     IN LCID     Locale,
  939.     IN LCTYPE   LCType,
  940.     OUT LPSTR  lpLCData,
  941.     IN int      cchData);
  942. WINBASEAPI
  943. int
  944. WINAPI
  945. GetLocaleInfoW(
  946.     IN LCID     Locale,
  947.     IN LCTYPE   LCType,
  948.     OUT LPWSTR  lpLCData,
  949.     IN int      cchData);
  950. #ifdef UNICODE
  951. #define GetLocaleInfo  GetLocaleInfoW
  952. #else
  953. #define GetLocaleInfo  GetLocaleInfoA
  954. #endif // !UNICODE
  955. WINBASEAPI
  956. BOOL
  957. WINAPI
  958. SetLocaleInfoA(
  959.     IN LCID     Locale,
  960.     IN LCTYPE   LCType,
  961.     IN LPCSTR  lpLCData);
  962. WINBASEAPI
  963. BOOL
  964. WINAPI
  965. SetLocaleInfoW(
  966.     IN LCID     Locale,
  967.     IN LCTYPE   LCType,
  968.     IN LPCWSTR  lpLCData);
  969. #ifdef UNICODE
  970. #define SetLocaleInfo  SetLocaleInfoW
  971. #else
  972. #define SetLocaleInfo  SetLocaleInfoA
  973. #endif // !UNICODE
  974. #if (WINVER >= 0x040A)
  975. WINBASEAPI
  976. int
  977. WINAPI
  978. GetCalendarInfoA(
  979.     LCID     Locale,
  980.     CALID    Calendar,
  981.     CALTYPE  CalType,
  982.     LPSTR   lpCalData,
  983.     int      cchData,
  984.     LPDWORD  lpValue);
  985. WINBASEAPI
  986. int
  987. WINAPI
  988. GetCalendarInfoW(
  989.     LCID     Locale,
  990.     CALID    Calendar,
  991.     CALTYPE  CalType,
  992.     LPWSTR   lpCalData,
  993.     int      cchData,
  994.     LPDWORD  lpValue);
  995. #ifdef UNICODE
  996. #define GetCalendarInfo  GetCalendarInfoW
  997. #else
  998. #define GetCalendarInfo  GetCalendarInfoA
  999. #endif // !UNICODE
  1000. WINBASEAPI
  1001. BOOL
  1002. WINAPI
  1003. SetCalendarInfoA(
  1004.     LCID     Locale,
  1005.     CALID    Calendar,
  1006.     CALTYPE  CalType,
  1007.     LPCSTR  lpCalData);
  1008. WINBASEAPI
  1009. BOOL
  1010. WINAPI
  1011. SetCalendarInfoW(
  1012.     LCID     Locale,
  1013.     CALID    Calendar,
  1014.     CALTYPE  CalType,
  1015.     LPCWSTR  lpCalData);
  1016. #ifdef UNICODE
  1017. #define SetCalendarInfo  SetCalendarInfoW
  1018. #else
  1019. #define SetCalendarInfo  SetCalendarInfoA
  1020. #endif // !UNICODE
  1021. #endif
  1022. WINBASEAPI
  1023. int
  1024. WINAPI
  1025. GetTimeFormatA(
  1026.     IN LCID             Locale,
  1027.     IN DWORD            dwFlags,
  1028.     IN CONST SYSTEMTIME *lpTime,
  1029.     IN LPCSTR          lpFormat,
  1030.     OUT LPSTR          lpTimeStr,
  1031.     IN int              cchTime);
  1032. WINBASEAPI
  1033. int
  1034. WINAPI
  1035. GetTimeFormatW(
  1036.     IN LCID             Locale,
  1037.     IN DWORD            dwFlags,
  1038.     IN CONST SYSTEMTIME *lpTime,
  1039.     IN LPCWSTR          lpFormat,
  1040.     OUT LPWSTR          lpTimeStr,
  1041.     IN int              cchTime);
  1042. #ifdef UNICODE
  1043. #define GetTimeFormat  GetTimeFormatW
  1044. #else
  1045. #define GetTimeFormat  GetTimeFormatA
  1046. #endif // !UNICODE
  1047. WINBASEAPI
  1048. int
  1049. WINAPI
  1050. GetDateFormatA(
  1051.     IN LCID             Locale,
  1052.     IN DWORD            dwFlags,
  1053.     IN CONST SYSTEMTIME *lpDate,
  1054.     IN LPCSTR          lpFormat,
  1055.     OUT LPSTR          lpDateStr,
  1056.     IN int              cchDate);
  1057. WINBASEAPI
  1058. int
  1059. WINAPI
  1060. GetDateFormatW(
  1061.     IN LCID             Locale,
  1062.     IN DWORD            dwFlags,
  1063.     IN CONST SYSTEMTIME *lpDate,
  1064.     IN LPCWSTR          lpFormat,
  1065.     OUT LPWSTR          lpDateStr,
  1066.     IN int              cchDate);
  1067. #ifdef UNICODE
  1068. #define GetDateFormat  GetDateFormatW
  1069. #else
  1070. #define GetDateFormat  GetDateFormatA
  1071. #endif // !UNICODE
  1072. WINBASEAPI
  1073. int
  1074. WINAPI
  1075. GetNumberFormatA(
  1076.     IN LCID             Locale,
  1077.     IN DWORD            dwFlags,
  1078.     IN LPCSTR          lpValue,
  1079.     IN CONST NUMBERFMTA *lpFormat,
  1080.     OUT LPSTR          lpNumberStr,
  1081.     IN int              cchNumber);
  1082. WINBASEAPI
  1083. int
  1084. WINAPI
  1085. GetNumberFormatW(
  1086.     IN LCID             Locale,
  1087.     IN DWORD            dwFlags,
  1088.     IN LPCWSTR          lpValue,
  1089.     IN CONST NUMBERFMTW *lpFormat,
  1090.     OUT LPWSTR          lpNumberStr,
  1091.     IN int              cchNumber);
  1092. #ifdef UNICODE
  1093. #define GetNumberFormat  GetNumberFormatW
  1094. #else
  1095. #define GetNumberFormat  GetNumberFormatA
  1096. #endif // !UNICODE
  1097. WINBASEAPI
  1098. int
  1099. WINAPI
  1100. GetCurrencyFormatA(
  1101.     IN LCID               Locale,
  1102.     IN DWORD              dwFlags,
  1103.     IN LPCSTR            lpValue,
  1104.     IN CONST CURRENCYFMTA *lpFormat,
  1105.     OUT LPSTR            lpCurrencyStr,
  1106.     IN int                cchCurrency);
  1107. WINBASEAPI
  1108. int
  1109. WINAPI
  1110. GetCurrencyFormatW(
  1111.     IN LCID               Locale,
  1112.     IN DWORD              dwFlags,
  1113.     IN LPCWSTR            lpValue,
  1114.     IN CONST CURRENCYFMTW *lpFormat,
  1115.     OUT LPWSTR            lpCurrencyStr,
  1116.     IN int                cchCurrency);
  1117. #ifdef UNICODE
  1118. #define GetCurrencyFormat  GetCurrencyFormatW
  1119. #else
  1120. #define GetCurrencyFormat  GetCurrencyFormatA
  1121. #endif // !UNICODE
  1122. WINBASEAPI
  1123. BOOL
  1124. WINAPI
  1125. EnumCalendarInfoA(
  1126.     IN CALINFO_ENUMPROCA lpCalInfoEnumProc,
  1127.     IN LCID              Locale,
  1128.     IN CALID             Calendar,
  1129.     IN CALTYPE           CalType);
  1130. WINBASEAPI
  1131. BOOL
  1132. WINAPI
  1133. EnumCalendarInfoW(
  1134.     IN CALINFO_ENUMPROCW lpCalInfoEnumProc,
  1135.     IN LCID              Locale,
  1136.     IN CALID             Calendar,
  1137.     IN CALTYPE           CalType);
  1138. #ifdef UNICODE
  1139. #define EnumCalendarInfo  EnumCalendarInfoW
  1140. #else
  1141. #define EnumCalendarInfo  EnumCalendarInfoA
  1142. #endif // !UNICODE
  1143. #if(WINVER >= 0x0500)
  1144. WINBASEAPI
  1145. BOOL
  1146. WINAPI
  1147. EnumCalendarInfoExA(
  1148.     IN CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx,
  1149.     IN LCID                Locale,
  1150.     IN CALID               Calendar,
  1151.     IN CALTYPE             CalType);
  1152. WINBASEAPI
  1153. BOOL
  1154. WINAPI
  1155. EnumCalendarInfoExW(
  1156.     IN CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx,
  1157.     IN LCID                Locale,
  1158.     IN CALID               Calendar,
  1159.     IN CALTYPE             CalType);
  1160. #ifdef UNICODE
  1161. #define EnumCalendarInfoEx  EnumCalendarInfoExW
  1162. #else
  1163. #define EnumCalendarInfoEx  EnumCalendarInfoExA
  1164. #endif // !UNICODE
  1165. #endif /* WINVER >= 0x0500 */
  1166. WINBASEAPI
  1167. BOOL
  1168. WINAPI
  1169. EnumTimeFormatsA(
  1170.     IN TIMEFMT_ENUMPROCA lpTimeFmtEnumProc,
  1171.     IN LCID              Locale,
  1172.     IN DWORD             dwFlags);
  1173. WINBASEAPI
  1174. BOOL
  1175. WINAPI
  1176. EnumTimeFormatsW(
  1177.     IN TIMEFMT_ENUMPROCW lpTimeFmtEnumProc,
  1178.     IN LCID              Locale,
  1179.     IN DWORD             dwFlags);
  1180. #ifdef UNICODE
  1181. #define EnumTimeFormats  EnumTimeFormatsW
  1182. #else
  1183. #define EnumTimeFormats  EnumTimeFormatsA
  1184. #endif // !UNICODE
  1185. WINBASEAPI
  1186. BOOL
  1187. WINAPI
  1188. EnumDateFormatsA(
  1189.     IN DATEFMT_ENUMPROCA lpDateFmtEnumProc,
  1190.     IN LCID              Locale,
  1191.     IN DWORD             dwFlags);
  1192. WINBASEAPI
  1193. BOOL
  1194. WINAPI
  1195. EnumDateFormatsW(
  1196.     IN DATEFMT_ENUMPROCW lpDateFmtEnumProc,
  1197.     IN LCID              Locale,
  1198.     IN DWORD             dwFlags);
  1199. #ifdef UNICODE
  1200. #define EnumDateFormats  EnumDateFormatsW
  1201. #else
  1202. #define EnumDateFormats  EnumDateFormatsA
  1203. #endif // !UNICODE
  1204. #if(WINVER >= 0x0500)
  1205. WINBASEAPI
  1206. BOOL
  1207. WINAPI
  1208. EnumDateFormatsExA(
  1209.     IN DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,
  1210.     IN LCID                Locale,
  1211.     IN DWORD               dwFlags);
  1212. WINBASEAPI
  1213. BOOL
  1214. WINAPI
  1215. EnumDateFormatsExW(
  1216.     IN DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,
  1217.     IN LCID                Locale,
  1218.     IN DWORD               dwFlags);
  1219. #ifdef UNICODE
  1220. #define EnumDateFormatsEx  EnumDateFormatsExW
  1221. #else
  1222. #define EnumDateFormatsEx  EnumDateFormatsExA
  1223. #endif // !UNICODE
  1224. #endif /* WINVER >= 0x0500 */
  1225. #if(WINVER >= 0x0500)
  1226. WINBASEAPI
  1227. BOOL
  1228. WINAPI
  1229. IsValidLanguageGroup(
  1230.     IN LGRPID  LanguageGroup,
  1231.     IN DWORD   dwFlags);
  1232. #endif /* WINVER >= 0x0500 */
  1233. WINBASEAPI
  1234. BOOL
  1235. WINAPI
  1236. IsValidLocale(
  1237.     IN LCID   Locale,
  1238.     IN DWORD  dwFlags);
  1239. WINBASEAPI
  1240. int
  1241. WINAPI
  1242. GetGeoInfoA(
  1243.     GEOID       Location,
  1244.     GEOTYPE     GeoType,
  1245.     LPSTR     lpGeoData,
  1246.     int         cchData,
  1247.     LANGID      LangId);
  1248. WINBASEAPI
  1249. int
  1250. WINAPI
  1251. GetGeoInfoW(
  1252.     GEOID       Location,
  1253.     GEOTYPE     GeoType,
  1254.     LPWSTR     lpGeoData,
  1255.     int         cchData,
  1256.     LANGID      LangId);
  1257. #ifdef UNICODE
  1258. #define GetGeoInfo  GetGeoInfoW
  1259. #else
  1260. #define GetGeoInfo  GetGeoInfoA
  1261. #endif // !UNICODE
  1262. WINBASEAPI
  1263. BOOL
  1264. WINAPI
  1265. EnumSystemGeoID(
  1266.     GEOCLASS        GeoClass,
  1267.     GEOID           ParentGeoId,
  1268.     GEO_ENUMPROC    lpGeoEnumProc);
  1269. WINBASEAPI
  1270. GEOID
  1271. WINAPI
  1272. GetUserGeoID(
  1273.     GEOCLASS    GeoClass);
  1274. WINBASEAPI
  1275. BOOL
  1276. WINAPI
  1277. SetUserGeoID(
  1278.     GEOID       GeoId);
  1279. WINBASEAPI
  1280. LCID
  1281. WINAPI
  1282. ConvertDefaultLocale(
  1283.     IN OUT LCID   Locale);
  1284. WINBASEAPI
  1285. LCID
  1286. WINAPI
  1287. GetThreadLocale(void);
  1288. WINBASEAPI
  1289. BOOL
  1290. WINAPI
  1291. SetThreadLocale(
  1292.     IN LCID  Locale
  1293.     );
  1294. #if(WINVER >= 0x0500)
  1295. WINBASEAPI
  1296. LANGID
  1297. WINAPI
  1298. GetSystemDefaultUILanguage(void);
  1299. WINBASEAPI
  1300. LANGID
  1301. WINAPI
  1302. GetUserDefaultUILanguage(void);
  1303. #endif /* WINVER >= 0x0500 */
  1304. WINBASEAPI
  1305. LANGID
  1306. WINAPI
  1307. GetSystemDefaultLangID(void);
  1308. WINBASEAPI
  1309. LANGID
  1310. WINAPI
  1311. GetUserDefaultLangID(void);
  1312. WINBASEAPI
  1313. LCID
  1314. WINAPI
  1315. GetSystemDefaultLCID(void);
  1316. WINBASEAPI
  1317. LCID
  1318. WINAPI
  1319. GetUserDefaultLCID(void);
  1320. //
  1321. //  Locale Independent APIs.
  1322. //
  1323. WINBASEAPI
  1324. BOOL
  1325. WINAPI
  1326. GetStringTypeExA(
  1327.     IN LCID     Locale,
  1328.     IN DWORD    dwInfoType,
  1329.     IN LPCSTR  lpSrcStr,
  1330.     IN int      cchSrc,
  1331.     OUT LPWORD  lpCharType);
  1332. WINBASEAPI
  1333. BOOL
  1334. WINAPI
  1335. GetStringTypeExW(
  1336.     IN LCID     Locale,
  1337.     IN DWORD    dwInfoType,
  1338.     IN LPCWSTR  lpSrcStr,
  1339.     IN int      cchSrc,
  1340.     OUT LPWORD  lpCharType);
  1341. #ifdef UNICODE
  1342. #define GetStringTypeEx  GetStringTypeExW
  1343. #else
  1344. #define GetStringTypeEx  GetStringTypeExA
  1345. #endif // !UNICODE
  1346. //
  1347. //  NOTE: The parameters for GetStringTypeA and GetStringTypeW are
  1348. //        NOT the same.  The W version was shipped in NT 3.1.  The
  1349. //        A version was then shipped in 16-bit OLE with the wrong
  1350. //        parameters (ported from Win95).  To be compatible, we
  1351. //        must break the relationship between the A and W versions
  1352. //        of GetStringType.  There will be NO function call for the
  1353. //        generic GetStringType.
  1354. //
  1355. //        GetStringTypeEx (above) should be used instead.
  1356. //
  1357. WINBASEAPI
  1358. BOOL
  1359. WINAPI
  1360. GetStringTypeA(
  1361.     IN LCID     Locale,
  1362.     IN DWORD    dwInfoType,
  1363.     IN LPCSTR   lpSrcStr,
  1364.     IN int      cchSrc,
  1365.     OUT LPWORD  lpCharType);
  1366. WINBASEAPI
  1367. BOOL
  1368. WINAPI
  1369. GetStringTypeW(
  1370.     IN DWORD    dwInfoType,
  1371.     IN LPCWSTR  lpSrcStr,
  1372.     IN int      cchSrc,
  1373.     OUT LPWORD  lpCharType);
  1374. WINBASEAPI
  1375. int
  1376. WINAPI
  1377. FoldStringA(
  1378.     IN DWORD    dwMapFlags,
  1379.     IN LPCSTR  lpSrcStr,
  1380.     IN int      cchSrc,
  1381.     OUT LPSTR  lpDestStr,
  1382.     IN int      cchDest);
  1383. WINBASEAPI
  1384. int
  1385. WINAPI
  1386. FoldStringW(
  1387.     IN DWORD    dwMapFlags,
  1388.     IN LPCWSTR  lpSrcStr,
  1389.     IN int      cchSrc,
  1390.     OUT LPWSTR  lpDestStr,
  1391.     IN int      cchDest);
  1392. #ifdef UNICODE
  1393. #define FoldString  FoldStringW
  1394. #else
  1395. #define FoldString  FoldStringA
  1396. #endif // !UNICODE
  1397. #if(WINVER >= 0x0500)
  1398. WINBASEAPI
  1399. BOOL
  1400. WINAPI
  1401. EnumSystemLanguageGroupsA(
  1402.     IN LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc,
  1403.     IN DWORD                   dwFlags,
  1404.     IN LONG_PTR                lParam);
  1405. WINBASEAPI
  1406. BOOL
  1407. WINAPI
  1408. EnumSystemLanguageGroupsW(
  1409.     IN LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc,
  1410.     IN DWORD                   dwFlags,
  1411.     IN LONG_PTR                lParam);
  1412. #ifdef UNICODE
  1413. #define EnumSystemLanguageGroups  EnumSystemLanguageGroupsW
  1414. #else
  1415. #define EnumSystemLanguageGroups  EnumSystemLanguageGroupsA
  1416. #endif // !UNICODE
  1417. WINBASEAPI
  1418. BOOL
  1419. WINAPI
  1420. EnumLanguageGroupLocalesA(
  1421.     IN LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc,
  1422.     IN LGRPID                    LanguageGroup,
  1423.     IN DWORD                     dwFlags,
  1424.     IN LONG_PTR                  lParam);
  1425. WINBASEAPI
  1426. BOOL
  1427. WINAPI
  1428. EnumLanguageGroupLocalesW(
  1429.     IN LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc,
  1430.     IN LGRPID                    LanguageGroup,
  1431.     IN DWORD                     dwFlags,
  1432.     IN LONG_PTR                  lParam);
  1433. #ifdef UNICODE
  1434. #define EnumLanguageGroupLocales  EnumLanguageGroupLocalesW
  1435. #else
  1436. #define EnumLanguageGroupLocales  EnumLanguageGroupLocalesA
  1437. #endif // !UNICODE
  1438. WINBASEAPI
  1439. BOOL
  1440. WINAPI
  1441. EnumUILanguagesA(
  1442.     IN UILANGUAGE_ENUMPROCA lpUILanguageEnumProc,
  1443.     IN DWORD                dwFlags,
  1444.     IN LONG_PTR             lParam);
  1445. WINBASEAPI
  1446. BOOL
  1447. WINAPI
  1448. EnumUILanguagesW(
  1449.     IN UILANGUAGE_ENUMPROCW lpUILanguageEnumProc,
  1450.     IN DWORD                dwFlags,
  1451.     IN LONG_PTR             lParam);
  1452. #ifdef UNICODE
  1453. #define EnumUILanguages  EnumUILanguagesW
  1454. #else
  1455. #define EnumUILanguages  EnumUILanguagesA
  1456. #endif // !UNICODE
  1457. #endif /* WINVER >= 0x0500 */
  1458. WINBASEAPI
  1459. BOOL
  1460. WINAPI
  1461. EnumSystemLocalesA(
  1462.     IN LOCALE_ENUMPROCA lpLocaleEnumProc,
  1463.     IN DWORD            dwFlags);
  1464. WINBASEAPI
  1465. BOOL
  1466. WINAPI
  1467. EnumSystemLocalesW(
  1468.     IN LOCALE_ENUMPROCW lpLocaleEnumProc,
  1469.     IN DWORD            dwFlags);
  1470. #ifdef UNICODE
  1471. #define EnumSystemLocales  EnumSystemLocalesW
  1472. #else
  1473. #define EnumSystemLocales  EnumSystemLocalesA
  1474. #endif // !UNICODE
  1475. WINBASEAPI
  1476. BOOL
  1477. WINAPI
  1478. EnumSystemCodePagesA(
  1479.     IN CODEPAGE_ENUMPROCA lpCodePageEnumProc,
  1480.     IN DWORD              dwFlags);
  1481. WINBASEAPI
  1482. BOOL
  1483. WINAPI
  1484. EnumSystemCodePagesW(
  1485.     IN CODEPAGE_ENUMPROCW lpCodePageEnumProc,
  1486.     IN DWORD              dwFlags);
  1487. #ifdef UNICODE
  1488. #define EnumSystemCodePages  EnumSystemCodePagesW
  1489. #else
  1490. #define EnumSystemCodePages  EnumSystemCodePagesA
  1491. #endif // !UNICODE
  1492. #endif // NONLS
  1493. #ifdef __cplusplus
  1494. }
  1495. #endif
  1496. #endif // _WINNLS_