1 /**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * Authors: Stewart Gordon
7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8 * Source: $(DRUNTIMESRC src/core/sys/windows/_winnls.d)
9 */
10 module core.sys.windows.winnls;
version(Windows)11 version (Windows):
12 @system:
13
14 version (ANSI) {} else version = Unicode;
15 pragma(lib, "kernel32");
16
17 import core.sys.windows.basetsd, core.sys.windows.w32api, core.sys.windows.winbase, core.sys.windows.windef;
18
19 alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS;
20
21 enum size_t
22 MAX_DEFAULTCHAR = 2,
23 MAX_LEADBYTES = 12;
24
25 enum LCTYPE
26 LOCALE_USE_CP_ACP = 0x40000000,
27 LOCALE_RETURN_NUMBER = 0x20000000;
28
29 enum : LCTYPE {
30 LOCALE_ILANGUAGE = 1,
31 LOCALE_SLANGUAGE,
32 LOCALE_SABBREVLANGNAME,
33 LOCALE_SNATIVELANGNAME,
34 LOCALE_ICOUNTRY,
35 LOCALE_SCOUNTRY,
36 LOCALE_SABBREVCTRYNAME,
37 LOCALE_SNATIVECTRYNAME,
38 LOCALE_IDEFAULTLANGUAGE,
39 LOCALE_IDEFAULTCOUNTRY,
40 LOCALE_IDEFAULTCODEPAGE,
41 LOCALE_SLIST,
42 LOCALE_IMEASURE,
43 LOCALE_SDECIMAL,
44 LOCALE_STHOUSAND,
45 LOCALE_SGROUPING,
46 LOCALE_IDIGITS,
47 LOCALE_ILZERO,
48 LOCALE_SNATIVEDIGITS,
49 LOCALE_SCURRENCY,
50 LOCALE_SINTLSYMBOL,
51 LOCALE_SMONDECIMALSEP,
52 LOCALE_SMONTHOUSANDSEP,
53 LOCALE_SMONGROUPING,
54 LOCALE_ICURRDIGITS,
55 LOCALE_IINTLCURRDIGITS,
56 LOCALE_ICURRENCY,
57 LOCALE_INEGCURR,
58 LOCALE_SDATE,
59 LOCALE_STIME,
60 LOCALE_SSHORTDATE,
61 LOCALE_SLONGDATE,
62 LOCALE_IDATE,
63 LOCALE_ILDATE,
64 LOCALE_ITIME,
65 LOCALE_ICENTURY,
66 LOCALE_ITLZERO,
67 LOCALE_IDAYLZERO,
68 LOCALE_IMONLZERO,
69 LOCALE_S1159,
70 LOCALE_S2359,
71 LOCALE_SDAYNAME1,
72 LOCALE_SDAYNAME2,
73 LOCALE_SDAYNAME3,
74 LOCALE_SDAYNAME4,
75 LOCALE_SDAYNAME5,
76 LOCALE_SDAYNAME6,
77 LOCALE_SDAYNAME7,
78 LOCALE_SABBREVDAYNAME1,
79 LOCALE_SABBREVDAYNAME2,
80 LOCALE_SABBREVDAYNAME3,
81 LOCALE_SABBREVDAYNAME4,
82 LOCALE_SABBREVDAYNAME5,
83 LOCALE_SABBREVDAYNAME6,
84 LOCALE_SABBREVDAYNAME7,
85 LOCALE_SMONTHNAME1,
86 LOCALE_SMONTHNAME2,
87 LOCALE_SMONTHNAME3,
88 LOCALE_SMONTHNAME4,
89 LOCALE_SMONTHNAME5,
90 LOCALE_SMONTHNAME6,
91 LOCALE_SMONTHNAME7,
92 LOCALE_SMONTHNAME8,
93 LOCALE_SMONTHNAME9,
94 LOCALE_SMONTHNAME10,
95 LOCALE_SMONTHNAME11,
96 LOCALE_SMONTHNAME12,
97 LOCALE_SABBREVMONTHNAME1,
98 LOCALE_SABBREVMONTHNAME2,
99 LOCALE_SABBREVMONTHNAME3,
100 LOCALE_SABBREVMONTHNAME4,
101 LOCALE_SABBREVMONTHNAME5,
102 LOCALE_SABBREVMONTHNAME6,
103 LOCALE_SABBREVMONTHNAME7,
104 LOCALE_SABBREVMONTHNAME8,
105 LOCALE_SABBREVMONTHNAME9,
106 LOCALE_SABBREVMONTHNAME10,
107 LOCALE_SABBREVMONTHNAME11,
108 LOCALE_SABBREVMONTHNAME12,
109 LOCALE_SPOSITIVESIGN,
110 LOCALE_SNEGATIVESIGN,
111 LOCALE_IPOSSIGNPOSN,
112 LOCALE_INEGSIGNPOSN,
113 LOCALE_IPOSSYMPRECEDES,
114 LOCALE_IPOSSEPBYSPACE,
115 LOCALE_INEGSYMPRECEDES,
116 LOCALE_INEGSEPBYSPACE,
117 LOCALE_FONTSIGNATURE,
118 LOCALE_SISO639LANGNAME,
119 LOCALE_SISO3166CTRYNAME, // = 90
120 LOCALE_SENGLANGUAGE = 0x1001,
121 LOCALE_SENGCOUNTRY = 0x1002,
122 LOCALE_IDEFAULTANSICODEPAGE = 0x1004,
123 LOCALE_INEGNUMBER = 0x1010,
124 LOCALE_STIMEFORMAT = 0x1003,
125 LOCALE_ITIMEMARKPOSN = 0x1005,
126 LOCALE_ICALENDARTYPE = 0x1009,
127 LOCALE_IOPTIONALCALENDAR = 0x100B,
128 LOCALE_IFIRSTDAYOFWEEK = 0x100C,
129 LOCALE_IFIRSTWEEKOFYEAR = 0x100D,
130 LOCALE_SMONTHNAME13 = 0x100E,
131 LOCALE_SABBREVMONTHNAME13 = 0x100F
132 }
133
134 enum : LCID {
135 LOCALE_USER_DEFAULT = 0x400,
136 LOCALE_SYSTEM_DEFAULT = 0x800
137 }
138
139 enum DWORD
140 NORM_IGNORECASE = 1,
141 NORM_IGNORENONSPACE = 2,
142 NORM_IGNORESYMBOLS = 4,
143 SORT_STRINGSORT = 0x01000,
144 NORM_IGNOREKANATYPE = 0x10000,
145 NORM_IGNOREWIDTH = 0x20000;
146
147 enum DWORD
148 LCMAP_LOWERCASE = 0x00000100,
149 LCMAP_UPPERCASE = 0x00000200,
150 LCMAP_SORTKEY = 0x00000400,
151 LCMAP_BYTEREV = 0x00000800,
152 LCMAP_HIRAGANA = 0x00100000,
153 LCMAP_KATAKANA = 0x00200000,
154 LCMAP_HALFWIDTH = 0x00400000,
155 LCMAP_FULLWIDTH = 0x00800000,
156 LCMAP_LINGUISTIC_CASING = 0x01000000,
157 LCMAP_SIMPLIFIED_CHINESE = 0x02000000,
158 LCMAP_TRADITIONAL_CHINESE = 0x04000000;
159
160 enum CALID ENUM_ALL_CALENDARS = -1;
161
162 enum DWORD
163 DATE_SHORTDATE = 1,
164 DATE_LONGDATE = 2,
165 DATE_USE_ALT_CALENDAR = 4,
166 LOCALE_NOUSEROVERRIDE = 0x80000000;
167
168 enum : DWORD {
169 CP_INSTALLED = 1,
170 CP_SUPPORTED
171 }
172
173 enum : DWORD {
174 LCID_INSTALLED = 1,
175 LCID_SUPPORTED = 2,
176 LCID_ALTERNATE_SORTS = 4
177 }
178
179 enum DWORD
180 MAP_FOLDCZONE = 16,
181 MAP_PRECOMPOSED = 32,
182 MAP_COMPOSITE = 64,
183 MAP_FOLDDIGITS = 128;
184
185 enum : UINT {
186 CP_ACP,
187 CP_OEMCP,
188 CP_MACCP,
189 CP_THREAD_ACP, // = 3
190 CP_SYMBOL = 42,
191 CP_UTF7 = 65000,
192 CP_UTF8 = 65001
193 }
194
195 enum : DWORD {
196 CT_CTYPE1 = 1,
197 CT_CTYPE2 = 2,
198 CT_CTYPE3 = 4
199 }
200
201 enum WORD
202 C1_UPPER = 1,
203 C1_LOWER = 2,
204 C1_DIGIT = 4,
205 C1_SPACE = 8,
206 C1_PUNCT = 16,
207 C1_CNTRL = 32,
208 C1_BLANK = 64,
209 C1_XDIGIT = 128,
210 C1_ALPHA = 256;
211
212 enum : WORD {
213 C2_NOTAPPLICABLE,
214 C2_LEFTTORIGHT,
215 C2_RIGHTTOLEFT,
216 C2_EUROPENUMBER,
217 C2_EUROPESEPARATOR,
218 C2_EUROPETERMINATOR,
219 C2_ARABICNUMBER,
220 C2_COMMONSEPARATOR,
221 C2_BLOCKSEPARATOR,
222 C2_SEGMENTSEPARATOR,
223 C2_WHITESPACE,
224 C2_OTHERNEUTRAL // = 11
225 }
226
227 enum WORD
228 C3_NOTAPPLICABLE = 0,
229 C3_NONSPACING = 1,
230 C3_DIACRITIC = 2,
231 C3_VOWELMARK = 4,
232 C3_SYMBOL = 8,
233 C3_KATAKANA = 0x0010,
234 C3_HIRAGANA = 0x0020,
235 C3_HALFWIDTH = 0x0040,
236 C3_FULLWIDTH = 0x0080,
237 C3_IDEOGRAPH = 0x0100,
238 C3_KASHIDA = 0x0200,
239 C3_LEXICAL = 0x0400,
240 C3_ALPHA = 0x8000;
241
242 enum DWORD
243 TIME_NOMINUTESORSECONDS = 1,
244 TIME_NOSECONDS = 2,
245 TIME_NOTIMEMARKER = 4,
246 TIME_FORCE24HOURFORMAT = 8;
247
248 enum DWORD
249 MB_PRECOMPOSED = 1,
250 MB_COMPOSITE = 2,
251 MB_USEGLYPHCHARS = 4,
252 MB_ERR_INVALID_CHARS = 8;
253
254 enum DWORD
255 WC_DISCARDNS = 16,
256 WC_SEPCHARS = 32,
257 WC_DEFAULTCHAR = 64,
258 WC_COMPOSITECHECK = 512;
259
260 enum : LONG {
261 CTRY_DEFAULT = 0,
262 CTRY_DOMINICAN_REPUBLIC = 1,
263 CTRY_PUERTO_RICO = 1,
264 CTRY_CARIBBEAN = 1,
265 CTRY_JAMAICA = 1,
266 CTRY_UNITED_STATES = 1,
267 CTRY_TRINIDAD_Y_TOBAGO = 1,
268 CTRY_CANADA = 2,
269 CTRY_RUSSIA = 7,
270 CTRY_UZBEKISTAN = 7,
271 CTRY_KAZAKSTAN = 7,
272 CTRY_TATARSTAN = 7,
273 CTRY_EGYPT = 20,
274 CTRY_SOUTH_AFRICA = 27,
275 CTRY_GREECE = 30,
276 CTRY_NETHERLANDS = 31,
277 CTRY_BELGIUM = 32,
278 CTRY_FRANCE = 33,
279 CTRY_MONACO = 33,
280 CTRY_SPAIN = 34,
281 CTRY_HUNGARY = 36,
282 CTRY_ITALY = 39,
283 CTRY_ROMANIA = 40,
284 CTRY_SWITZERLAND = 41,
285 CTRY_LIECHTENSTEIN = 41,
286 CTRY_AUSTRIA = 43,
287 CTRY_UNITED_KINGDOM = 44,
288 CTRY_DENMARK = 45,
289 CTRY_SWEDEN = 46,
290 CTRY_NORWAY = 47,
291 CTRY_POLAND = 48,
292 CTRY_GERMANY = 49,
293 CTRY_PERU = 51,
294 CTRY_MEXICO = 52,
295 CTRY_ARGENTINA = 54,
296 CTRY_BRAZIL = 55,
297 CTRY_CHILE = 56,
298 CTRY_COLOMBIA = 57,
299 CTRY_VENEZUELA = 58,
300 CTRY_MALAYSIA = 60,
301 CTRY_AUSTRALIA = 61,
302 CTRY_INDONESIA = 62,
303 CTRY_PHILIPPINES = 63,
304 CTRY_NEW_ZEALAND = 64,
305 CTRY_SINGAPORE = 65,
306 CTRY_THAILAND = 66,
307 CTRY_JAPAN = 81,
308 CTRY_SOUTH_KOREA = 82,
309 CTRY_VIET_NAM = 84,
310 CTRY_PRCHINA = 86,
311 CTRY_TURKEY = 90,
312 CTRY_INDIA = 91,
313 CTRY_PAKISTAN = 92,
314 CTRY_MOROCCO = 212,
315 CTRY_ALGERIA = 213,
316 CTRY_TUNISIA = 216,
317 CTRY_LIBYA = 218,
318 CTRY_KENYA = 254,
319 CTRY_ZIMBABWE = 263,
320 CTRY_FAEROE_ISLANDS = 298,
321 CTRY_PORTUGAL = 351,
322 CTRY_LUXEMBOURG = 352,
323 CTRY_IRELAND = 353,
324 CTRY_ICELAND = 354,
325 CTRY_ALBANIA = 355,
326 CTRY_FINLAND = 358,
327 CTRY_BULGARIA = 359,
328 CTRY_LITHUANIA = 370,
329 CTRY_LATVIA = 371,
330 CTRY_ESTONIA = 372,
331 CTRY_ARMENIA = 374,
332 CTRY_BELARUS = 375,
333 CTRY_UKRAINE = 380,
334 CTRY_SERBIA = 381,
335 CTRY_CROATIA = 385,
336 CTRY_SLOVENIA = 386,
337 CTRY_MACEDONIA = 389,
338 CTRY_CZECH = 420,
339 CTRY_SLOVAK = 421,
340 CTRY_BELIZE = 501,
341 CTRY_GUATEMALA = 502,
342 CTRY_EL_SALVADOR = 503,
343 CTRY_HONDURAS = 504,
344 CTRY_NICARAGUA = 505,
345 CTRY_COSTA_RICA = 506,
346 CTRY_PANAMA = 507,
347 CTRY_BOLIVIA = 591,
348 CTRY_ECUADOR = 593,
349 CTRY_PARAGUAY = 595,
350 CTRY_URUGUAY = 598,
351 CTRY_BRUNEI_DARUSSALAM = 673,
352 CTRY_HONG_KONG = 852,
353 CTRY_MACAU = 853,
354 CTRY_TAIWAN = 886,
355 CTRY_MALDIVES = 960,
356 CTRY_LEBANON = 961,
357 CTRY_JORDAN = 962,
358 CTRY_SYRIA = 963,
359 CTRY_IRAQ = 964,
360 CTRY_KUWAIT = 965,
361 CTRY_SAUDI_ARABIA = 966,
362 CTRY_YEMEN = 967,
363 CTRY_OMAN = 968,
364 CTRY_UAE = 971,
365 CTRY_ISRAEL = 972,
366 CTRY_BAHRAIN = 973,
367 CTRY_QATAR = 974,
368 CTRY_MONGOLIA = 976,
369 CTRY_IRAN = 981,
370 CTRY_AZERBAIJAN = 994,
371 CTRY_GEORGIA = 995,
372 CTRY_KYRGYZSTAN = 996
373 }
374
375 enum : CALTYPE {
376 CAL_ICALINTVALUE = 1,
377 CAL_SCALNAME,
378 CAL_IYEAROFFSETRANGE,
379 CAL_SERASTRING,
380 CAL_SSHORTDATE,
381 CAL_SLONGDATE,
382 CAL_SDAYNAME1,
383 CAL_SDAYNAME2,
384 CAL_SDAYNAME3,
385 CAL_SDAYNAME4,
386 CAL_SDAYNAME5,
387 CAL_SDAYNAME6,
388 CAL_SDAYNAME7,
389 CAL_SABBREVDAYNAME1,
390 CAL_SABBREVDAYNAME2,
391 CAL_SABBREVDAYNAME3,
392 CAL_SABBREVDAYNAME4,
393 CAL_SABBREVDAYNAME5,
394 CAL_SABBREVDAYNAME6,
395 CAL_SABBREVDAYNAME7,
396 CAL_SMONTHNAME1,
397 CAL_SMONTHNAME2,
398 CAL_SMONTHNAME3,
399 CAL_SMONTHNAME4,
400 CAL_SMONTHNAME5,
401 CAL_SMONTHNAME6,
402 CAL_SMONTHNAME7,
403 CAL_SMONTHNAME8,
404 CAL_SMONTHNAME9,
405 CAL_SMONTHNAME10,
406 CAL_SMONTHNAME11,
407 CAL_SMONTHNAME12,
408 CAL_SMONTHNAME13,
409 CAL_SABBREVMONTHNAME1,
410 CAL_SABBREVMONTHNAME2,
411 CAL_SABBREVMONTHNAME3,
412 CAL_SABBREVMONTHNAME4,
413 CAL_SABBREVMONTHNAME5,
414 CAL_SABBREVMONTHNAME6,
415 CAL_SABBREVMONTHNAME7,
416 CAL_SABBREVMONTHNAME8,
417 CAL_SABBREVMONTHNAME9,
418 CAL_SABBREVMONTHNAME10,
419 CAL_SABBREVMONTHNAME11,
420 CAL_SABBREVMONTHNAME12,
421 CAL_SABBREVMONTHNAME13 // = 46
422 }
423
424
425 enum : CALTYPE {
426 CAL_GREGORIAN = 1,
427 CAL_GREGORIAN_US,
428 CAL_JAPAN,
429 CAL_TAIWAN,
430 CAL_KOREA,
431 CAL_HIJRI,
432 CAL_THAI,
433 CAL_HEBREW,
434 CAL_GREGORIAN_ME_FRENCH,
435 CAL_GREGORIAN_ARABIC,
436 CAL_GREGORIAN_XLIT_ENGLISH,
437 CAL_GREGORIAN_XLIT_FRENCH // = 12
438 }
439
440 enum : int {
441 CSTR_LESS_THAN = 1,
442 CSTR_EQUAL,
443 CSTR_GREATER_THAN
444 }
445
446 enum : DWORD {
447 LGRPID_INSTALLED = 1,
448 LGRPID_SUPPORTED
449 }
450
451 enum : LGRPID {
452 LGRPID_WESTERN_EUROPE = 1,
453 LGRPID_CENTRAL_EUROPE,
454 LGRPID_BALTIC,
455 LGRPID_GREEK,
456 LGRPID_CYRILLIC,
457 LGRPID_TURKISH,
458 LGRPID_JAPANESE,
459 LGRPID_KOREAN,
460 LGRPID_TRADITIONAL_CHINESE,
461 LGRPID_SIMPLIFIED_CHINESE,
462 LGRPID_THAI,
463 LGRPID_HEBREW,
464 LGRPID_ARABIC,
465 LGRPID_VIETNAMESE,
466 LGRPID_INDIC,
467 LGRPID_GEORGIAN,
468 LGRPID_ARMENIAN // = 17
469 }
470
471 static if (_WIN32_WINNT >= 0x500) {
472 enum : LCTYPE {
473 LOCALE_SYEARMONTH = 0x1006,
474 LOCALE_SENGCURRNAME = 0x1007,
475 LOCALE_SNATIVECURRNAME = 0x1008,
476 LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012,
477 LOCALE_SSORTNAME = 0x1013,
478 LOCALE_IDIGITSUBSTITUTION = 0x1014,
479 LOCALE_IPAPERSIZE = 0x100A
480 }
481
482 enum DWORD
483 DATE_YEARMONTH = 8,
484 DATE_LTRREADING = 16,
485 DATE_RTLREADING = 32;
486
487 enum DWORD MAP_EXPAND_LIGATURES = 0x2000;
488 enum DWORD WC_NO_BEST_FIT_CHARS = 1024;
489
490 enum : CALTYPE {
491 CAL_SYEARMONTH = 47,
492 CAL_ITWODIGITYEARMAX = 48,
493 CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE,
494 CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER,
495 CAL_USE_CP_ACP = LOCALE_USE_CP_ACP
496 }
497 } // (_WIN32_WINNT >= 0x500)
498
499 extern (Windows) {
500 alias BOOL function(LPSTR) CALINFO_ENUMPROCA;
501 alias BOOL function(LPWSTR) CALINFO_ENUMPROCW;
502 alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA;
503 alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW;
504 alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR)
505 LANGUAGEGROUP_ENUMPROCA;
506 alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR)
507 LANGUAGEGROUP_ENUMPROCW;
508 alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR)
509 LANGGROUPLOCALE_ENUMPROCA;
510 alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR)
511 LANGGROUPLOCALE_ENUMPROCW;
512 alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW;
513 alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA;
514 alias BOOL function(LPSTR) LOCALE_ENUMPROCA;
515 alias BOOL function(LPWSTR) LOCALE_ENUMPROCW;
516 alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA;
517 alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW;
518 alias BOOL function(LPSTR) DATEFMT_ENUMPROCA;
519 alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW;
520 alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA;
521 alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW;
522 alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA;
523 alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW;
524 alias BOOL function(GEOID) GEO_ENUMPROC;
525 }
526
527 enum NLS_FUNCTION {
528 COMPARE_STRING = 0x0001
529 }
530
531 enum SYSGEOCLASS {
532 GEOCLASS_NATION = 16,
533 GEOCLASS_REGION = 14
534 }
535
536 enum SYSGEOTYPE {
537 GEO_NATION = 0x0001,
538 GEO_LATITUDE = 0x0002,
539 GEO_LONGITUDE = 0x0003,
540 GEO_ISO2 = 0x0004,
541 GEO_ISO3 = 0x0005,
542 GEO_RFC1766 = 0x0006,
543 GEO_LCID = 0x0007,
544 GEO_FRIENDLYNAME = 0x0008,
545 GEO_OFFICIALNAME = 0x0009,
546 GEO_TIMEZONES = 0x000a,
547 GEO_OFFICIALLANGUAGES = 0x000a
548 }
549
550 struct CPINFO {
551 UINT MaxCharSize;
552 BYTE[MAX_DEFAULTCHAR] DefaultChar;
553 BYTE[MAX_LEADBYTES] LeadByte;
554 }
555 alias CPINFO* LPCPINFO;
556
557 struct CPINFOEXA {
558 UINT MaxCharSize;
559 BYTE[MAX_DEFAULTCHAR] DefaultChar;
560 BYTE[MAX_LEADBYTES] LeadByte;
561 WCHAR UnicodeDefaultChar = 0;
562 UINT CodePage;
563 CHAR[MAX_PATH] CodePageName = 0;
564 }
565 alias CPINFOEXA* LPCPINFOEXA;
566
567 struct CPINFOEXW {
568 UINT MaxCharSize;
569 BYTE[MAX_DEFAULTCHAR] DefaultChar;
570 BYTE[MAX_LEADBYTES] LeadByte;
571 WCHAR UnicodeDefaultChar = 0;
572 UINT CodePage;
573 WCHAR[MAX_PATH] CodePageName = 0;
574 }
575 alias CPINFOEXW* LPCPINFOEXW;
576
577 struct CURRENCYFMTA {
578 UINT NumDigits;
579 UINT LeadingZero;
580 UINT Grouping;
581 LPSTR lpDecimalSep;
582 LPSTR lpThousandSep;
583 UINT NegativeOrder;
584 UINT PositiveOrder;
585 LPSTR lpCurrencySymbol;
586 }
587 alias CURRENCYFMTA* LPCURRENCYFMTA;
588
589 struct CURRENCYFMTW {
590 UINT NumDigits;
591 UINT LeadingZero;
592 UINT Grouping;
593 LPWSTR lpDecimalSep;
594 LPWSTR lpThousandSep;
595 UINT NegativeOrder;
596 UINT PositiveOrder;
597 LPWSTR lpCurrencySymbol;
598 }
599 alias CURRENCYFMTW* LPCURRENCYFMTW;
600
601 struct NLSVERSIONINFO {
602 DWORD dwNLSVersionInfoSize;
603 DWORD dwNLSVersion;
604 DWORD dwDefinedVersion;
605 }
606 alias NLSVERSIONINFO* LPNLSVERSIONINFO;
607
608 struct NUMBERFMTA {
609 UINT NumDigits;
610 UINT LeadingZero;
611 UINT Grouping;
612 LPSTR lpDecimalSep;
613 LPSTR lpThousandSep;
614 UINT NegativeOrder;
615 }
616 alias NUMBERFMTA* LPNUMBERFMTA;
617
618 struct NUMBERFMTW {
619 UINT NumDigits;
620 UINT LeadingZero;
621 UINT Grouping;
622 LPWSTR lpDecimalSep;
623 LPWSTR lpThousandSep;
624 UINT NegativeOrder;
625 }
626 alias NUMBERFMTW* LPNUMBERFMTW;
627
628 extern (Windows) nothrow @nogc {
629 int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int);
630 int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int);
631 LCID ConvertDefaultLocale(LCID);
632 BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE);
633 BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE);
634 BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD);
635 BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD);
636 BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD);
637 BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD);
638 BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC);
639 BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD);
640 BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD);
641 BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD);
642 BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD);
643 int FoldStringA(DWORD, LPCSTR, int, LPSTR, int);
644 int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int);
645 UINT GetACP();
646 int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD);
647 int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD);
648 BOOL GetCPInfo(UINT, LPCPINFO);
649 BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA);
650 BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW);
651 int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int);
652 int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR,
653 int);
654 int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int);
655 int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int);
656 int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID);
657 int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID);
658 int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int);
659 int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int);
660 BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO);
661 int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int);
662 int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int);
663 UINT GetOEMCP();
664 BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD);
665 BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD);
666 BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD);
667 BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD);
668 LANGID GetSystemDefaultLangID();
669 LCID GetSystemDefaultLCID();
670 LCID GetThreadLocale();
671 int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int);
672 int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int);
673 LANGID GetUserDefaultLangID();
674 LCID GetUserDefaultLCID();
675 GEOID GetUserGeoID(GEOCLASS);
676 BOOL IsDBCSLeadByte(BYTE);
677 BOOL IsDBCSLeadByteEx(UINT, BYTE);
678 BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR,
679 int);
680 BOOL IsValidCodePage(UINT);
681 BOOL IsValidLocale(LCID, DWORD);
682 int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int);
683 int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int);
684 int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int);
685 int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR);
686 int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR);
687 BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR);
688 BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR);
689 BOOL SetThreadLocale(LCID);
690 BOOL SetUserGeoID(GEOID);
691 int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR,
692 LPBOOL);
693
694 static if (_WIN32_WINNT >= 0x410) {
695 BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE);
696 BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE);
697 BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD);
698 BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD);
699 BOOL IsValidLanguageGroup(LGRPID, DWORD);
700 }
701
702 static if (_WIN32_WINNT >= 0x500) {
703 LANGID GetSystemDefaultUILanguage();
704 LANGID GetUserDefaultUILanguage();
705
706 BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD,
707 LONG_PTR);
708 BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD,
709 LONG_PTR);
710 BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID,
711 DWORD, LONG_PTR);
712 BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID,
713 DWORD, LONG_PTR);
714 BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR);
715 BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR);
716 }
717 }
718
719 version (Unicode) {
720 alias CALINFO_ENUMPROCW CALINFO_ENUMPROC;
721 alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX;
722 alias LOCALE_ENUMPROCW LOCALE_ENUMPROC;
723 alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC;
724 alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC;
725 alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX;
726 alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC;
727 alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC;
728 alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC;
729 alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC;
730 alias CPINFOEXW CPINFOEX;
731 alias LPCPINFOEXW LPCPINFOEX;
732 alias CURRENCYFMTW CURRENCYFMT;
733 alias LPCURRENCYFMTW LPCURRENCYFMT;
734 alias NUMBERFMTW NUMBERFMT;
735 alias LPNUMBERFMTW LPNUMBERFMT;
736 alias CompareStringW CompareString;
737 alias EnumCalendarInfoW EnumCalendarInfo;
738 alias EnumSystemCodePagesW EnumSystemCodePages;
739 alias EnumSystemLocalesW EnumSystemLocales;
740 alias EnumTimeFormatsW EnumTimeFormats;
741 alias FoldStringW FoldString;
742 alias GetCalendarInfoW GetCalendarInfo;
743 alias GetCPInfoExW GetCPInfoEx;
744 alias GetCurrencyFormatW GetCurrencyFormat;
745 alias GetDateFormatW GetDateFormat;
746 alias GetGeoInfoW GetGeoInfo;
747 alias GetLocaleInfoW GetLocaleInfo;
748 alias GetNumberFormatW GetNumberFormat;
749 alias GetStringTypeExW GetStringTypeEx;
750 alias GetTimeFormatW GetTimeFormat;
751 alias LCMapStringW LCMapString;
752 alias SetCalendarInfoW SetCalendarInfo;
753 alias SetLocaleInfoW SetLocaleInfo;
754
755 static if (_WIN32_WINNT >= 0x410) {
756 alias EnumCalendarInfoExW EnumCalendarInfoEx;
757 alias EnumDateFormatsExW EnumDateFormatsEx;
758 }
759
760 static if (_WIN32_WINNT >= 0x500) {
761 alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups;
762 alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales;
763 alias EnumUILanguagesW EnumUILanguages;
764 }
765
766 } else {
767 alias CALINFO_ENUMPROCA CALINFO_ENUMPROC;
768 alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX;
769 alias LOCALE_ENUMPROCA LOCALE_ENUMPROC;
770 alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC;
771 alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC;
772 alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX;
773 alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC;
774 alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC;
775 alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC;
776 alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC;
777 alias CPINFOEXA CPINFOEX;
778 alias LPCPINFOEXA LPCPINFOEX;
779 alias CURRENCYFMTA CURRENCYFMT;
780 alias LPCURRENCYFMTA LPCURRENCYFMT;
781 alias NUMBERFMTA NUMBERFMT;
782 alias LPNUMBERFMTA LPNUMBERFMT;
783 alias CompareStringA CompareString;
784 alias EnumCalendarInfoA EnumCalendarInfo;
785 alias EnumSystemCodePagesA EnumSystemCodePages;
786 alias EnumSystemLocalesA EnumSystemLocales;
787 alias EnumTimeFormatsA EnumTimeFormats;
788 alias FoldStringA FoldString;
789 alias GetCalendarInfoA GetCalendarInfo;
790 alias GetCPInfoExA GetCPInfoEx;
791 alias GetCurrencyFormatA GetCurrencyFormat;
792 alias GetDateFormatA GetDateFormat;
793 alias GetGeoInfoA GetGeoInfo;
794 alias GetLocaleInfoA GetLocaleInfo;
795 alias GetNumberFormatA GetNumberFormat;
796 alias GetStringTypeExA GetStringTypeEx;
797 alias GetTimeFormatA GetTimeFormat;
798 alias LCMapStringA LCMapString;
799 alias SetCalendarInfoA SetCalendarInfo;
800 alias SetLocaleInfoA SetLocaleInfo;
801
802 static if (_WIN32_WINNT >= 0x410) {
803 alias EnumCalendarInfoExA EnumCalendarInfoEx;
804 alias EnumDateFormatsExA EnumDateFormatsEx;
805 }
806
807 static if (_WIN32_WINNT >= 0x500) {
808 alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups;
809 alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales;
810 alias EnumUILanguagesA EnumUILanguages;
811 }
812 }
813