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