home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / winnls.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  56KB  |  1,608 lines

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