10 #pragma warning(disable:4820)
13 #define GEOID_NOT_AVAILABLE (-1)
14 #define MAX_LEADBYTES 12
15 #define MAX_DEFAULTCHAR 2
17 #define LOCALE_ALL 0x00
19 #define LOCALE_NOUSEROVERRIDE 0x80000000
20 #define LOCALE_USE_CP_ACP 0x40000000
21 #if (WINVER >= 0x0400)
22 #define LOCALE_RETURN_NUMBER 0x20000000
24 #define LOCALE_RETURN_GENITIVE_NAMES 0x10000000
25 #define LOCALE_ILANGUAGE 1
26 #define LOCALE_SLANGUAGE 2
27 #define LOCALE_SENGLANGUAGE 0x1001
28 #define LOCALE_SABBREVLANGNAME 3
29 #define LOCALE_SNATIVELANGNAME 4
30 #define LOCALE_ICOUNTRY 5
31 #define LOCALE_SCOUNTRY 6
32 #define LOCALE_SENGCOUNTRY 0x1002
33 #define LOCALE_SABBREVCTRYNAME 7
34 #define LOCALE_SNATIVECTRYNAME 8
35 #define LOCALE_IDEFAULTLANGUAGE 9
36 #define LOCALE_IDEFAULTCOUNTRY 10
37 #define LOCALE_IDEFAULTCODEPAGE 11
38 #define LOCALE_IDEFAULTANSICODEPAGE 0x1004
39 #define LOCALE_IDEFAULTMACCODEPAGE 0x1011
40 #define LOCALE_SLIST 12
41 #define LOCALE_IMEASURE 13
42 #define LOCALE_SDECIMAL 14
43 #define LOCALE_STHOUSAND 15
44 #define LOCALE_SGROUPING 16
45 #define LOCALE_IDIGITS 17
46 #define LOCALE_ILZERO 18
47 #define LOCALE_INEGNUMBER 0x1010
48 #define LOCALE_SNATIVEDIGITS 19
49 #define LOCALE_SCURRENCY 20
50 #define LOCALE_SINTLSYMBOL 21
51 #define LOCALE_SMONDECIMALSEP 22
52 #define LOCALE_SMONTHOUSANDSEP 23
53 #define LOCALE_SMONGROUPING 24
54 #define LOCALE_ICURRDIGITS 25
55 #define LOCALE_IINTLCURRDIGITS 26
56 #define LOCALE_ICURRENCY 27
57 #define LOCALE_INEGCURR 28
58 #define LOCALE_SDATE 29
59 #define LOCALE_STIME 30
60 #define LOCALE_SSHORTDATE 31
61 #define LOCALE_SLONGDATE 32
62 #define LOCALE_STIMEFORMAT 0x1003
63 #define LOCALE_IDATE 33
64 #define LOCALE_ILDATE 34
65 #define LOCALE_ITIME 35
66 #define LOCALE_ITIMEMARKPOSN 0x1005
67 #define LOCALE_ICENTURY 36
68 #define LOCALE_ITLZERO 37
69 #define LOCALE_IDAYLZERO 38
70 #define LOCALE_IMONLZERO 39
71 #define LOCALE_S1159 40
72 #define LOCALE_S2359 41
73 #define LOCALE_ICALENDARTYPE 0x1009
74 #define LOCALE_IOPTIONALCALENDAR 0x100B
75 #define LOCALE_IFIRSTDAYOFWEEK 0x100C
76 #define LOCALE_IFIRSTWEEKOFYEAR 0x100D
77 #define LOCALE_SDAYNAME1 42
78 #define LOCALE_SDAYNAME2 43
79 #define LOCALE_SDAYNAME3 44
80 #define LOCALE_SDAYNAME4 45
81 #define LOCALE_SDAYNAME5 46
82 #define LOCALE_SDAYNAME6 47
83 #define LOCALE_SDAYNAME7 48
84 #define LOCALE_SABBREVDAYNAME1 49
85 #define LOCALE_SABBREVDAYNAME2 50
86 #define LOCALE_SABBREVDAYNAME3 51
87 #define LOCALE_SABBREVDAYNAME4 52
88 #define LOCALE_SABBREVDAYNAME5 53
89 #define LOCALE_SABBREVDAYNAME6 54
90 #define LOCALE_SABBREVDAYNAME7 55
91 #define LOCALE_SMONTHNAME1 56
92 #define LOCALE_SMONTHNAME2 57
93 #define LOCALE_SMONTHNAME3 58
94 #define LOCALE_SMONTHNAME4 59
95 #define LOCALE_SMONTHNAME5 60
96 #define LOCALE_SMONTHNAME6 61
97 #define LOCALE_SMONTHNAME7 62
98 #define LOCALE_SMONTHNAME8 63
99 #define LOCALE_SMONTHNAME9 64
100 #define LOCALE_SMONTHNAME10 65
101 #define LOCALE_SMONTHNAME11 66
102 #define LOCALE_SMONTHNAME12 67
103 #define LOCALE_SMONTHNAME13 0x100E
104 #define LOCALE_SABBREVMONTHNAME1 68
105 #define LOCALE_SABBREVMONTHNAME2 69
106 #define LOCALE_SABBREVMONTHNAME3 70
107 #define LOCALE_SABBREVMONTHNAME4 71
108 #define LOCALE_SABBREVMONTHNAME5 72
109 #define LOCALE_SABBREVMONTHNAME6 73
110 #define LOCALE_SABBREVMONTHNAME7 74
111 #define LOCALE_SABBREVMONTHNAME8 75
112 #define LOCALE_SABBREVMONTHNAME9 76
113 #define LOCALE_SABBREVMONTHNAME10 77
114 #define LOCALE_SABBREVMONTHNAME11 78
115 #define LOCALE_SABBREVMONTHNAME12 79
116 #define LOCALE_SABBREVMONTHNAME13 0x100F
117 #define LOCALE_SPOSITIVESIGN 80
118 #define LOCALE_SNEGATIVESIGN 81
119 #define LOCALE_SSCRIPTS 108
120 #define LOCALE_IPOSSIGNPOSN 82
121 #define LOCALE_INEGSIGNPOSN 83
122 #define LOCALE_IPOSSYMPRECEDES 84
123 #define LOCALE_IPOSSEPBYSPACE 85
124 #define LOCALE_INEGSYMPRECEDES 86
125 #define LOCALE_INEGSEPBYSPACE 87
126 #if (WINVER >= 0x0400)
127 #define LOCALE_FONTSIGNATURE 88
128 #define LOCALE_SISO639LANGNAME 89
129 #define LOCALE_SISO3166CTRYNAME 90
130 #define LOCALE_SNAME 92
132 #if (WINVER >= 0x0600)
133 #define LOCALE_SSCRIPTS 108
135 #define LOCALE_SYSTEM_DEFAULT 0x800
136 #define LOCALE_USER_DEFAULT 0x400
138 #define LOCALE_IREADINGLAYOUT 0x0070
139 #define LOCALE_INEUTRAL 0x0071
141 #if defined(__GNUC__)
142 # define LOCALE_NAME_INVARIANT (const WCHAR []){ 0 }
143 #elif defined(_MSC_VER)
144 # define LOCALE_NAME_INVARIANT L""
146 static const WCHAR LOCALE_NAME_INVARIANT
[] = { 0 };
149 #if defined(__GNUC__)
150 # define LOCALE_NAME_SYSTEM_DEFAULT (const WCHAR []){'!','s','y','s','-','d','e','f','a','u','l','t','-','l','o','c','a','l','e',0}
151 #elif defined(_MSC_VER)
152 # define LOCALE_NAME_SYSTEM_DEFAULT L"!sys-default-locale"
154 static const WCHAR LOCALE_NAME_SYSTEM_DEFAULT
[] = {'!','s','y','s','-','d','e','f','a','u','l','t','-','l','o','c','a','l','e',0};
157 #define LOCALE_NAME_USER_DEFAULT NULL
159 #define LOCALE_IDEFAULTUNIXCODEPAGE 0x1030 /* Wine extension */
161 #define NORM_IGNORECASE 1
162 #define NORM_IGNOREKANATYPE 65536
163 #define NORM_IGNORENONSPACE 2
164 #define NORM_IGNORESYMBOLS 4
165 #define NORM_IGNOREWIDTH 131072
166 #define SORT_STRINGSORT 4096
167 #define LCMAP_LOWERCASE 0x00000100
168 #define LCMAP_UPPERCASE 0x00000200
169 #define LCMAP_SORTKEY 0x00000400
170 #define LCMAP_BYTEREV 0x00000800
171 #define LCMAP_HIRAGANA 0x00100000
172 #define LCMAP_KATAKANA 0x00200000
173 #define LCMAP_HALFWIDTH 0x00400000
174 #define LCMAP_FULLWIDTH 0x00800000
175 #define LCMAP_LINGUISTIC_CASING 0x01000000
176 #define LCMAP_SIMPLIFIED_CHINESE 0x02000000
177 #define LCMAP_TRADITIONAL_CHINESE 0x04000000
178 #define ENUM_ALL_CALENDARS (-1)
179 #define DATE_SHORTDATE 1
180 #define DATE_LONGDATE 2
181 #define DATE_USE_ALT_CALENDAR 4
182 #define CP_INSTALLED 1
183 #define CP_SUPPORTED 2
184 #define LCID_INSTALLED 1
185 #define LCID_SUPPORTED 2
186 #define LCID_ALTERNATE_SORTS 4
187 #define MAP_FOLDCZONE 16
188 #define MAP_FOLDDIGITS 128
189 #define MAP_PRECOMPOSED 32
190 #define MAP_COMPOSITE 64
192 #define WC_DISCARDNS 0x0010
193 #define WC_SEPCHARS 0x0020
194 #define WC_DEFAULTCHAR 0x0040
195 #define WC_ERR_INVALID_CHARS 0x0080
196 #define WC_COMPOSITECHECK 0x0200
197 #if (WINVER >= 0x0500)
198 #define WC_NO_BEST_FIT_CHARS 0x0400
203 #define CP_UNIXCP CP_ACP
207 #define CP_THREAD_ACP 3
209 #define CP_UTF7 65000
210 #define CP_UTF8 65001
221 #define C1_XDIGIT 128
223 #define C1_DEFINED 512
224 #define C2_LEFTTORIGHT 1
225 #define C2_RIGHTTOLEFT 2
226 #define C2_EUROPENUMBER 3
227 #define C2_EUROPESEPARATOR 4
228 #define C2_EUROPETERMINATOR 5
229 #define C2_ARABICNUMBER 6
230 #define C2_COMMONSEPARATOR 7
231 #define C2_BLOCKSEPARATOR 8
232 #define C2_SEGMENTSEPARATOR 9
233 #define C2_WHITESPACE 10
234 #define C2_OTHERNEUTRAL 11
235 #define C2_NOTAPPLICABLE 0
236 #define C3_NONSPACING 1
237 #define C3_DIACRITIC 2
238 #define C3_VOWELMARK 4
240 #define C3_KATAKANA 16
241 #define C3_HIRAGANA 32
242 #define C3_HALFWIDTH 64
243 #define C3_FULLWIDTH 128
244 #define C3_IDEOGRAPH 256
245 #define C3_KASHIDA 512
246 #define C3_LEXICAL 1024
247 #define C3_ALPHA 32768
248 #define C3_NOTAPPLICABLE 0
249 #define TIME_NOMINUTESORSECONDS 1
250 #define TIME_NOSECONDS 2
251 #define TIME_NOTIMEMARKER 4
252 #define TIME_FORCE24HOURFORMAT 8
253 #define MB_PRECOMPOSED 1
254 #define MB_COMPOSITE 2
255 #define MB_ERR_INVALID_CHARS 8
256 #define MB_USEGLYPHCHARS 4
257 #define CTRY_DEFAULT 0
258 #define CTRY_ALBANIA 355
259 #define CTRY_ALGERIA 213
260 #define CTRY_ARGENTINA 54
261 #define CTRY_ARMENIA 374
262 #define CTRY_AUSTRALIA 61
263 #define CTRY_AUSTRIA 43
264 #define CTRY_AZERBAIJAN 994
265 #define CTRY_BAHRAIN 973
266 #define CTRY_BELARUS 375
267 #define CTRY_BELGIUM 32
268 #define CTRY_BELIZE 501
269 #define CTRY_BOLIVIA 591
270 #define CTRY_BRAZIL 55
271 #define CTRY_BRUNEI_DARUSSALAM 673
272 #define CTRY_BULGARIA 359
273 #define CTRY_CANADA 2
274 #define CTRY_CARIBBEAN 1
275 #define CTRY_CHILE 56
276 #define CTRY_COLOMBIA 57
277 #define CTRY_COSTA_RICA 506
278 #define CTRY_CROATIA 385
279 #define CTRY_CZECH 420
280 #define CTRY_DENMARK 45
281 #define CTRY_DOMINICAN_REPUBLIC 1
282 #define CTRY_ECUADOR 593
283 #define CTRY_EGYPT 20
284 #define CTRY_EL_SALVADOR 503
285 #define CTRY_ESTONIA 372
286 #define CTRY_FAEROE_ISLANDS 298
287 #define CTRY_FINLAND 358
288 #define CTRY_FRANCE 33
289 #define CTRY_GEORGIA 995
290 #define CTRY_GERMANY 49
291 #define CTRY_GREECE 30
292 #define CTRY_GUATEMALA 502
293 #define CTRY_HONDURAS 504
294 #define CTRY_HONG_KONG 852
295 #define CTRY_HUNGARY 36
296 #define CTRY_ICELAND 354
297 #define CTRY_INDIA 91
298 #define CTRY_INDONESIA 62
299 #define CTRY_IRAN 981
300 #define CTRY_IRAQ 964
301 #define CTRY_IRELAND 353
302 #define CTRY_ISRAEL 972
303 #define CTRY_ITALY 39
304 #define CTRY_JAMAICA 1
305 #define CTRY_JAPAN 81
306 #define CTRY_JORDAN 962
307 #define CTRY_KAZAKSTAN 7
308 #define CTRY_KENYA 254
309 #define CTRY_KUWAIT 965
310 #define CTRY_KYRGYZSTAN 996
311 #define CTRY_LATVIA 371
312 #define CTRY_LEBANON 961
313 #define CTRY_LIBYA 218
314 #define CTRY_LIECHTENSTEIN 41
315 #define CTRY_LITHUANIA 370
316 #define CTRY_LUXEMBOURG 352
317 #define CTRY_MACAU 853
318 #define CTRY_MACEDONIA 389
319 #define CTRY_MALAYSIA 60
320 #define CTRY_MALDIVES 960
321 #define CTRY_MEXICO 52
322 #define CTRY_MONACO 33
323 #define CTRY_MONGOLIA 976
324 #define CTRY_MOROCCO 212
325 #define CTRY_NETHERLANDS 31
326 #define CTRY_NEW_ZEALAND 64
327 #define CTRY_NICARAGUA 505
328 #define CTRY_NORWAY 47
329 #define CTRY_OMAN 968
330 #define CTRY_PAKISTAN 92
331 #define CTRY_PANAMA 507
332 #define CTRY_PARAGUAY 595
334 #define CTRY_PHILIPPINES 63
335 #define CTRY_POLAND 48
336 #define CTRY_PORTUGAL 351
337 #define CTRY_PRCHINA 86
338 #define CTRY_PUERTO_RICO 1
339 #define CTRY_QATAR 974
340 #define CTRY_ROMANIA 40
341 #define CTRY_RUSSIA 7
342 #define CTRY_SAUDI_ARABIA 966
343 #define CTRY_SERBIA 381
344 #define CTRY_SINGAPORE 65
345 #define CTRY_SLOVAK 421
346 #define CTRY_SLOVENIA 386
347 #define CTRY_SOUTH_AFRICA 27
348 #define CTRY_SOUTH_KOREA 82
349 #define CTRY_SPAIN 34
350 #define CTRY_SWEDEN 46
351 #define CTRY_SWITZERLAND 41
352 #define CTRY_SYRIA 963
353 #define CTRY_TAIWAN 886
354 #define CTRY_TATARSTAN 7
355 #define CTRY_THAILAND 66
356 #define CTRY_TRINIDAD_Y_TOBAGO 1
357 #define CTRY_TUNISIA 216
358 #define CTRY_TURKEY 90
360 #define CTRY_UKRAINE 380
361 #define CTRY_UNITED_KINGDOM 44
362 #define CTRY_UNITED_STATES 1
363 #define CTRY_URUGUAY 598
364 #define CTRY_UZBEKISTAN 7
365 #define CTRY_VENEZUELA 58
366 #define CTRY_VIET_NAM 84
367 #define CTRY_YEMEN 967
368 #define CTRY_ZIMBABWE 263
369 #define CAL_ICALINTVALUE 1
370 #define CAL_SCALNAME 2
371 #define CAL_IYEAROFFSETRANGE 3
372 #define CAL_SERASTRING 4
373 #define CAL_SSHORTDATE 5
374 #define CAL_SLONGDATE 6
375 #define CAL_SDAYNAME1 7
376 #define CAL_SDAYNAME2 8
377 #define CAL_SDAYNAME3 9
378 #define CAL_SDAYNAME4 10
379 #define CAL_SDAYNAME5 11
380 #define CAL_SDAYNAME6 12
381 #define CAL_SDAYNAME7 13
382 #define CAL_SABBREVDAYNAME1 14
383 #define CAL_SABBREVDAYNAME2 15
384 #define CAL_SABBREVDAYNAME3 16
385 #define CAL_SABBREVDAYNAME4 17
386 #define CAL_SABBREVDAYNAME5 18
387 #define CAL_SABBREVDAYNAME6 19
388 #define CAL_SABBREVDAYNAME7 20
389 #define CAL_SMONTHNAME1 21
390 #define CAL_SMONTHNAME2 22
391 #define CAL_SMONTHNAME3 23
392 #define CAL_SMONTHNAME4 24
393 #define CAL_SMONTHNAME5 25
394 #define CAL_SMONTHNAME6 26
395 #define CAL_SMONTHNAME7 27
396 #define CAL_SMONTHNAME8 28
397 #define CAL_SMONTHNAME9 29
398 #define CAL_SMONTHNAME10 30
399 #define CAL_SMONTHNAME11 31
400 #define CAL_SMONTHNAME12 32
401 #define CAL_SMONTHNAME13 33
402 #define CAL_SABBREVMONTHNAME1 34
403 #define CAL_SABBREVMONTHNAME2 35
404 #define CAL_SABBREVMONTHNAME3 36
405 #define CAL_SABBREVMONTHNAME4 37
406 #define CAL_SABBREVMONTHNAME5 38
407 #define CAL_SABBREVMONTHNAME6 39
408 #define CAL_SABBREVMONTHNAME7 40
409 #define CAL_SABBREVMONTHNAME8 41
410 #define CAL_SABBREVMONTHNAME9 42
411 #define CAL_SABBREVMONTHNAME10 43
412 #define CAL_SABBREVMONTHNAME11 44
413 #define CAL_SABBREVMONTHNAME12 45
414 #define CAL_SABBREVMONTHNAME13 46
415 #define CAL_GREGORIAN 1
416 #define CAL_GREGORIAN_US 2
423 #define CAL_GREGORIAN_ME_FRENCH 9
424 #define CAL_GREGORIAN_ARABIC 10
425 #define CAL_GREGORIAN_XLIT_ENGLISH 11
426 #define CAL_GREGORIAN_XLIT_FRENCH 12
427 #define CSTR_LESS_THAN 1
429 #define CSTR_GREATER_THAN 3
430 #define LGRPID_INSTALLED 1
431 #define LGRPID_SUPPORTED 2
432 #define LGRPID_WESTERN_EUROPE 1
433 #define LGRPID_CENTRAL_EUROPE 2
434 #define LGRPID_BALTIC 3
435 #define LGRPID_GREEK 4
436 #define LGRPID_CYRILLIC 5
437 #define LGRPID_TURKISH 6
438 #define LGRPID_JAPANESE 7
439 #define LGRPID_KOREAN 8
440 #define LGRPID_TRADITIONAL_CHINESE 9
441 #define LGRPID_SIMPLIFIED_CHINESE 10
442 #define LGRPID_THAI 11
443 #define LGRPID_HEBREW 12
444 #define LGRPID_ARABIC 13
445 #define LGRPID_VIETNAMESE 14
446 #define LGRPID_INDIC 15
447 #define LGRPID_GEORGIAN 16
448 #define LGRPID_ARMENIAN 17
450 #if (WINVER >= 0x0500)
451 #define LOCALE_SYEARMONTH 0x1006
452 #define LOCALE_SENGCURRNAME 0x1007
453 #define LOCALE_SNATIVECURRNAME 0x1008
454 #define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012
455 #define LOCALE_SSORTNAME 0x1013
456 #define LOCALE_IDIGITSUBSTITUTION 0x1014
457 #define LOCALE_IPAPERSIZE 0x100A
458 #define DATE_YEARMONTH 8
459 #define DATE_LTRREADING 16
460 #define DATE_RTLREADING 32
461 #define MAP_EXPAND_LIGATURES 0x2000
462 #define CAL_SYEARMONTH 47
463 #define CAL_ITWODIGITYEARMAX 48
464 #define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
465 #define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
466 #define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
467 #endif /* (WINVER >= 0x0500) */
469 #define IDN_ALLOW_UNASSIGNED 0x1
470 #define IDN_USE_STD3_ASCII_RULES 0x2
471 #define VS_ALLOW_LATIN 0x1
472 #define GSS_ALLOW_INHERITED_COMMON 0x1
475 typedef long LONG_PTR
;
479 typedef DWORD LCTYPE
;
480 typedef DWORD CALTYPE
;
482 typedef DWORD LGRPID
;
484 typedef DWORD GEOTYPE
;
485 typedef DWORD GEOCLASS
;
486 typedef BOOL (CALLBACK
*CALINFO_ENUMPROCA
)(LPSTR
);
487 typedef BOOL (CALLBACK
*CALINFO_ENUMPROCW
)(LPWSTR
);
488 typedef BOOL (CALLBACK
*CALINFO_ENUMPROCEXA
)(LPSTR
, CALID
);
489 typedef BOOL (CALLBACK
*CALINFO_ENUMPROCEXW
)(LPWSTR
, CALID
);
490 typedef BOOL (CALLBACK
*LANGUAGEGROUP_ENUMPROCA
)(LGRPID
, LPSTR
, LPSTR
, DWORD
, LONG_PTR
);
491 typedef BOOL (CALLBACK
*LANGUAGEGROUP_ENUMPROCW
)(LGRPID
, LPWSTR
, LPWSTR
, DWORD
, LONG_PTR
);
492 typedef BOOL (CALLBACK
*LANGGROUPLOCALE_ENUMPROCA
)(LGRPID
, LCID
, LPSTR
, LONG_PTR
);
493 typedef BOOL (CALLBACK
*LANGGROUPLOCALE_ENUMPROCW
)(LGRPID
, LCID
, LPWSTR
, LONG_PTR
);
494 typedef BOOL (CALLBACK
*UILANGUAGE_ENUMPROCW
)(LPWSTR
, LONG_PTR
);
495 typedef BOOL (CALLBACK
*UILANGUAGE_ENUMPROCA
)(LPSTR
, LONG_PTR
);
496 typedef BOOL (CALLBACK
*LOCALE_ENUMPROCA
)(LPSTR
);
497 typedef BOOL (CALLBACK
*LOCALE_ENUMPROCW
)(LPWSTR
);
498 typedef BOOL (CALLBACK
*LOCALE_ENUMPROCEX
)(LPWSTR
, DWORD
, LPARAM
);
499 typedef BOOL (CALLBACK
*CODEPAGE_ENUMPROCA
)(LPSTR
);
500 typedef BOOL (CALLBACK
*CODEPAGE_ENUMPROCW
)(LPWSTR
);
501 typedef BOOL (CALLBACK
*DATEFMT_ENUMPROCA
)(LPSTR
);
502 typedef BOOL (CALLBACK
*DATEFMT_ENUMPROCW
)(LPWSTR
);
503 typedef BOOL (CALLBACK
*DATEFMT_ENUMPROCEXA
)(LPSTR
, CALID
);
504 typedef BOOL (CALLBACK
*DATEFMT_ENUMPROCEXW
)(LPWSTR
, CALID
);
505 typedef BOOL (CALLBACK
*TIMEFMT_ENUMPROCA
)(LPSTR
);
506 typedef BOOL (CALLBACK
*TIMEFMT_ENUMPROCW
)(LPWSTR
);
507 typedef BOOL (CALLBACK
*GEO_ENUMPROC
)(GEOID
);
510 COMPARE_STRING
= 0x0001
512 typedef enum NLS_FUNCTION NLS_FUNCTION
;
514 GEOCLASS_NATION
= 16,
519 GEO_LATITUDE
= 0x0002,
520 GEO_LONGITUDE
= 0x0003,
523 GEO_RFC1766
= 0x0006,
525 GEO_FRIENDLYNAME
= 0x0008,
526 GEO_OFFICIALNAME
= 0x0009,
527 GEO_TIMEZONES
= 0x000a,
528 GEO_OFFICIALLANGUAGES
= 0x000b
531 typedef struct _cpinfo
{
533 BYTE DefaultChar
[MAX_DEFAULTCHAR
];
534 BYTE LeadByte
[MAX_LEADBYTES
];
536 typedef struct _cpinfoexA
{
538 BYTE DefaultChar
[MAX_DEFAULTCHAR
];
539 BYTE LeadByte
[MAX_LEADBYTES
];
540 WCHAR UnicodeDefaultChar
;
542 CHAR CodePageName
[MAX_PATH
];
543 } CPINFOEXA
,*LPCPINFOEXA
;
544 typedef struct _cpinfoexW
{
546 BYTE DefaultChar
[MAX_DEFAULTCHAR
];
547 BYTE LeadByte
[MAX_LEADBYTES
];
548 WCHAR UnicodeDefaultChar
;
550 WCHAR CodePageName
[MAX_PATH
];
551 } CPINFOEXW
,*LPCPINFOEXW
;
552 typedef struct _currencyfmtA
{
560 LPSTR lpCurrencySymbol
;
561 } CURRENCYFMTA
,*LPCURRENCYFMTA
;
562 typedef struct _currencyfmtW
{
567 LPWSTR lpThousandSep
;
570 LPWSTR lpCurrencySymbol
;
571 } CURRENCYFMTW
,*LPCURRENCYFMTW
;
572 typedef struct nlsversioninfo
{
573 DWORD dwNLSVersionInfoSize
;
575 DWORD dwDefinedVersion
;
576 } NLSVERSIONINFO
,*LPNLSVERSIONINFO
;
577 typedef struct _numberfmtA
{
584 } NUMBERFMTA
,*LPNUMBERFMTA
;
585 typedef struct _numberfmtW
{
590 LPWSTR lpThousandSep
;
592 } NUMBERFMTW
,*LPNUMBERFMTW
;
593 #if (WINVER >= 0x0600)
594 typedef enum _NORM_FORM
{
595 NormalizationOther
= 0,
596 NormalizationC
= 0x1,
597 NormalizationD
= 0x2,
598 NormalizationKC
= 0x5,
599 NormalizationKD
= 0x6
601 #endif /* (WINVER >= 0x0600) */
602 typedef struct _FILEMUIINFO
{
607 BYTE pServiceChecksum
[16];
608 DWORD dwLanguageNameOffset
;
609 DWORD dwTypeIDMainSize
;
610 DWORD dwTypeIDMainOffset
;
611 DWORD dwTypeNameMainOffset
;
612 DWORD dwTypeIDMUISize
;
613 DWORD dwTypeIDMUIOffset
;
614 DWORD dwTypeNameMUIOffset
;
616 } FILEMUIINFO
, *PFILEMUIINFO
;
618 #define HIGH_SURROGATE_START 0xd800
619 #define HIGH_SURROGATE_END 0xdbff
620 #define LOW_SURROGATE_START 0xdc00
621 #define LOW_SURROGATE_END 0xdfff
623 #define IS_HIGH_SURROGATE(ch) ((ch) >= HIGH_SURROGATE_START && (ch) <= HIGH_SURROGATE_END)
624 #define IS_LOW_SURROGATE(ch) ((ch) >= LOW_SURROGATE_START && (ch) <= LOW_SURROGATE_END)
625 #define IS_SURROGATE_PAIR(high,low) (IS_HIGH_SURROGATE(high) && IS_LOW_SURROGATE(low))
627 int WINAPI
CompareStringA(LCID
,DWORD
,LPCSTR
,int,LPCSTR
,int);
628 int WINAPI
CompareStringW(LCID
,DWORD
,LPCWSTR
,int,LPCWSTR
,int);
629 LCID WINAPI
ConvertDefaultLocale(LCID
);
630 BOOL WINAPI
EnumCalendarInfoA(CALINFO_ENUMPROCA
,LCID
,CALID
,CALTYPE
);
631 BOOL WINAPI
EnumCalendarInfoW(CALINFO_ENUMPROCW
,LCID
,CALID
,CALTYPE
);
632 BOOL WINAPI
EnumDateFormatsA(DATEFMT_ENUMPROCA
,LCID
,DWORD
);
633 BOOL WINAPI
EnumDateFormatsW(DATEFMT_ENUMPROCW
,LCID
,DWORD
);
634 BOOL WINAPI
EnumSystemCodePagesA(CODEPAGE_ENUMPROCA
,DWORD
);
635 BOOL WINAPI
EnumSystemCodePagesW(CODEPAGE_ENUMPROCW
,DWORD
);
636 BOOL WINAPI
EnumSystemGeoID(GEOCLASS
,GEOID
,GEO_ENUMPROC
);
637 BOOL WINAPI
EnumSystemLocalesA(LOCALE_ENUMPROCA
,DWORD
);
638 BOOL WINAPI
EnumSystemLocalesW(LOCALE_ENUMPROCW
,DWORD
);
639 BOOL WINAPI
EnumTimeFormatsA(TIMEFMT_ENUMPROCA
,LCID
,DWORD
);
640 BOOL WINAPI
EnumTimeFormatsW(TIMEFMT_ENUMPROCW
,LCID
,DWORD
);
641 int WINAPI
FoldStringA(DWORD
,LPCSTR
,int,LPSTR
,int);
642 int WINAPI
FoldStringW(DWORD
,LPCWSTR
,int,LPWSTR
,int);
643 UINT WINAPI
GetACP(void);
644 int WINAPI
GetCalendarInfoA(LCID
,CALID
,CALTYPE
,LPSTR
,int,LPDWORD
);
645 int WINAPI
GetCalendarInfoW(LCID
,CALID
,CALTYPE
,LPWSTR
,int,LPDWORD
);
646 BOOL WINAPI
GetCPInfo(UINT
,LPCPINFO
);
647 BOOL WINAPI
GetCPInfoExA(UINT
,DWORD
,LPCPINFOEXA
);
648 BOOL WINAPI
GetCPInfoExW(UINT
,DWORD
,LPCPINFOEXW
);
649 int WINAPI
GetCurrencyFormatA(LCID
,DWORD
,LPCSTR
,const CURRENCYFMTA
*,LPSTR
,int);
650 int WINAPI
GetCurrencyFormatW(LCID
,DWORD
,LPCWSTR
,const CURRENCYFMTW
*,LPWSTR
,int);
651 int WINAPI
GetDateFormatA(LCID
,DWORD
,const SYSTEMTIME
*,LPCSTR
,LPSTR
,int);
652 int WINAPI
GetDateFormatW(LCID
,DWORD
,const SYSTEMTIME
*,LPCWSTR
,LPWSTR
,int);
653 int WINAPI
GetGeoInfoA(GEOID
,GEOTYPE
,LPSTR
,int,LANGID
);
654 int WINAPI
GetGeoInfoW(GEOID
,GEOTYPE
,LPWSTR
,int,LANGID
);
655 int WINAPI
GetLocaleInfoA(LCID
,LCTYPE
,LPSTR
,int);
656 int WINAPI
GetLocaleInfoW(LCID
,LCTYPE
,LPWSTR
,int);
657 BOOL WINAPI
GetNLSVersion(NLS_FUNCTION
,LCID
,LPNLSVERSIONINFO
);
658 int WINAPI
GetNumberFormatA(LCID
,DWORD
,LPCSTR
,const NUMBERFMTA
*,LPSTR
,int);
659 int WINAPI
GetNumberFormatW(LCID
,DWORD
,LPCWSTR
,const NUMBERFMTW
*,LPWSTR
,int);
660 UINT WINAPI
GetOEMCP(void);
661 BOOL WINAPI
GetStringTypeA(LCID
,DWORD
,LPCSTR
,int,LPWORD
);
662 BOOL WINAPI
GetStringTypeW(DWORD
,LPCWSTR
,int,LPWORD
);
663 BOOL WINAPI
GetStringTypeExA(LCID
,DWORD
,LPCSTR
,int,LPWORD
);
664 BOOL WINAPI
GetStringTypeExW(LCID
,DWORD
,LPCWSTR
,int,LPWORD
);
665 LANGID WINAPI
GetSystemDefaultLangID(void);
666 LCID WINAPI
GetSystemDefaultLCID(void);
667 LCID WINAPI
GetThreadLocale(void);
668 int WINAPI
GetTimeFormatA(LCID
,DWORD
,const SYSTEMTIME
*,LPCSTR
,LPSTR
,int);
669 int WINAPI
GetTimeFormatW(LCID
,DWORD
,const SYSTEMTIME
*,LPCWSTR
,LPWSTR
,int);
670 LANGID WINAPI
GetUserDefaultLangID(void);
671 LCID WINAPI
GetUserDefaultLCID(void);
672 LANGID WINAPI
GetUserDefaultUILanguage(void);
673 GEOID WINAPI
GetUserGeoID(GEOCLASS
);
674 BOOL WINAPI
IsDBCSLeadByte(BYTE
);
675 BOOL WINAPI
IsDBCSLeadByteEx(UINT
,BYTE
);
676 BOOL WINAPI
IsNLSDefinedString(NLS_FUNCTION
,DWORD
,LPNLSVERSIONINFO
,LPCWSTR
,int);
677 BOOL WINAPI
IsValidCodePage(UINT
);
678 BOOL WINAPI
IsValidLocale(LCID
,DWORD
);
679 int WINAPI
LCMapStringA(LCID
,DWORD
,LPCSTR
,int,LPSTR
,int);
680 int WINAPI
LCMapStringW(LCID
,DWORD
,LPCWSTR
,int,LPWSTR
,int);
681 int WINAPI
MultiByteToWideChar(UINT
,DWORD
,LPCSTR
,int,LPWSTR
,int);
682 int WINAPI
SetCalendarInfoA(LCID
,CALID
,CALTYPE
,LPCSTR
);
683 int WINAPI
SetCalendarInfoW(LCID
,CALID
,CALTYPE
,LPCWSTR
);
684 BOOL WINAPI
SetLocaleInfoA(LCID
,LCTYPE
,LPCSTR
);
685 BOOL WINAPI
SetLocaleInfoW(LCID
,LCTYPE
,LPCWSTR
);
686 BOOL WINAPI
SetThreadLocale(LCID
);
687 LANGID WINAPI
SetThreadUILanguage(LANGID
);
688 BOOL WINAPI
SetUserDefaultLCID(LCID
);
689 BOOL WINAPI
SetUserDefaultUILanguage(LANGID
);
690 BOOL WINAPI
SetUserGeoID(GEOID
);
691 int WINAPI
WideCharToMultiByte(UINT
,DWORD
,LPCWSTR
,int,LPSTR
,int,LPCSTR
,LPBOOL
);
692 #if (WINVER >= 0x0500)
693 BOOL WINAPI
EnumCalendarInfoExA(CALINFO_ENUMPROCEXA
,LCID
,CALID
,CALTYPE
);
694 BOOL WINAPI
EnumCalendarInfoExW(CALINFO_ENUMPROCEXW
,LCID
,CALID
,CALTYPE
);
695 BOOL WINAPI
EnumDateFormatsExA(DATEFMT_ENUMPROCEXA
,LCID
,DWORD
);
696 BOOL WINAPI
EnumDateFormatsExW(DATEFMT_ENUMPROCEXW
,LCID
,DWORD
);
697 BOOL WINAPI
EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA
,DWORD
,LONG_PTR
);
698 BOOL WINAPI
EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW
,DWORD
,LONG_PTR
);
699 BOOL WINAPI
EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA
,LGRPID
,DWORD
,LONG_PTR
);
700 BOOL WINAPI
EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW
,LGRPID
,DWORD
,LONG_PTR
);
701 BOOL WINAPI
EnumUILanguagesA(UILANGUAGE_ENUMPROCA
,DWORD
,LONG_PTR
);
702 BOOL WINAPI
EnumUILanguagesW(UILANGUAGE_ENUMPROCW
,DWORD
,LONG_PTR
);
703 LANGID WINAPI
GetSystemDefaultUILanguage(void);
704 LANGID WINAPI
GetUserDefaultUILanguage(void);
705 BOOL WINAPI
IsValidLanguageGroup(LGRPID
,DWORD
);
706 #endif /* (WINVER >= 0x0500) */
707 #if (WINVER >= 0x0600)
708 BOOL WINAPI
GetFileMUIInfo(DWORD
,PCWSTR
,PFILEMUIINFO
,DWORD
*);
709 BOOL WINAPI
GetFileMUIPath(DWORD
,PCWSTR
,PWSTR
,PULONG
,PWSTR
,PULONG
,PULONGLONG
);
711 int WINAPI
GetLocaleInfoEx(LPCWSTR
,LCTYPE
,LPWSTR
,int);
712 BOOL WINAPI
GetProcessPreferredUILanguages(DWORD
,PULONG
,PZZWSTR
,PULONG
);
713 BOOL WINAPI
GetSystemPreferredUILanguages(DWORD
,PULONG
,PZZWSTR
,PULONG
);
714 BOOL WINAPI
GetThreadPreferredUILanguages(DWORD
,PULONG
,PZZWSTR
,PULONG
);
715 LANGID WINAPI
GetThreadUILanguage(void);
716 BOOL WINAPI
GetUILanguageInfo(DWORD
,PCZZWSTR
,PZZWSTR
,PDWORD
,PDWORD
);
717 BOOL WINAPI
GetUserPreferredUILanguages(DWORD
,PULONG
,PZZWSTR
,PULONG
);
718 int WINAPI
IdnToAscii(DWORD
,LPCWSTR
,int,LPWSTR
,int);
719 int WINAPI
IdnToNameprepUnicode(DWORD
,LPCWSTR
,int,LPWSTR
,int);
720 int WINAPI
IdnToUnicode(DWORD
,LPCWSTR
,int,LPWSTR
,int);
721 BOOL WINAPI
IsNormalizedString(NORM_FORM
,LPCWSTR
,int);
722 int WINAPI
NormalizeString(NORM_FORM
,LPCWSTR
,int,LPWSTR
,int);
723 int WINAPI
GetStringScripts(DWORD
,LPCWSTR
,int,LPWSTR
,int);
724 BOOL WINAPI
SetProcessPreferredUILanguages(DWORD
,PCZZWSTR
,PULONG
);
725 BOOL WINAPI
SetThreadPreferredUILanguages(DWORD
,PCZZWSTR
,PULONG
);
726 BOOL WINAPI
VerifyScripts(DWORD
,LPCWSTR
,int,LPCWSTR
,int);
727 #endif /* (WINVER >= 0x0600) */
730 #define CALINFO_ENUMPROC CALINFO_ENUMPROCW
731 #define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
732 #define LOCALE_ENUMPROC LOCALE_ENUMPROCW
733 #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
734 #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
735 #define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
736 #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
737 #define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
738 #define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
739 #define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
740 typedef CPINFOEXW CPINFOEX
;
741 typedef LPCPINFOEXW LPCPINFOEX
;
742 typedef CURRENCYFMTW CURRENCYFMT
;
743 typedef LPCURRENCYFMTW LPCURRENCYFMT
;
744 typedef NUMBERFMTW NUMBERFMT
;
745 typedef LPNUMBERFMTW LPNUMBERFMT
;
746 #define CompareString CompareStringW
747 #define EnumCalendarInfo EnumCalendarInfoW
748 #define EnumDateFormats EnumDateFormatsW
749 #define EnumSystemCodePages EnumSystemCodePagesW
750 #define EnumSystemLocales EnumSystemLocalesW
751 #define EnumTimeFormats EnumTimeFormatsW
752 #define FoldString FoldStringW
753 #define GetCalendarInfo GetCalendarInfoW
754 #define GetCPInfoEx GetCPInfoExW
755 #define GetCurrencyFormat GetCurrencyFormatW
756 #define GetDateFormat GetDateFormatW
757 #define GetGeoInfo GetGeoInfoW
758 #define GetLocaleInfo GetLocaleInfoW
759 #define GetNumberFormat GetNumberFormatW
760 #define GetStringTypeEx GetStringTypeExW
761 #define GetTimeFormat GetTimeFormatW
762 #define LCMapString LCMapStringW
763 #define SetCalendarInfo SetCalendarInfoW
764 #define SetLocaleInfo SetLocaleInfoW
765 #if (WINVER >= 0x0500)
766 #define EnumCalendarInfoEx EnumCalendarInfoExW
767 #define EnumDateFormatsEx EnumDateFormatsExW
768 #define EnumSystemLanguageGroups EnumSystemLanguageGroupsW
769 #define EnumLanguageGroupLocales EnumLanguageGroupLocalesW
770 #define EnumUILanguages EnumUILanguagesW
771 #endif /* (WINVER >= 0x0500) */
773 #define CALINFO_ENUMPROC CALINFO_ENUMPROCA
774 #define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
775 #define LOCALE_ENUMPROC LOCALE_ENUMPROCA
776 #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
777 #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
778 #define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
779 #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
780 #define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
781 #define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
782 #define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
783 typedef CPINFOEXA CPINFOEX
;
784 typedef LPCPINFOEXA LPCPINFOEX
;
785 typedef CURRENCYFMTA CURRENCYFMT
;
786 typedef LPCURRENCYFMTA LPCURRENCYFMT
;
787 typedef NUMBERFMTA NUMBERFMT
;
788 typedef LPNUMBERFMTA LPNUMBERFMT
;
789 #define CompareString CompareStringA
790 #define EnumCalendarInfo EnumCalendarInfoA
791 #define EnumDateFormats EnumDateFormatsA
792 #define EnumSystemCodePages EnumSystemCodePagesA
793 #define EnumSystemLocales EnumSystemLocalesA
794 #define EnumTimeFormats EnumTimeFormatsA
795 #define FoldString FoldStringA
796 #define GetCalendarInfo GetCalendarInfoA
797 #define GetCPInfoEx GetCPInfoExA
798 #define GetCurrencyFormat GetCurrencyFormatA
799 #define GetDateFormat GetDateFormatA
800 #define GetGeoInfo GetGeoInfoA
801 #define GetLocaleInfo GetLocaleInfoA
802 #define GetNumberFormat GetNumberFormatA
803 #define GetStringTypeEx GetStringTypeExA
804 #define GetTimeFormat GetTimeFormatA
805 #define LCMapString LCMapStringA
806 #define SetCalendarInfo SetCalendarInfoA
807 #define SetLocaleInfo SetLocaleInfoA
808 #if (WINVER >= 0x0500)
809 #define EnumCalendarInfoEx EnumCalendarInfoExA
810 #define EnumDateFormatsEx EnumDateFormatsExA
811 #define EnumSystemLanguageGroups EnumSystemLanguageGroupsA
812 #define EnumLanguageGroupLocales EnumLanguageGroupLocalesA
813 #define EnumUILanguages EnumUILanguagesA
814 #endif /* (WINVER >= 0x0500) */
816 #endif /* RC_INVOKED */