Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1733 lines
57 KiB

  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. // NLS function capabilities
  694. //
  695. enum SYSNLS_FUNCTION{
  696. COMPARE_STRING = 0x0001,
  697. };
  698. typedef DWORD NLS_FUNCTION;
  699. //
  700. // NLS version structure.
  701. //
  702. typedef struct _nlsversioninfo{
  703. DWORD dwNLSVersionInfoSize;
  704. DWORD dwNLSVersion;
  705. DWORD dwDefinedVersion;
  706. } NLSVERSIONINFO, *LPNLSVERSIONINFO;
  707. //
  708. // GEO defines
  709. //
  710. typedef LONG GEOID;
  711. typedef DWORD GEOTYPE;
  712. typedef DWORD GEOCLASS;
  713. #define GEOID_NOT_AVAILABLE -1
  714. //
  715. // GEO information types for clients to query
  716. //
  717. enum SYSGEOTYPE {
  718. GEO_NATION = 0x0001,
  719. GEO_LATITUDE = 0x0002,
  720. GEO_LONGITUDE = 0x0003,
  721. GEO_ISO2 = 0x0004,
  722. GEO_ISO3 = 0x0005,
  723. GEO_RFC1766 = 0x0006,
  724. GEO_LCID = 0x0007,
  725. GEO_FRIENDLYNAME= 0x0008,
  726. GEO_OFFICIALNAME= 0x0009,
  727. GEO_TIMEZONES = 0x000A,
  728. GEO_OFFICIALLANGUAGES = 0x000B,
  729. };
  730. //
  731. // More GEOCLASS defines will be listed here
  732. //
  733. enum SYSGEOCLASS {
  734. GEOCLASS_NATION = 16,
  735. GEOCLASS_REGION = 14,
  736. };
  737. //
  738. // Enumeration function constants.
  739. //
  740. #ifdef STRICT
  741. typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
  742. typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
  743. typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
  744. typedef BOOL (CALLBACK* LOCALE_ENUMPROCA)(LPSTR);
  745. typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCA)(LPSTR);
  746. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCA)(LPSTR);
  747. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
  748. typedef BOOL (CALLBACK* TIMEFMT_ENUMPROCA)(LPSTR);
  749. typedef BOOL (CALLBACK* CALINFO_ENUMPROCA)(LPSTR);
  750. typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXA)(LPSTR, CALID);
  751. typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
  752. typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
  753. typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
  754. typedef BOOL (CALLBACK* LOCALE_ENUMPROCW)(LPWSTR);
  755. typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCW)(LPWSTR);
  756. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCW)(LPWSTR);
  757. typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
  758. typedef BOOL (CALLBACK* TIMEFMT_ENUMPROCW)(LPWSTR);
  759. typedef BOOL (CALLBACK* CALINFO_ENUMPROCW)(LPWSTR);
  760. typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
  761. typedef BOOL (CALLBACK* GEO_ENUMPROC)(GEOID);
  762. #else // !STRICT
  763. typedef FARPROC LANGUAGEGROUP_ENUMPROCA;
  764. typedef FARPROC LANGGROUPLOCALE_ENUMPROCA;
  765. typedef FARPROC UILANGUAGE_ENUMPROCA;
  766. typedef FARPROC LOCALE_ENUMPROCA;
  767. typedef FARPROC CODEPAGE_ENUMPROCA;
  768. typedef FARPROC DATEFMT_ENUMPROCA;
  769. typedef FARPROC DATEFMT_ENUMPROCEXA;
  770. typedef FARPROC TIMEFMT_ENUMPROCA;
  771. typedef FARPROC CALINFO_ENUMPROCA;
  772. typedef FARPROC CALINFO_ENUMPROCEXA;
  773. typedef FARPROC GEO_ENUMPROC;
  774. typedef FARPROC LANGUAGEGROUP_ENUMPROCW;
  775. typedef FARPROC LANGGROUPLOCALE_ENUMPROCW;
  776. typedef FARPROC UILANGUAGE_ENUMPROCW;
  777. typedef FARPROC LOCALE_ENUMPROCW;
  778. typedef FARPROC CODEPAGE_ENUMPROCW;
  779. typedef FARPROC DATEFMT_ENUMPROCW;
  780. typedef FARPROC DATEFMT_ENUMPROCEXW;
  781. typedef FARPROC TIMEFMT_ENUMPROCW;
  782. typedef FARPROC CALINFO_ENUMPROCW;
  783. typedef FARPROC CALINFO_ENUMPROCEXW;
  784. #endif // !STRICT
  785. #ifdef UNICODE
  786. #define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
  787. #define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
  788. #define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
  789. #define LOCALE_ENUMPROC LOCALE_ENUMPROCW
  790. #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
  791. #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
  792. #define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
  793. #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
  794. #define CALINFO_ENUMPROC CALINFO_ENUMPROCW
  795. #define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
  796. #else
  797. #define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
  798. #define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
  799. #define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
  800. #define LOCALE_ENUMPROC LOCALE_ENUMPROCA
  801. #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
  802. #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
  803. #define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
  804. #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
  805. #define CALINFO_ENUMPROC CALINFO_ENUMPROCA
  806. #define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
  807. #endif // !UNICODE
  808. ////////////////////////////////////////////////////////////////////////////
  809. //
  810. // Macros
  811. //
  812. // Define all macros for the NLS component here.
  813. //
  814. ////////////////////////////////////////////////////////////////////////////
  815. ////////////////////////////////////////////////////////////////////////////
  816. //
  817. // Function Prototypes
  818. //
  819. // Only prototypes for the NLS APIs should go here.
  820. //
  821. ////////////////////////////////////////////////////////////////////////////
  822. //
  823. // Code Page Dependent APIs.
  824. //
  825. WINBASEAPI
  826. BOOL
  827. WINAPI
  828. IsValidCodePage(
  829. IN UINT CodePage);
  830. WINBASEAPI
  831. UINT
  832. WINAPI
  833. GetACP(void);
  834. WINBASEAPI
  835. UINT
  836. WINAPI
  837. GetOEMCP(void);
  838. WINBASEAPI
  839. BOOL
  840. WINAPI
  841. GetCPInfo(
  842. IN UINT CodePage,
  843. OUT LPCPINFO lpCPInfo);
  844. WINBASEAPI
  845. BOOL
  846. WINAPI
  847. GetCPInfoExA(
  848. IN UINT CodePage,
  849. IN DWORD dwFlags,
  850. OUT LPCPINFOEXA lpCPInfoEx);
  851. WINBASEAPI
  852. BOOL
  853. WINAPI
  854. GetCPInfoExW(
  855. IN UINT CodePage,
  856. IN DWORD dwFlags,
  857. OUT LPCPINFOEXW lpCPInfoEx);
  858. #ifdef UNICODE
  859. #define GetCPInfoEx GetCPInfoExW
  860. #else
  861. #define GetCPInfoEx GetCPInfoExA
  862. #endif // !UNICODE
  863. WINBASEAPI
  864. BOOL
  865. WINAPI
  866. IsDBCSLeadByte(
  867. IN BYTE TestChar);
  868. WINBASEAPI
  869. BOOL
  870. WINAPI
  871. IsDBCSLeadByteEx(
  872. IN UINT CodePage,
  873. IN BYTE TestChar);
  874. WINBASEAPI
  875. int
  876. WINAPI
  877. MultiByteToWideChar(
  878. IN UINT CodePage,
  879. IN DWORD dwFlags,
  880. IN LPCSTR lpMultiByteStr,
  881. IN int cbMultiByte,
  882. OUT LPWSTR lpWideCharStr,
  883. IN int cchWideChar);
  884. WINBASEAPI
  885. int
  886. WINAPI
  887. WideCharToMultiByte(
  888. IN UINT CodePage,
  889. IN DWORD dwFlags,
  890. IN LPCWSTR lpWideCharStr,
  891. IN int cchWideChar,
  892. OUT LPSTR lpMultiByteStr,
  893. IN int cbMultiByte,
  894. IN LPCSTR lpDefaultChar,
  895. OUT LPBOOL lpUsedDefaultChar);
  896. //
  897. // Locale Dependent APIs.
  898. //
  899. WINBASEAPI
  900. int
  901. WINAPI
  902. CompareStringA(
  903. IN LCID Locale,
  904. IN DWORD dwCmpFlags,
  905. IN LPCSTR lpString1,
  906. IN int cchCount1,
  907. IN LPCSTR lpString2,
  908. IN int cchCount2);
  909. WINBASEAPI
  910. int
  911. WINAPI
  912. CompareStringW(
  913. IN LCID Locale,
  914. IN DWORD dwCmpFlags,
  915. IN LPCWSTR lpString1,
  916. IN int cchCount1,
  917. IN LPCWSTR lpString2,
  918. IN int cchCount2);
  919. #ifdef UNICODE
  920. #define CompareString CompareStringW
  921. #else
  922. #define CompareString CompareStringA
  923. #endif // !UNICODE
  924. WINBASEAPI
  925. int
  926. WINAPI
  927. LCMapStringA(
  928. IN LCID Locale,
  929. IN DWORD dwMapFlags,
  930. IN LPCSTR lpSrcStr,
  931. IN int cchSrc,
  932. OUT LPSTR lpDestStr,
  933. IN int cchDest);
  934. WINBASEAPI
  935. int
  936. WINAPI
  937. LCMapStringW(
  938. IN LCID Locale,
  939. IN DWORD dwMapFlags,
  940. IN LPCWSTR lpSrcStr,
  941. IN int cchSrc,
  942. OUT LPWSTR lpDestStr,
  943. IN int cchDest);
  944. #ifdef UNICODE
  945. #define LCMapString LCMapStringW
  946. #else
  947. #define LCMapString LCMapStringA
  948. #endif // !UNICODE
  949. WINBASEAPI
  950. int
  951. WINAPI
  952. GetLocaleInfoA(
  953. IN LCID Locale,
  954. IN LCTYPE LCType,
  955. OUT LPSTR lpLCData,
  956. IN int cchData);
  957. WINBASEAPI
  958. int
  959. WINAPI
  960. GetLocaleInfoW(
  961. IN LCID Locale,
  962. IN LCTYPE LCType,
  963. OUT LPWSTR lpLCData,
  964. IN int cchData);
  965. #ifdef UNICODE
  966. #define GetLocaleInfo GetLocaleInfoW
  967. #else
  968. #define GetLocaleInfo GetLocaleInfoA
  969. #endif // !UNICODE
  970. WINBASEAPI
  971. BOOL
  972. WINAPI
  973. SetLocaleInfoA(
  974. IN LCID Locale,
  975. IN LCTYPE LCType,
  976. IN LPCSTR lpLCData);
  977. WINBASEAPI
  978. BOOL
  979. WINAPI
  980. SetLocaleInfoW(
  981. IN LCID Locale,
  982. IN LCTYPE LCType,
  983. IN LPCWSTR lpLCData);
  984. #ifdef UNICODE
  985. #define SetLocaleInfo SetLocaleInfoW
  986. #else
  987. #define SetLocaleInfo SetLocaleInfoA
  988. #endif // !UNICODE
  989. #if (WINVER >= 0x040A)
  990. WINBASEAPI
  991. int
  992. WINAPI
  993. GetCalendarInfoA(
  994. LCID Locale,
  995. CALID Calendar,
  996. CALTYPE CalType,
  997. LPSTR lpCalData,
  998. int cchData,
  999. LPDWORD lpValue);
  1000. WINBASEAPI
  1001. int
  1002. WINAPI
  1003. GetCalendarInfoW(
  1004. LCID Locale,
  1005. CALID Calendar,
  1006. CALTYPE CalType,
  1007. LPWSTR lpCalData,
  1008. int cchData,
  1009. LPDWORD lpValue);
  1010. #ifdef UNICODE
  1011. #define GetCalendarInfo GetCalendarInfoW
  1012. #else
  1013. #define GetCalendarInfo GetCalendarInfoA
  1014. #endif // !UNICODE
  1015. WINBASEAPI
  1016. BOOL
  1017. WINAPI
  1018. SetCalendarInfoA(
  1019. LCID Locale,
  1020. CALID Calendar,
  1021. CALTYPE CalType,
  1022. LPCSTR lpCalData);
  1023. WINBASEAPI
  1024. BOOL
  1025. WINAPI
  1026. SetCalendarInfoW(
  1027. LCID Locale,
  1028. CALID Calendar,
  1029. CALTYPE CalType,
  1030. LPCWSTR lpCalData);
  1031. #ifdef UNICODE
  1032. #define SetCalendarInfo SetCalendarInfoW
  1033. #else
  1034. #define SetCalendarInfo SetCalendarInfoA
  1035. #endif // !UNICODE
  1036. #endif
  1037. WINBASEAPI
  1038. int
  1039. WINAPI
  1040. GetTimeFormatA(
  1041. IN LCID Locale,
  1042. IN DWORD dwFlags,
  1043. IN CONST SYSTEMTIME *lpTime,
  1044. IN LPCSTR lpFormat,
  1045. OUT LPSTR lpTimeStr,
  1046. IN int cchTime);
  1047. WINBASEAPI
  1048. int
  1049. WINAPI
  1050. GetTimeFormatW(
  1051. IN LCID Locale,
  1052. IN DWORD dwFlags,
  1053. IN CONST SYSTEMTIME *lpTime,
  1054. IN LPCWSTR lpFormat,
  1055. OUT LPWSTR lpTimeStr,
  1056. IN int cchTime);
  1057. #ifdef UNICODE
  1058. #define GetTimeFormat GetTimeFormatW
  1059. #else
  1060. #define GetTimeFormat GetTimeFormatA
  1061. #endif // !UNICODE
  1062. WINBASEAPI
  1063. int
  1064. WINAPI
  1065. GetDateFormatA(
  1066. IN LCID Locale,
  1067. IN DWORD dwFlags,
  1068. IN CONST SYSTEMTIME *lpDate,
  1069. IN LPCSTR lpFormat,
  1070. OUT LPSTR lpDateStr,
  1071. IN int cchDate);
  1072. WINBASEAPI
  1073. int
  1074. WINAPI
  1075. GetDateFormatW(
  1076. IN LCID Locale,
  1077. IN DWORD dwFlags,
  1078. IN CONST SYSTEMTIME *lpDate,
  1079. IN LPCWSTR lpFormat,
  1080. OUT LPWSTR lpDateStr,
  1081. IN int cchDate);
  1082. #ifdef UNICODE
  1083. #define GetDateFormat GetDateFormatW
  1084. #else
  1085. #define GetDateFormat GetDateFormatA
  1086. #endif // !UNICODE
  1087. WINBASEAPI
  1088. int
  1089. WINAPI
  1090. GetNumberFormatA(
  1091. IN LCID Locale,
  1092. IN DWORD dwFlags,
  1093. IN LPCSTR lpValue,
  1094. IN CONST NUMBERFMTA *lpFormat,
  1095. OUT LPSTR lpNumberStr,
  1096. IN int cchNumber);
  1097. WINBASEAPI
  1098. int
  1099. WINAPI
  1100. GetNumberFormatW(
  1101. IN LCID Locale,
  1102. IN DWORD dwFlags,
  1103. IN LPCWSTR lpValue,
  1104. IN CONST NUMBERFMTW *lpFormat,
  1105. OUT LPWSTR lpNumberStr,
  1106. IN int cchNumber);
  1107. #ifdef UNICODE
  1108. #define GetNumberFormat GetNumberFormatW
  1109. #else
  1110. #define GetNumberFormat GetNumberFormatA
  1111. #endif // !UNICODE
  1112. WINBASEAPI
  1113. int
  1114. WINAPI
  1115. GetCurrencyFormatA(
  1116. IN LCID Locale,
  1117. IN DWORD dwFlags,
  1118. IN LPCSTR lpValue,
  1119. IN CONST CURRENCYFMTA *lpFormat,
  1120. OUT LPSTR lpCurrencyStr,
  1121. IN int cchCurrency);
  1122. WINBASEAPI
  1123. int
  1124. WINAPI
  1125. GetCurrencyFormatW(
  1126. IN LCID Locale,
  1127. IN DWORD dwFlags,
  1128. IN LPCWSTR lpValue,
  1129. IN CONST CURRENCYFMTW *lpFormat,
  1130. OUT LPWSTR lpCurrencyStr,
  1131. IN int cchCurrency);
  1132. #ifdef UNICODE
  1133. #define GetCurrencyFormat GetCurrencyFormatW
  1134. #else
  1135. #define GetCurrencyFormat GetCurrencyFormatA
  1136. #endif // !UNICODE
  1137. WINBASEAPI
  1138. BOOL
  1139. WINAPI
  1140. EnumCalendarInfoA(
  1141. IN CALINFO_ENUMPROCA lpCalInfoEnumProc,
  1142. IN LCID Locale,
  1143. IN CALID Calendar,
  1144. IN CALTYPE CalType);
  1145. WINBASEAPI
  1146. BOOL
  1147. WINAPI
  1148. EnumCalendarInfoW(
  1149. IN CALINFO_ENUMPROCW lpCalInfoEnumProc,
  1150. IN LCID Locale,
  1151. IN CALID Calendar,
  1152. IN CALTYPE CalType);
  1153. #ifdef UNICODE
  1154. #define EnumCalendarInfo EnumCalendarInfoW
  1155. #else
  1156. #define EnumCalendarInfo EnumCalendarInfoA
  1157. #endif // !UNICODE
  1158. #if(WINVER >= 0x0500)
  1159. WINBASEAPI
  1160. BOOL
  1161. WINAPI
  1162. EnumCalendarInfoExA(
  1163. IN CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx,
  1164. IN LCID Locale,
  1165. IN CALID Calendar,
  1166. IN CALTYPE CalType);
  1167. WINBASEAPI
  1168. BOOL
  1169. WINAPI
  1170. EnumCalendarInfoExW(
  1171. IN CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx,
  1172. IN LCID Locale,
  1173. IN CALID Calendar,
  1174. IN CALTYPE CalType);
  1175. #ifdef UNICODE
  1176. #define EnumCalendarInfoEx EnumCalendarInfoExW
  1177. #else
  1178. #define EnumCalendarInfoEx EnumCalendarInfoExA
  1179. #endif // !UNICODE
  1180. #endif /* WINVER >= 0x0500 */
  1181. WINBASEAPI
  1182. BOOL
  1183. WINAPI
  1184. EnumTimeFormatsA(
  1185. IN TIMEFMT_ENUMPROCA lpTimeFmtEnumProc,
  1186. IN LCID Locale,
  1187. IN DWORD dwFlags);
  1188. WINBASEAPI
  1189. BOOL
  1190. WINAPI
  1191. EnumTimeFormatsW(
  1192. IN TIMEFMT_ENUMPROCW lpTimeFmtEnumProc,
  1193. IN LCID Locale,
  1194. IN DWORD dwFlags);
  1195. #ifdef UNICODE
  1196. #define EnumTimeFormats EnumTimeFormatsW
  1197. #else
  1198. #define EnumTimeFormats EnumTimeFormatsA
  1199. #endif // !UNICODE
  1200. WINBASEAPI
  1201. BOOL
  1202. WINAPI
  1203. EnumDateFormatsA(
  1204. IN DATEFMT_ENUMPROCA lpDateFmtEnumProc,
  1205. IN LCID Locale,
  1206. IN DWORD dwFlags);
  1207. WINBASEAPI
  1208. BOOL
  1209. WINAPI
  1210. EnumDateFormatsW(
  1211. IN DATEFMT_ENUMPROCW lpDateFmtEnumProc,
  1212. IN LCID Locale,
  1213. IN DWORD dwFlags);
  1214. #ifdef UNICODE
  1215. #define EnumDateFormats EnumDateFormatsW
  1216. #else
  1217. #define EnumDateFormats EnumDateFormatsA
  1218. #endif // !UNICODE
  1219. #if(WINVER >= 0x0500)
  1220. WINBASEAPI
  1221. BOOL
  1222. WINAPI
  1223. EnumDateFormatsExA(
  1224. IN DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,
  1225. IN LCID Locale,
  1226. IN DWORD dwFlags);
  1227. WINBASEAPI
  1228. BOOL
  1229. WINAPI
  1230. EnumDateFormatsExW(
  1231. IN DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,
  1232. IN LCID Locale,
  1233. IN DWORD dwFlags);
  1234. #ifdef UNICODE
  1235. #define EnumDateFormatsEx EnumDateFormatsExW
  1236. #else
  1237. #define EnumDateFormatsEx EnumDateFormatsExA
  1238. #endif // !UNICODE
  1239. #endif /* WINVER >= 0x0500 */
  1240. #if(WINVER >= 0x0500)
  1241. WINBASEAPI
  1242. BOOL
  1243. WINAPI
  1244. IsValidLanguageGroup(
  1245. IN LGRPID LanguageGroup,
  1246. IN DWORD dwFlags);
  1247. #endif /* WINVER >= 0x0500 */
  1248. WINBASEAPI
  1249. BOOL
  1250. WINAPI
  1251. GetNLSVersion(
  1252. IN NLS_FUNCTION Function,
  1253. IN LCID Locale,
  1254. OUT LPNLSVERSIONINFO lpVersionInformation);
  1255. WINBASEAPI
  1256. BOOL
  1257. WINAPI
  1258. IsNLSDefinedString(
  1259. IN NLS_FUNCTION Function,
  1260. IN DWORD dwFlags,
  1261. IN LPNLSVERSIONINFO lpVersionInformation,
  1262. IN LPCWSTR lpString,
  1263. IN INT cchStr);
  1264. WINBASEAPI
  1265. BOOL
  1266. WINAPI
  1267. IsValidLocale(
  1268. IN LCID Locale,
  1269. IN DWORD dwFlags);
  1270. WINBASEAPI
  1271. int
  1272. WINAPI
  1273. GetGeoInfoA(
  1274. GEOID Location,
  1275. GEOTYPE GeoType,
  1276. LPSTR lpGeoData,
  1277. int cchData,
  1278. LANGID LangId);
  1279. WINBASEAPI
  1280. int
  1281. WINAPI
  1282. GetGeoInfoW(
  1283. GEOID Location,
  1284. GEOTYPE GeoType,
  1285. LPWSTR lpGeoData,
  1286. int cchData,
  1287. LANGID LangId);
  1288. #ifdef UNICODE
  1289. #define GetGeoInfo GetGeoInfoW
  1290. #else
  1291. #define GetGeoInfo GetGeoInfoA
  1292. #endif // !UNICODE
  1293. WINBASEAPI
  1294. BOOL
  1295. WINAPI
  1296. EnumSystemGeoID(
  1297. GEOCLASS GeoClass,
  1298. GEOID ParentGeoId,
  1299. GEO_ENUMPROC lpGeoEnumProc);
  1300. WINBASEAPI
  1301. GEOID
  1302. WINAPI
  1303. GetUserGeoID(
  1304. GEOCLASS GeoClass);
  1305. WINBASEAPI
  1306. BOOL
  1307. WINAPI
  1308. SetUserGeoID(
  1309. GEOID GeoId);
  1310. WINBASEAPI
  1311. LCID
  1312. WINAPI
  1313. ConvertDefaultLocale(
  1314. IN OUT LCID Locale);
  1315. WINBASEAPI
  1316. LCID
  1317. WINAPI
  1318. GetThreadLocale(void);
  1319. WINBASEAPI
  1320. BOOL
  1321. WINAPI
  1322. SetThreadLocale(
  1323. IN LCID Locale
  1324. );
  1325. #if(WINVER >= 0x0500)
  1326. WINBASEAPI
  1327. LANGID
  1328. WINAPI
  1329. GetSystemDefaultUILanguage(void);
  1330. WINBASEAPI
  1331. LANGID
  1332. WINAPI
  1333. GetUserDefaultUILanguage(void);
  1334. #endif /* WINVER >= 0x0500 */
  1335. WINBASEAPI
  1336. LANGID
  1337. WINAPI
  1338. GetSystemDefaultLangID(void);
  1339. WINBASEAPI
  1340. LANGID
  1341. WINAPI
  1342. GetUserDefaultLangID(void);
  1343. WINBASEAPI
  1344. LCID
  1345. WINAPI
  1346. GetSystemDefaultLCID(void);
  1347. WINBASEAPI
  1348. LCID
  1349. WINAPI
  1350. GetUserDefaultLCID(void);
  1351. //
  1352. // Locale Independent APIs.
  1353. //
  1354. WINBASEAPI
  1355. BOOL
  1356. WINAPI
  1357. GetStringTypeExA(
  1358. IN LCID Locale,
  1359. IN DWORD dwInfoType,
  1360. IN LPCSTR lpSrcStr,
  1361. IN int cchSrc,
  1362. OUT LPWORD lpCharType);
  1363. WINBASEAPI
  1364. BOOL
  1365. WINAPI
  1366. GetStringTypeExW(
  1367. IN LCID Locale,
  1368. IN DWORD dwInfoType,
  1369. IN LPCWSTR lpSrcStr,
  1370. IN int cchSrc,
  1371. OUT LPWORD lpCharType);
  1372. #ifdef UNICODE
  1373. #define GetStringTypeEx GetStringTypeExW
  1374. #else
  1375. #define GetStringTypeEx GetStringTypeExA
  1376. #endif // !UNICODE
  1377. //
  1378. // NOTE: The parameters for GetStringTypeA and GetStringTypeW are
  1379. // NOT the same. The W version was shipped in NT 3.1. The
  1380. // A version was then shipped in 16-bit OLE with the wrong
  1381. // parameters (ported from Win95). To be compatible, we
  1382. // must break the relationship between the A and W versions
  1383. // of GetStringType. There will be NO function call for the
  1384. // generic GetStringType.
  1385. //
  1386. // GetStringTypeEx (above) should be used instead.
  1387. //
  1388. WINBASEAPI
  1389. BOOL
  1390. WINAPI
  1391. GetStringTypeA(
  1392. IN LCID Locale,
  1393. IN DWORD dwInfoType,
  1394. IN LPCSTR lpSrcStr,
  1395. IN int cchSrc,
  1396. OUT LPWORD lpCharType);
  1397. WINBASEAPI
  1398. BOOL
  1399. WINAPI
  1400. GetStringTypeW(
  1401. IN DWORD dwInfoType,
  1402. IN LPCWSTR lpSrcStr,
  1403. IN int cchSrc,
  1404. OUT LPWORD lpCharType);
  1405. WINBASEAPI
  1406. int
  1407. WINAPI
  1408. FoldStringA(
  1409. IN DWORD dwMapFlags,
  1410. IN LPCSTR lpSrcStr,
  1411. IN int cchSrc,
  1412. OUT LPSTR lpDestStr,
  1413. IN int cchDest);
  1414. WINBASEAPI
  1415. int
  1416. WINAPI
  1417. FoldStringW(
  1418. IN DWORD dwMapFlags,
  1419. IN LPCWSTR lpSrcStr,
  1420. IN int cchSrc,
  1421. OUT LPWSTR lpDestStr,
  1422. IN int cchDest);
  1423. #ifdef UNICODE
  1424. #define FoldString FoldStringW
  1425. #else
  1426. #define FoldString FoldStringA
  1427. #endif // !UNICODE
  1428. #if(WINVER >= 0x0500)
  1429. WINBASEAPI
  1430. BOOL
  1431. WINAPI
  1432. EnumSystemLanguageGroupsA(
  1433. IN LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc,
  1434. IN DWORD dwFlags,
  1435. IN LONG_PTR lParam);
  1436. WINBASEAPI
  1437. BOOL
  1438. WINAPI
  1439. EnumSystemLanguageGroupsW(
  1440. IN LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc,
  1441. IN DWORD dwFlags,
  1442. IN LONG_PTR lParam);
  1443. #ifdef UNICODE
  1444. #define EnumSystemLanguageGroups EnumSystemLanguageGroupsW
  1445. #else
  1446. #define EnumSystemLanguageGroups EnumSystemLanguageGroupsA
  1447. #endif // !UNICODE
  1448. WINBASEAPI
  1449. BOOL
  1450. WINAPI
  1451. EnumLanguageGroupLocalesA(
  1452. IN LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc,
  1453. IN LGRPID LanguageGroup,
  1454. IN DWORD dwFlags,
  1455. IN LONG_PTR lParam);
  1456. WINBASEAPI
  1457. BOOL
  1458. WINAPI
  1459. EnumLanguageGroupLocalesW(
  1460. IN LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc,
  1461. IN LGRPID LanguageGroup,
  1462. IN DWORD dwFlags,
  1463. IN LONG_PTR lParam);
  1464. #ifdef UNICODE
  1465. #define EnumLanguageGroupLocales EnumLanguageGroupLocalesW
  1466. #else
  1467. #define EnumLanguageGroupLocales EnumLanguageGroupLocalesA
  1468. #endif // !UNICODE
  1469. WINBASEAPI
  1470. BOOL
  1471. WINAPI
  1472. EnumUILanguagesA(
  1473. IN UILANGUAGE_ENUMPROCA lpUILanguageEnumProc,
  1474. IN DWORD dwFlags,
  1475. IN LONG_PTR lParam);
  1476. WINBASEAPI
  1477. BOOL
  1478. WINAPI
  1479. EnumUILanguagesW(
  1480. IN UILANGUAGE_ENUMPROCW lpUILanguageEnumProc,
  1481. IN DWORD dwFlags,
  1482. IN LONG_PTR lParam);
  1483. #ifdef UNICODE
  1484. #define EnumUILanguages EnumUILanguagesW
  1485. #else
  1486. #define EnumUILanguages EnumUILanguagesA
  1487. #endif // !UNICODE
  1488. #endif /* WINVER >= 0x0500 */
  1489. WINBASEAPI
  1490. BOOL
  1491. WINAPI
  1492. EnumSystemLocalesA(
  1493. IN LOCALE_ENUMPROCA lpLocaleEnumProc,
  1494. IN DWORD dwFlags);
  1495. WINBASEAPI
  1496. BOOL
  1497. WINAPI
  1498. EnumSystemLocalesW(
  1499. IN LOCALE_ENUMPROCW lpLocaleEnumProc,
  1500. IN DWORD dwFlags);
  1501. #ifdef UNICODE
  1502. #define EnumSystemLocales EnumSystemLocalesW
  1503. #else
  1504. #define EnumSystemLocales EnumSystemLocalesA
  1505. #endif // !UNICODE
  1506. WINBASEAPI
  1507. BOOL
  1508. WINAPI
  1509. EnumSystemCodePagesA(
  1510. IN CODEPAGE_ENUMPROCA lpCodePageEnumProc,
  1511. IN DWORD dwFlags);
  1512. WINBASEAPI
  1513. BOOL
  1514. WINAPI
  1515. EnumSystemCodePagesW(
  1516. IN CODEPAGE_ENUMPROCW lpCodePageEnumProc,
  1517. IN DWORD dwFlags);
  1518. #ifdef UNICODE
  1519. #define EnumSystemCodePages EnumSystemCodePagesW
  1520. #else
  1521. #define EnumSystemCodePages EnumSystemCodePagesA
  1522. #endif // !UNICODE
  1523. #endif // NONLS
  1524. #ifdef __cplusplus
  1525. }
  1526. #endif
  1527. #endif // _WINNLS_