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.

489 lines
21 KiB

  1. /***
  2. *olenls.h - National language support functions.
  3. *
  4. * Copyright (C) 1992-1993, Microsoft Corporation. All Rights Reserved.
  5. *
  6. *Purpose:
  7. * This describes the NLSAPI functions for Win16. This is a subset
  8. * of Win32 NLSAPI, and is a non-Unicode version.
  9. *
  10. *Implementation Notes:
  11. * This files is largely ported from the Win32 header winnls.h.
  12. *
  13. *****************************************************************************/
  14. #ifndef _OLENLS_
  15. #define _OLENLS_
  16. #ifndef NONLS
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. #ifndef EXTERN_C
  21. # ifdef __cplusplus
  22. # define EXTERN_C extern "C"
  23. # else
  24. # define EXTERN_C extern
  25. # endif
  26. #endif
  27. #ifdef _MAC
  28. # ifndef FAR
  29. # define FAR
  30. # endif
  31. # ifdef _MSC_VER
  32. # define NLSAPI_(TYPE) EXTERN_C TYPE __pascal
  33. # else
  34. # define NLSAPI_(TYPE) EXTERN_C pascal TYPE
  35. # endif
  36. #else
  37. # define NLSAPI_(TYPE) EXTERN_C TYPE WINAPI
  38. #endif
  39. /***************************************************************************\
  40. * Constants
  41. *
  42. * Define all constants for the NLS component here.
  43. \***************************************************************************/
  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 letter */
  62. /*
  63. * CType 2 Flag Bits.
  64. */
  65. #define C2_LEFTTORIGHT 0x1 /* left to right */
  66. #define C2_RIGHTTOLEFT 0x2 /* right to left */
  67. #define C2_EUROPENUMBER 0x3 /* European number, digit */
  68. #define C2_EUROPESEPARATOR 0x4 /* European numeric separator */
  69. #define C2_EUROPETERMINATOR 0x5 /* European numeric terminator */
  70. #define C2_ARABICNUMBER 0x6 /* Arabic number */
  71. #define C2_COMMONSEPARATOR 0x7 /* common numeric separator */
  72. #define C2_BLOCKSEPARATOR 0x8 /* block separator */
  73. #define C2_SEGMENTSEPARATOR 0x9 /* segment separator */
  74. #define C2_WHITESPACE 0xA /* white space */
  75. #define C2_OTHERNEUTRAL 0xB /* other neutrals */
  76. #define C2_NOTAPPLICABLE 0x0 /* no implicit directionality */
  77. /*
  78. * CType 3 Flag Bits.
  79. */
  80. #define C3_NONSPACING 0x0001 /* nonspacing character */
  81. #define C3_DIACRITIC 0x0002 /* diacritic mark */
  82. #define C3_VOWELMARK 0x0004 /* vowel mark */
  83. #define C3_SYMBOL 0x0008 /* symbols */
  84. #define C3_KATAKANA 0x0010
  85. #define C3_HIRAGANA 0x0020
  86. #define C3_HALFWIDTH 0x0040
  87. #define C3_FULLWIDTH 0x0080
  88. #define C3_IDEOGRAPH 0x0100
  89. #define C3_JAPANACCENT 0x0200
  90. #define C3_NOTAPPLICABLE 0x0 /* ctype 3 is not applicable */
  91. /*
  92. * String Flags.
  93. */
  94. #define NORM_IGNORECASE 0x00000001 /* ignore case */
  95. #define NORM_IGNORENONSPACE 0x00000002 /* ignore nonspacing chars */
  96. #define NORM_IGNORESYMBOLS 0x00000004 /* ignore symbols */
  97. #define NORM_IGNOREWIDTH 0x00000008 /* ignore width */
  98. #define NORM_IGNOREKANATYPE 0x00000040 /* ignore kanatype */
  99. #define NORM_IGNOREJAPANACCENT 0x00000080 /* ignore Japanese accent marks */
  100. #define NORM_IGNOREKASHIDA 0x00040000 /* ignore Arabic kashida chars */
  101. /*
  102. * Locale Dependent Mapping Flags.
  103. */
  104. #define LCMAP_LOWERCASE 0x00000100 /* lower case letters */
  105. #define LCMAP_UPPERCASE 0x00000200 /* upper case letters */
  106. #define LCMAP_SORTKEY 0x00000400 /* WC sort key (normalize) */
  107. #define LCMAP_HALFWIDTH 0x00000800 /* narrow pitch case letters */
  108. #define LCMAP_FULLWIDTH 0x00001000 /* wide picth case letters */
  109. #define LCMAP_HIRAGANA 0x00002000 /* map katakana to hiragana */
  110. #define LCMAP_KATAKANA 0x00004000 /* map hiragana to katakana */
  111. /*
  112. * Language IDs.
  113. *
  114. * The following two combinations of primary language ID and
  115. * sublanguage ID have special semantics:
  116. *
  117. * Primary Language ID Sublanguage ID Result
  118. * ------------------- --------------- ------------------------
  119. * LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral
  120. * LANG_NEUTRAL SUBLANG_DEFAULT Process default language
  121. * LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language
  122. */
  123. /*
  124. * Primary language IDs.
  125. */
  126. #define LANG_NEUTRAL 0x00
  127. #define LANG_ALBANIAN 0x1c
  128. #define LANG_ARABIC 0x01
  129. #define LANG_BAHASA 0x21
  130. #define LANG_BULGARIAN 0x02
  131. #define LANG_CATALAN 0x03
  132. #define LANG_CHINESE 0x04
  133. #define LANG_CZECH 0x05
  134. #define LANG_DANISH 0x06
  135. #define LANG_DUTCH 0x13
  136. #define LANG_ENGLISH 0x09
  137. #define LANG_FINNISH 0x0b
  138. #define LANG_FRENCH 0x0c
  139. #define LANG_GERMAN 0x07
  140. #define LANG_GREEK 0x08
  141. #define LANG_HEBREW 0x0d
  142. #define LANG_HUNGARIAN 0x0e
  143. #define LANG_ICELANDIC 0x0f
  144. #define LANG_ITALIAN 0x10
  145. #define LANG_JAPANESE 0x11
  146. #define LANG_KOREAN 0x12
  147. #define LANG_NORWEGIAN 0x14
  148. #define LANG_POLISH 0x15
  149. #define LANG_PORTUGUESE 0x16
  150. #define LANG_RHAETO_ROMAN 0x17
  151. #define LANG_ROMANIAN 0x18
  152. #define LANG_RUSSIAN 0x19
  153. #define LANG_SERBO_CROATIAN 0x1a
  154. #define LANG_SLOVAK 0x1b
  155. #define LANG_SPANISH 0x0a
  156. #define LANG_SWEDISH 0x1d
  157. #define LANG_THAI 0x1e
  158. #define LANG_TURKISH 0x1f
  159. #define LANG_URDU 0x20
  160. /*
  161. * Sublanguage IDs.
  162. *
  163. * The name immediately following SUBLANG_ dictates which primary
  164. * language ID that sublanguage ID can be combined with to form a
  165. * valid language ID.
  166. */
  167. #define SUBLANG_NEUTRAL 0x00 /* language neutral */
  168. #define SUBLANG_DEFAULT 0x01 /* user default */
  169. #define SUBLANG_SYS_DEFAULT 0x02 /* system default */
  170. #define SUBLANG_CHINESE_SIMPLIFIED 0x02 /* Chinese (Simplified) */
  171. #define SUBLANG_CHINESE_TRADITIONAL 0x01 /* Chinese (Traditional) */
  172. #define SUBLANG_DUTCH 0x01 /* Dutch */
  173. #define SUBLANG_DUTCH_BELGIAN 0x02 /* Dutch (Belgian) */
  174. #define SUBLANG_ENGLISH_US 0x01 /* English (USA) */
  175. #define SUBLANG_ENGLISH_UK 0x02 /* English (UK) */
  176. #define SUBLANG_ENGLISH_AUS 0x03 /* English (Australian) */
  177. #define SUBLANG_ENGLISH_CAN 0x04 /* English (Canadian) */
  178. #define SUBLANG_ENGLISH_NZ 0x05 /* English (New Zealand) */
  179. #define SUBLANG_ENGLISH_EIRE 0x06 /* English (Irish) */
  180. #define SUBLANG_FRENCH 0x01 /* French */
  181. #define SUBLANG_FRENCH_BELGIAN 0x02 /* French (Belgian) */
  182. #define SUBLANG_FRENCH_CANADIAN 0x03 /* French (Canadian) */
  183. #define SUBLANG_FRENCH_SWISS 0x04 /* French (Swiss) */
  184. #define SUBLANG_GERMAN 0x01 /* German */
  185. #define SUBLANG_GERMAN_SWISS 0x02 /* German (Swiss) */
  186. #define SUBLANG_GERMAN_AUSTRIAN 0x03 /* German (Austrian) */
  187. #define SUBLANG_ITALIAN 0x01 /* Italian */
  188. #define SUBLANG_ITALIAN_SWISS 0x02 /* Italian (Swiss) */
  189. #define SUBLANG_NORWEGIAN_BOKMAL 0x01 /* Norwegian (Bokmal) */
  190. #define SUBLANG_NORWEGIAN_NYNORSK 0x02 /* Norwegian (Nynorsk) */
  191. #define SUBLANG_PORTUGUESE 0x02 /* Portuguese */
  192. #define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 /* Portuguese (Brazilian) */
  193. #define SUBLANG_SERBO_CROATIAN_CYRILLIC 0x02 /* Serbo-Croatian (Cyrillic) */
  194. #define SUBLANG_SERBO_CROATIAN_LATIN 0x01 /* Croato-Serbian (Latin) */
  195. #define SUBLANG_SPANISH 0x01 /* Spanish */
  196. #define SUBLANG_SPANISH_MEXICAN 0x02 /* Spanish (Mexican) */
  197. #define SUBLANG_SPANISH_MODERN 0x03 /* Spanish (Modern) */
  198. /*
  199. * Country Codes.
  200. */
  201. #define CTRY_DEFAULT 0
  202. #define CTRY_AUSTRALIA 61 /* Australia */
  203. #define CTRY_AUSTRIA 43 /* Austria */
  204. #define CTRY_BELGIUM 32 /* Belgium */
  205. #define CTRY_BRAZIL 55 /* Brazil */
  206. #define CTRY_CANADA 2 /* Canada */
  207. #define CTRY_DENMARK 45 /* Denmark */
  208. #define CTRY_FINLAND 358 /* Finland */
  209. #define CTRY_FRANCE 33 /* France */
  210. #define CTRY_GERMANY 49 /* Germany */
  211. #define CTRY_ICELAND 354 /* Iceland */
  212. #define CTRY_IRELAND 353 /* Ireland */
  213. #define CTRY_ITALY 39 /* Italy */
  214. #define CTRY_JAPAN 81 /* Japan */
  215. #define CTRY_MEXICO 52 /* Mexico */
  216. #define CTRY_NETHERLANDS 31 /* Netherlands */
  217. #define CTRY_NEW_ZEALAND 64 /* New Zealand */
  218. #define CTRY_NORWAY 47 /* Norway */
  219. #define CTRY_PORTUGAL 351 /* Portugal */
  220. #define CTRY_PRCHINA 86 /* PR China */
  221. #define CTRY_SOUTH_KOREA 82 /* South Korea */
  222. #define CTRY_SPAIN 34 /* Spain */
  223. #define CTRY_SWEDEN 46 /* Sweden */
  224. #define CTRY_SWITZERLAND 41 /* Switzerland */
  225. #define CTRY_TAIWAN 886 /* Taiwan */
  226. #define CTRY_UNITED_KINGDOM 44 /* United Kingdom */
  227. #define CTRY_UNITED_STATES 1 /* United States */
  228. /*
  229. * Locale Types.
  230. *
  231. * These types are used for the GetLocaleInfoA NLS API routine.
  232. */
  233. #define LOCALE_NOUSEROVERRIDE 0x80000000 /* OR in to avoid user override */
  234. #define LOCALE_ILANGUAGE 0x0001 /* language id */
  235. #define LOCALE_SLANGUAGE 0x0002 /* localized name of language */
  236. #define LOCALE_SENGLANGUAGE 0x1001 /* English name of language */
  237. #define LOCALE_SABBREVLANGNAME 0x0003 /* abbreviated language name */
  238. #define LOCALE_SNATIVELANGNAME 0x0004 /* native name of language */
  239. #define LOCALE_ICOUNTRY 0x0005 /* country code */
  240. #define LOCALE_SCOUNTRY 0x0006 /* localized name of country */
  241. #define LOCALE_SENGCOUNTRY 0x1002 /* English name of country */
  242. #define LOCALE_SABBREVCTRYNAME 0x0007 /* abbreviated country name */
  243. #define LOCALE_SNATIVECTRYNAME 0x0008 /* native name of country */
  244. #define LOCALE_IDEFAULTLANGUAGE 0x0009 /* default language id */
  245. #define LOCALE_IDEFAULTCOUNTRY 0x000A /* default country code */
  246. #define LOCALE_IDEFAULTCODEPAGE 0x000B /* default code page */
  247. #define LOCALE_SLIST 0x000C /* list item separator */
  248. #define LOCALE_IMEASURE 0x000D /* 0 = metric, 1 = US */
  249. #define LOCALE_SDECIMAL 0x000E /* decimal separator */
  250. #define LOCALE_STHOUSAND 0x000F /* thousand separator */
  251. #define LOCALE_SGROUPING 0x0010 /* digit grouping */
  252. #define LOCALE_IDIGITS 0x0011 /* number of fractional digits */
  253. #define LOCALE_ILZERO 0x0012 /* leading zeros for decimal */
  254. #define LOCALE_SNATIVEDIGITS 0x0013 /* native ascii 0-9 */
  255. #define LOCALE_SCURRENCY 0x0014 /* local monetary symbol */
  256. #define LOCALE_SINTLSYMBOL 0x0015 /* intl monetary symbol */
  257. #define LOCALE_SMONDECIMALSEP 0x0016 /* monetary decimal separator */
  258. #define LOCALE_SMONTHOUSANDSEP 0x0017 /* monetary thousand separator */
  259. #define LOCALE_SMONGROUPING 0x0018 /* monetary grouping */
  260. #define LOCALE_ICURRDIGITS 0x0019 /* # local monetary digits */
  261. #define LOCALE_IINTLCURRDIGITS 0x001A /* # intl monetary digits */
  262. #define LOCALE_ICURRENCY 0x001B /* positive currency mode */
  263. #define LOCALE_INEGCURR 0x001C /* negative currency mode */
  264. #define LOCALE_SDATE 0x001D /* date separator */
  265. #define LOCALE_STIME 0x001E /* time separator */
  266. #define LOCALE_SSHORTDATE 0x001F /* short date-time separator */
  267. #define LOCALE_SLONGDATE 0x0020 /* long date-time separator */
  268. #define LOCALE_IDATE 0x0021 /* short date format ordering */
  269. #define LOCALE_ILDATE 0x0022 /* long date format ordering */
  270. #define LOCALE_ITIME 0x0023 /* time format specifier */
  271. #define LOCALE_ICENTURY 0x0024 /* century format specifier */
  272. #define LOCALE_ITLZERO 0x0025 /* leading zeros in time field */
  273. #define LOCALE_IDAYLZERO 0x0026 /* leading zeros in day field */
  274. #define LOCALE_IMONLZERO 0x0027 /* leading zeros in month field */
  275. #define LOCALE_S1159 0x0028 /* AM designator */
  276. #define LOCALE_S2359 0x0029 /* PM designator */
  277. #define LOCALE_SDAYNAME1 0x002A /* long name for Monday */
  278. #define LOCALE_SDAYNAME2 0x002B /* long name for Tuesday */
  279. #define LOCALE_SDAYNAME3 0x002C /* long name for Wednesday */
  280. #define LOCALE_SDAYNAME4 0x002D /* long name for Thursday */
  281. #define LOCALE_SDAYNAME5 0x002E /* long name for Friday */
  282. #define LOCALE_SDAYNAME6 0x002F /* long name for Saturday */
  283. #define LOCALE_SDAYNAME7 0x0030 /* long name for Sunday */
  284. #define LOCALE_SABBREVDAYNAME1 0x0031 /* abbreviated name for Monday */
  285. #define LOCALE_SABBREVDAYNAME2 0x0032 /* abbreviated name for Tuesday */
  286. #define LOCALE_SABBREVDAYNAME3 0x0033 /* abbreviated name for Wednesday */
  287. #define LOCALE_SABBREVDAYNAME4 0x0034 /* abbreviated name for Thursday */
  288. #define LOCALE_SABBREVDAYNAME5 0x0035 /* abbreviated name for Friday */
  289. #define LOCALE_SABBREVDAYNAME6 0x0036 /* abbreviated name for Saturday */
  290. #define LOCALE_SABBREVDAYNAME7 0x0037 /* abbreviated name for Sunday */
  291. #define LOCALE_SMONTHNAME1 0x0038 /* long name for January */
  292. #define LOCALE_SMONTHNAME2 0x0039 /* long name for February */
  293. #define LOCALE_SMONTHNAME3 0x003A /* long name for March */
  294. #define LOCALE_SMONTHNAME4 0x003B /* long name for April */
  295. #define LOCALE_SMONTHNAME5 0x003C /* long name for May */
  296. #define LOCALE_SMONTHNAME6 0x003D /* long name for June */
  297. #define LOCALE_SMONTHNAME7 0x003E /* long name for July */
  298. #define LOCALE_SMONTHNAME8 0x003F /* long name for August */
  299. #define LOCALE_SMONTHNAME9 0x0040 /* long name for September */
  300. #define LOCALE_SMONTHNAME10 0x0041 /* long name for October */
  301. #define LOCALE_SMONTHNAME11 0x0042 /* long name for November */
  302. #define LOCALE_SMONTHNAME12 0x0043 /* long name for December */
  303. #define LOCALE_SABBREVMONTHNAME1 0x0044 /* abbreviated name for January */
  304. #define LOCALE_SABBREVMONTHNAME2 0x0045 /* abbreviated name for February */
  305. #define LOCALE_SABBREVMONTHNAME3 0x0046 /* abbreviated name for March */
  306. #define LOCALE_SABBREVMONTHNAME4 0x0047 /* abbreviated name for April */
  307. #define LOCALE_SABBREVMONTHNAME5 0x0048 /* abbreviated name for May */
  308. #define LOCALE_SABBREVMONTHNAME6 0x0049 /* abbreviated name for June */
  309. #define LOCALE_SABBREVMONTHNAME7 0x004A /* abbreviated name for July */
  310. #define LOCALE_SABBREVMONTHNAME8 0x004B /* abbreviated name for August */
  311. #define LOCALE_SABBREVMONTHNAME9 0x004C /* abbreviated name for September */
  312. #define LOCALE_SABBREVMONTHNAME10 0x004D /* abbreviated name for October */
  313. #define LOCALE_SABBREVMONTHNAME11 0x004E /* abbreviated name for November */
  314. #define LOCALE_SABBREVMONTHNAME12 0x004F /* abbreviated name for December */
  315. #define LOCALE_SPOSITIVESIGN 0x0050 /* positive sign */
  316. #define LOCALE_SNEGATIVESIGN 0x0051 /* negative sign */
  317. #define LOCALE_IPOSSIGNPOSN 0x0052 /* positive sign position */
  318. #define LOCALE_INEGSIGNPOSN 0x0053 /* negative sign position */
  319. #define LOCALE_IPOSSYMPRECEDES 0x0054 /* mon sym precedes pos amt */
  320. #define LOCALE_IPOSSEPBYSPACE 0x0055 /* mon sym sep by space from pos */
  321. #define LOCALE_INEGSYMPRECEDES 0x0056 /* mon sym precedes neg amt */
  322. #define LOCALE_INEGSEPBYSPACE 0x0057 /* mon sym sep by space from neg */
  323. /***************************************************************************\
  324. * Typedefs
  325. *
  326. * Define all types for the NLS component here.
  327. \***************************************************************************/
  328. /*
  329. * IDs.
  330. */
  331. typedef unsigned long LCID; /* locale ID */
  332. typedef unsigned short LANGID; /* language ID */
  333. typedef unsigned long LCTYPE; /* locale type constant */
  334. #define _LCID_DEFINED
  335. /***************************************************************************\
  336. * Macros
  337. *
  338. * Define all macros for the NLS component here.
  339. \***************************************************************************/
  340. /*
  341. * A language ID is a 16 bit value which is the combination of a
  342. * primary language ID and a secondary language ID. The bits are
  343. * allocated as follows:
  344. *
  345. * +-----------------------+-------------------------+
  346. * | Sublanguage ID | Primary Language ID |
  347. * +-----------------------+-------------------------+
  348. * 15 10 9 0 bit
  349. *
  350. *
  351. * Language ID creation/extraction macros:
  352. *
  353. * MAKELANGID - construct language id from primary language id and
  354. * sublanguage id.
  355. * PRIMARYLANGID - extract primary language id from a language id.
  356. * SUBLANGID - extract sublanguage id from a language id.
  357. */
  358. #define MAKELANGID(p, s) ((((unsigned short)(s)) << 10) | (unsigned short)(p))
  359. #define PRIMARYLANGID(lgid) ((unsigned short)(lgid) & 0x3ff)
  360. #define SUBLANGID(lgid) ((unsigned short)(lgid) >> 10)
  361. /*
  362. * A locale ID is a 32 bit value which is the combination of a
  363. * language ID and a reserved area. The bits are allocated as follows:
  364. *
  365. * +-----------------------+-------------------------+
  366. * | Reserved | Language ID |
  367. * +-----------------------+-------------------------+
  368. * 31 16 15 0 bit
  369. *
  370. *
  371. * Locale ID creation macro:
  372. *
  373. * MAKELCID - construct locale id from a language id.
  374. */
  375. #define MAKELCID(lgid) ((unsigned long)(((unsigned short)(lgid)) | (((unsigned long)((unsigned short)(0))) << 16)))
  376. /*
  377. * Get the language id from a locale id.
  378. */
  379. #define LANGIDFROMLCID(lcid) ((unsigned short)(lcid))
  380. /*
  381. * Default System and User IDs for language and locale.
  382. */
  383. #define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
  384. #define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
  385. #define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT))
  386. #define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT))
  387. /***************************************************************************\
  388. * Function Prototypes
  389. *
  390. * Only prototypes for the NLS APIs should go here.
  391. \***************************************************************************/
  392. NLSAPI_(int)
  393. CompareStringA(LCID, unsigned long, const char FAR*, int, const char FAR*, int);
  394. NLSAPI_(int)
  395. LCMapStringA(LCID, unsigned long, const char FAR*, int, char FAR*, int);
  396. NLSAPI_(int)
  397. GetLocaleInfoA(LCID, LCTYPE, char FAR*, int);
  398. NLSAPI_(int)
  399. GetStringTypeA(LCID, unsigned long, const char FAR*, int, unsigned short FAR*);
  400. NLSAPI_(LANGID)
  401. GetSystemDefaultLangID(void);
  402. NLSAPI_(LANGID)
  403. GetUserDefaultLangID(void);
  404. NLSAPI_(LCID)
  405. GetSystemDefaultLCID(void);
  406. NLSAPI_(LCID)
  407. GetUserDefaultLCID(void);
  408. #ifdef __cplusplus
  409. }
  410. #endif
  411. #endif /* NONLS */
  412. #endif /* _OLENLS_ */