1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::{c_char, c_int, c_long, c_short, c_void};
use shared::basetsd::{DWORD_PTR, INT_PTR, LONG_PTR, UINT_PTR};
#[cfg(target_pointer_width = "64")] use shared::basetsd::PINT_PTR;
use shared::guiddef::{IID, REFIID};
use shared::minwindef::{
    BOOL, BYTE, DWORD, HINSTANCE, HKEY, INT, LPARAM, LPINT, LRESULT, PUINT, UINT, ULONG, WORD,
    WPARAM,
};
use shared::windef::{
    COLORREF, HBITMAP, HBRUSH, HDC, HICON, HMENU, HPEN, HWND, LPCRECT, LPRECT, POINT, RECT, SIZE,
};
use um::commoncontrols::IImageList;
use um::minwinbase::SYSTEMTIME;
use um::winnt::{CHAR, LANGID, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PVOID, PWSTR, WCHAR};
use um::winuser::{
    CB_DELETESTRING, IMAGE_BITMAP, LPSCROLLINFO, LPTRACKMOUSEEVENT, NMHDR,
    WINDOWPOS, WM_USER,
};
use vc::vcruntime::size_t;
pub type HRESULT = c_long;
extern "system" {
    pub fn InitCommonControls();
}
//138
STRUCT!{struct INITCOMMONCONTROLSEX {
    dwSize: DWORD,
    dwICC: DWORD,
}}
pub type LPINITCOMMONCONTROLSEX = *mut INITCOMMONCONTROLSEX;
pub const ICC_LISTVIEW_CLASSES: DWORD = 0x1;
pub const ICC_TREEVIEW_CLASSES: DWORD = 0x2;
pub const ICC_BAR_CLASSES: DWORD = 0x4;
pub const ICC_TAB_CLASSES: DWORD = 0x8;
pub const ICC_UPDOWN_CLASS: DWORD = 0x10;
pub const ICC_PROGRESS_CLASS: DWORD = 0x20;
pub const ICC_HOTKEY_CLASS: DWORD = 0x40;
pub const ICC_ANIMATE_CLASS: DWORD = 0x80;
pub const ICC_WIN95_CLASSES: DWORD = 0xFF;
pub const ICC_DATE_CLASSES: DWORD = 0x100;
pub const ICC_USEREX_CLASSES: DWORD = 0x200;
pub const ICC_COOL_CLASSES: DWORD = 0x400;
pub const ICC_INTERNET_CLASSES: DWORD = 0x800;
pub const ICC_PAGESCROLLER_CLASS: DWORD = 0x1000;
pub const ICC_NATIVEFNTCTL_CLASS: DWORD = 0x2000;
pub const ICC_STANDARD_CLASSES: DWORD = 0x4000;
pub const ICC_LINK_CLASS: DWORD = 0x8000;
extern "system" {
    pub fn InitCommonControlsEx(
        lpInitCtrls: *const INITCOMMONCONTROLSEX,
    ) -> BOOL;
}
pub const ODT_HEADER: UINT = 100;
pub const ODT_TAB: UINT = 101;
pub const ODT_LISTVIEW: UINT = 102;
pub const LVM_FIRST: UINT = 0x1000;
pub const TV_FIRST: UINT = 0x1100;
pub const HDM_FIRST: UINT = 0x1200;
pub const TCM_FIRST: UINT = 0x1300;
pub const PGM_FIRST: UINT = 0x1400;
pub const ECM_FIRST: UINT = 0x1500;
pub const BCM_FIRST: UINT = 0x1600;
pub const CBM_FIRST: UINT = 0x1700;
pub const CCM_FIRST: UINT = 0x2000;
pub const CCM_LAST: UINT = CCM_FIRST + 0x200;
pub const CCM_SETBKCOLOR: UINT = CCM_FIRST + 1;
STRUCT!{struct COLORSCHEME {
    dwSize: DWORD,
    clrBtnHighlight: COLORREF,
    clrBtnShadow: COLORREF,
}}
pub type LPCOLORSCHEME = *mut COLORSCHEME;
pub const CCM_SETCOLORSCHEME: UINT = CCM_FIRST + 2;
pub const CCM_GETCOLORSCHEME: UINT = CCM_FIRST + 3;
pub const CCM_GETDROPTARGET: UINT = CCM_FIRST + 4;
pub const CCM_SETUNICODEFORMAT: UINT = CCM_FIRST + 5;
pub const CCM_GETUNICODEFORMAT: UINT = CCM_FIRST + 6;
pub const CCM_SETVERSION: UINT = CCM_FIRST + 7;
pub const CCM_GETVERSION: UINT = CCM_FIRST + 8;
pub const CCM_SETNOTIFYWINDOW: UINT = CCM_FIRST + 9;
pub const CCM_SETWINDOWTHEME: UINT = CCM_FIRST + 0xb;
pub const CCM_DPISCALE: UINT = CCM_FIRST + 0xc;
pub const INFOTIPSIZE: c_int = 1024;
pub const NM_OUTOFMEMORY: UINT = (NM_FIRST as i32 - 1) as u32;
pub const NM_CLICK: UINT = (NM_FIRST as i32 - 2) as u32;
pub const NM_DBLCLK: UINT = (NM_FIRST as i32 - 3) as u32;
pub const NM_RETURN: UINT = (NM_FIRST as i32 - 4) as u32;
pub const NM_RCLICK: UINT = (NM_FIRST as i32 - 5) as u32;
pub const NM_RDBLCLK: UINT = (NM_FIRST as i32 - 6) as u32;
pub const NM_SETFOCUS: UINT = (NM_FIRST as i32 - 7) as u32;
pub const NM_KILLFOCUS: UINT = (NM_FIRST as i32 - 8) as u32;
pub const NM_CUSTOMDRAW: UINT = (NM_FIRST as i32 - 12) as u32;
pub const NM_HOVER: UINT = (NM_FIRST as i32 - 13) as u32;
pub const NM_NCHITTEST: UINT = (NM_FIRST as i32 - 14) as u32;
pub const NM_KEYDOWN: UINT = (NM_FIRST as i32 - 15) as u32;
pub const NM_RELEASEDCAPTURE: UINT = (NM_FIRST as i32 - 16) as u32;
pub const NM_SETCURSOR: UINT = (NM_FIRST as i32 - 17) as u32;
pub const NM_CHAR: UINT = (NM_FIRST as i32 - 18) as u32;
pub const NM_TOOLTIPSCREATED: UINT = (NM_FIRST as i32 - 19) as u32;
pub const NM_LDOWN: UINT = (NM_FIRST as i32 - 20) as u32;
pub const NM_RDOWN: UINT = (NM_FIRST as i32 - 21) as u32;
pub const NM_THEMECHANGED: UINT = (NM_FIRST as i32 - 22) as u32;
pub const NM_FONTCHANGED: UINT = (NM_FIRST as i32 - 23) as u32;
pub const NM_CUSTOMTEXT: UINT = (NM_FIRST as i32 - 24) as u32;
pub const NM_TVSTATEIMAGECHANGING: UINT = (NM_FIRST as i32 - 24) as u32;
STRUCT!{struct NMTOOLTIPSCREATED {
    hdr: NMHDR,
    hwndToolTips: HWND,
}}
pub type LPNMTOOLTIPSCREATED = *mut NMTOOLTIPSCREATED;
STRUCT!{struct NMMOUSE {
    hdr: NMHDR,
    dwItemSpec: DWORD_PTR,
    dwItemData: DWORD_PTR,
    pt: POINT,
    dwHitInfo: LPARAM,
}}
pub type LPNMMOUSE = *mut NMMOUSE;
pub type NMCLICK = NMMOUSE;
pub type LPNMCLICK = LPNMMOUSE;
STRUCT!{struct NMOBJECTNOTIFY {
    hdr: NMHDR,
    iItem: c_int,
    piid: *const IID,
    pObject: *mut c_void,
    hResult: HRESULT,
    dwFlags: DWORD,
}}
pub type LPNMOBJECTNOTIFY = *mut NMOBJECTNOTIFY;
STRUCT!{struct NMKEY {
    hdr: NMHDR,
    nVKey: UINT,
    uFlags: UINT,
}}
pub type LPNMKEY = *mut NMKEY;
STRUCT!{struct NMCHAR {
    hdr: NMHDR,
    ch: UINT,
    dwItemPrev: DWORD,
    dwItemNext: DWORD,
}}
pub type LPNMCHAR = *mut NMCHAR;
STRUCT!{struct NMCUSTOMTEXT {
    hdr: NMHDR,
    hDC: HDC,
    lpString: LPCWSTR,
    nCount: c_int,
    lpRect: LPRECT,
    uFormat: UINT,
    fLink: BOOL,
}}
pub type LPNMCUSTOMTEXT = *mut NMCUSTOMTEXT;
pub const NM_FIRST: UINT = 0;
pub const NM_LAST: UINT = -99i32 as u32;
pub const LVN_FIRST: UINT = -100i32 as u32;
pub const LVN_LAST: UINT = -199i32 as u32;
pub const HDN_FIRST: UINT = -300i32 as u32;
pub const HDN_LAST: UINT = -399i32 as u32;
pub const TVN_FIRST: UINT = -400i32 as u32;
pub const TVN_LAST: UINT = -499i32 as u32;
pub const TTN_FIRST: UINT = -520i32 as u32;
pub const TTN_LAST: UINT = -549i32 as u32;
pub const TCN_FIRST: UINT = -550i32 as u32;
pub const TCN_LAST: UINT = -580i32 as u32;
pub const CDN_FIRST: UINT = -601i32 as u32;
pub const CDN_LAST: UINT = -699i32 as u32;
pub const TBN_FIRST: UINT = -700i32 as u32;
pub const TBN_LAST: UINT = -720i32 as u32;
pub const UDN_FIRST: UINT = -721i32 as u32;
pub const UDN_LAST: UINT = -729i32 as u32;
pub const DTN_FIRST: UINT = -740i32 as u32;
pub const DTN_LAST: UINT = -745i32 as u32;
pub const MCN_FIRST: UINT = -746i32 as u32;
pub const MCN_LAST: UINT = -752i32 as u32;
pub const DTN_FIRST2: UINT = -753i32 as u32;
pub const DTN_LAST2: UINT = -799i32 as u32;
pub const CBEN_FIRST: UINT = -800i32 as u32;
pub const CBEN_LAST: UINT = -830i32 as u32;
pub const RBN_FIRST: UINT = -831i32 as u32;
pub const RBN_LAST: UINT = -859i32 as u32;
pub const IPN_FIRST: UINT = -860i32 as u32;
pub const IPN_LAST: UINT = -879i32 as u32;
pub const SBN_FIRST: UINT = -880i32 as u32;
pub const SBN_LAST: UINT = -899i32 as u32;
pub const PGN_FIRST: UINT = -900i32 as u32;
pub const PGN_LAST: UINT = -950i32 as u32;
pub const WMN_FIRST: UINT = -1000i32 as u32;
pub const WMN_LAST: UINT = -1200i32 as u32;
pub const BCN_FIRST: UINT = -1250i32 as u32;
pub const BCN_LAST: UINT = -1350i32 as u32;
pub const TRBN_FIRST: UINT = -1501i32 as u32;
pub const TRBN_LAST: UINT = -1519i32 as u32;
pub const MSGF_COMMCTRL_BEGINDRAG: c_int = 0x4200;
pub const MSGF_COMMCTRL_SIZEHEADER: c_int = 0x4201;
pub const MSGF_COMMCTRL_DRAGSELECT: c_int = 0x4202;
pub const MSGF_COMMCTRL_TOOLBARCUST: c_int = 0x4203;
pub const CDRF_DODEFAULT: LRESULT = 0x00000000;
pub const CDRF_NEWFONT: LRESULT = 0x00000002;
pub const CDRF_SKIPDEFAULT: LRESULT = 0x00000004;
pub const CDRF_DOERASE: LRESULT = 0x00000008;
pub const CDRF_SKIPPOSTPAINT: LRESULT = 0x00000100;
pub const CDRF_NOTIFYPOSTPAINT: LRESULT = 0x00000010;
pub const CDRF_NOTIFYITEMDRAW: LRESULT = 0x00000020;
pub const CDRF_NOTIFYSUBITEMDRAW: LRESULT = 0x00000020;
pub const CDRF_NOTIFYPOSTERASE: LRESULT = 0x00000040;
pub const CDDS_PREPAINT: DWORD = 0x00000001;
pub const CDDS_POSTPAINT: DWORD = 0x00000002;
pub const CDDS_PREERASE: DWORD = 0x00000003;
pub const CDDS_POSTERASE: DWORD = 0x00000004;
pub const CDDS_ITEM: DWORD = 0x00010000;
pub const CDDS_ITEMPREPAINT: DWORD = CDDS_ITEM | CDDS_PREPAINT;
pub const CDDS_ITEMPOSTPAINT: DWORD = CDDS_ITEM | CDDS_POSTPAINT;
pub const CDDS_ITEMPREERASE: DWORD = CDDS_ITEM | CDDS_PREERASE;
pub const CDDS_ITEMPOSTERASE: DWORD = CDDS_ITEM | CDDS_POSTERASE;
pub const CDDS_SUBITEM: DWORD = 0x00020000;
pub const CDIS_SELECTED: UINT = 0x0001;
pub const CDIS_GRAYED: UINT = 0x0002;
pub const CDIS_DISABLED: UINT = 0x0004;
pub const CDIS_CHECKED: UINT = 0x0008;
pub const CDIS_FOCUS: UINT = 0x0010;
pub const CDIS_DEFAULT: UINT = 0x0020;
pub const CDIS_HOT: UINT = 0x0040;
pub const CDIS_MARKED: UINT = 0x0080;
pub const CDIS_INDETERMINATE: UINT = 0x0100;
pub const CDIS_SHOWKEYBOARDCUES: UINT = 0x0200;
pub const CDIS_NEARHOT: UINT = 0x0400;
pub const CDIS_OTHERSIDEHOT: UINT = 0x0800;
pub const CDIS_DROPHILITED: UINT = 0x1000;
STRUCT!{struct NMCUSTOMDRAW {
    hdr: NMHDR,
    dwDrawStage: DWORD,
    hdc: HDC,
    rc: RECT,
    dwItemSpec: DWORD_PTR,
    uItemState: UINT,
    lItemlParam: LPARAM,
}}
pub type LPNMCUSTOMDRAW = *mut NMCUSTOMDRAW;
STRUCT!{struct NMTTCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    uDrawFlags: UINT,
}}
pub type LPNMTTCUSTOMDRAW = *mut NMTTCUSTOMDRAW;
STRUCT!{struct NMCUSTOMSPLITRECTINFO {
    hdr: NMHDR,
    rcClient: RECT,
    rcButton: RECT,
    rcSplit: RECT,
}}
pub type LPNMCUSTOMSPLITRECTINFO = *mut NMCUSTOMSPLITRECTINFO;
pub const NM_GETCUSTOMSPLITRECT: UINT = BCN_FIRST + 0x0003;
pub const CLR_NONE: DWORD = 0xFFFFFFFF;
pub const CLR_DEFAULT: DWORD = 0xFF000000;
pub enum IMAGELIST {}
pub type HIMAGELIST = *mut IMAGELIST;
STRUCT!{struct IMAGELISTDRAWPARAMS {
    cbSize: DWORD,
    himl: HIMAGELIST,
    i: c_int,
    hdcDst: HDC,
    x: c_int,
    y: c_int,
    cx: c_int,
    cy: c_int,
    xBitmap: c_int,
    yBitmap: c_int,
    rgbBk: COLORREF,
    rgbFg: COLORREF,
    fStyle: UINT,
    dwRop: DWORD,
    fState: DWORD,
    Frame: DWORD,
    crEffect: COLORREF,
}}
pub type LPIMAGELISTDRAWPARAMS = *mut IMAGELISTDRAWPARAMS;
pub const ILC_MASK: UINT = 0x00000001;
pub const ILC_COLOR: UINT = 0x00000000;
pub const ILC_COLORDDB: UINT = 0x000000FE;
pub const ILC_COLOR4: UINT = 0x00000004;
pub const ILC_COLOR8: UINT = 0x00000008;
pub const ILC_COLOR16: UINT = 0x00000010;
pub const ILC_COLOR24: UINT = 0x00000018;
pub const ILC_COLOR32: UINT = 0x00000020;
pub const ILC_PALETTE: UINT = 0x00000800;
pub const ILC_MIRROR: UINT = 0x00002000;
pub const ILC_PERITEMMIRROR: UINT = 0x00008000;
pub const ILC_ORIGINALSIZE: UINT = 0x00010000;
pub const ILC_HIGHQUALITYSCALE: UINT = 0x00020000;
extern "system" {
    pub fn ImageList_Create(
        cx: c_int,
        cy: c_int,
        flags: UINT,
        cInitial: c_int,
        cGrow: c_int,
    ) -> HIMAGELIST;
    pub fn ImageList_Destroy(
        himl: HIMAGELIST,
    ) -> BOOL;
    pub fn ImageList_GetImageCount(
        himl: HIMAGELIST,
    ) -> c_int;
    pub fn ImageList_SetImageCount(
        himl: HIMAGELIST,
        uNewCount: UINT,
    ) -> BOOL;
    pub fn ImageList_Add(
        himl: HIMAGELIST,
        hbmImage: HBITMAP,
        hbmMask: HBITMAP,
    ) -> c_int;
    pub fn ImageList_ReplaceIcon(
        himl: HIMAGELIST,
        i: c_int,
        hicon: HICON,
    ) -> c_int;
    pub fn ImageList_SetBkColor(
        himl: HIMAGELIST,
        clrBk: COLORREF,
    ) -> COLORREF;
    pub fn ImageList_GetBkColor(
        himl: HIMAGELIST,
    ) -> COLORREF;
    pub fn ImageList_SetOverlayImage(
        himl: HIMAGELIST,
        iImage: c_int,
        iOverlay: c_int,
    ) -> BOOL;
}
#[inline]
pub unsafe fn ImageList_AddIcon(himl: HIMAGELIST, hicon: HICON) -> c_int {
    ImageList_ReplaceIcon(himl, -1, hicon)
}
pub const ILD_NORMAL: UINT = 0x00000000;
pub const ILD_TRANSPARENT: UINT = 0x00000001;
pub const ILD_MASK: UINT = 0x00000010;
pub const ILD_IMAGE: UINT = 0x00000020;
pub const ILD_ROP: UINT = 0x00000040;
pub const ILD_BLEND25: UINT = 0x00000002;
pub const ILD_BLEND50: UINT = 0x00000004;
pub const ILD_OVERLAYMASK: UINT = 0x00000F00;
#[inline]
pub fn INDEXTOOVERLAYMASK(i: UINT) -> UINT {
    i << 8
}
pub const ILD_PRESERVEALPHA: UINT = 0x00001000;
pub const ILD_SCALE: UINT = 0x00002000;
pub const ILD_DPISCALE: UINT = 0x00004000;
pub const ILD_ASYNC: UINT = 0x00008000;
pub const ILD_SELECTED: UINT = ILD_BLEND50;
pub const ILD_FOCUS: UINT = ILD_BLEND25;
pub const ILD_BLEND: UINT = ILD_BLEND50;
pub const CLR_HILIGHT: DWORD = CLR_DEFAULT;
pub const ILS_NORMAL: DWORD = 0x00000000;
pub const ILS_GLOW: DWORD = 0x00000001;
pub const ILS_SHADOW: DWORD = 0x00000002;
pub const ILS_SATURATE: DWORD = 0x00000004;
pub const ILS_ALPHA: DWORD = 0x00000008;
pub const ILGT_NORMAL: DWORD = 0x00000000;
pub const ILGT_ASYNC : DWORD = 0x00000001;
extern "system" {
    pub fn ImageList_Draw(
        himl: HIMAGELIST,
        i: c_int,
        hdcDst: HDC,
        x: c_int,
        y: c_int,
        fStyle: UINT,
    ) -> BOOL;
}
pub const HBITMAP_CALLBACK: HBITMAP = -1isize as HBITMAP;
extern "system" {
    pub fn ImageList_Replace(
        himl: HIMAGELIST,
        i: c_int,
        hbmImage: HBITMAP,
        hbmMask: HBITMAP,
    ) -> BOOL;
    pub fn ImageList_AddMasked(
        himl: HIMAGELIST,
        hbmImage: HBITMAP,
        crMask: COLORREF,
    ) -> c_int;
    pub fn ImageList_DrawEx(
        himl: HIMAGELIST,
        i: c_int,
        hdcDst: HDC,
        x: c_int,
        y: c_int,
        dx: c_int,
        dy: c_int,
        rgbBk: COLORREF,
        rgbFg: COLORREF,
        fStyle: UINT,
    ) -> BOOL;
    pub fn ImageList_DrawIndirect(
        pimldp: *mut IMAGELISTDRAWPARAMS,
    ) -> BOOL;
    pub fn ImageList_Remove(
        himl: HIMAGELIST,
        i: c_int,
    ) -> BOOL;
    pub fn ImageList_GetIcon(
        himl: HIMAGELIST,
        i: c_int,
        flags: UINT,
    ) -> HICON;
    pub fn ImageList_LoadImageA(
        hi: HINSTANCE,
        lpbmp: LPCSTR,
        cx: c_int,
        cGrow: c_int,
        crMask: COLORREF,
        uType: UINT,
        uFlags: UINT,
    ) -> HIMAGELIST;
    pub fn ImageList_LoadImageW(
        hi: HINSTANCE,
        lpbmp: LPCWSTR,
        cx: c_int,
        cGrow: c_int,
        crMask: COLORREF,
        uType: UINT,
        uFlags: UINT,
    ) -> HIMAGELIST;
}
pub const ILCF_MOVE: UINT = 0x00000000;
pub const ILCF_SWAP: UINT = 0x00000001;
extern "system" {
    pub fn ImageList_Copy(
        himlDst: HIMAGELIST,
        iDst: c_int,
        himlSrc: HIMAGELIST,
        iSrc: c_int,
        uFlags: UINT,
    ) -> BOOL;
    pub fn ImageList_BeginDrag(
        himlTrack: HIMAGELIST,
        iTrack: c_int,
        dxHotspot: c_int,
        dyHotspot: c_int,
    ) -> BOOL;
    pub fn ImageList_EndDrag();
    pub fn ImageList_DragEnter(
        hwndLock: HWND,
        x: c_int,
        y: c_int,
    ) -> BOOL;
    pub fn ImageList_DragLeave(
        hwndLock: HWND,
    ) -> BOOL;
    pub fn ImageList_DragMove(
        x: c_int,
        y: c_int,
    ) -> BOOL;
    pub fn ImageList_SetDragCursorImage(
        himlDrag: HIMAGELIST,
        iDrag: c_int,
        dxHotspot: c_int,
        dyHotspot: c_int,
    ) -> BOOL;
    pub fn ImageList_DragShowNolock(
        fShow: BOOL,
    ) -> BOOL;
    pub fn ImageList_GetDragImage(
        ppt: *mut POINT,
        pptHotspot: *mut POINT,
    ) -> HIMAGELIST;
}
#[inline]
pub unsafe fn ImageList_RemoveAll(himl: HIMAGELIST) -> BOOL {
    ImageList_Remove(himl, -1)
}
#[inline]
pub unsafe fn ImageList_ExtractIcon(_: HINSTANCE, himl: HIMAGELIST, i: c_int) -> HICON {
    ImageList_GetIcon(himl, i, 0)
}
#[inline]
pub unsafe fn ImageList_LoadBitmap(
    hi: HINSTANCE,
    lpbmp: LPCWSTR,
    cx: c_int,
    cGrow: c_int,
    crMask: COLORREF,
) -> HIMAGELIST {
    ImageList_LoadImageW(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
}
pub enum IStream {}
extern "system" {
    pub fn ImageList_Read(
        pstm: *mut IStream,
    ) -> HIMAGELIST;
    pub fn ImageList_Write(
        himl: HIMAGELIST,
        pstm: *mut IStream,
    ) -> BOOL;
}
pub const ILP_NORMAL: DWORD = 0;
pub const ILP_DOWNLEVEL: DWORD = 0;
extern "system" {
    pub fn ImageList_ReadEx(
        dwFlags: DWORD,
        pstm: *mut IStream,
        riid: REFIID,
        ppv: *mut PVOID,
    ) -> HRESULT;
    pub fn ImageList_WriteEx(
        himl: HIMAGELIST,
        dwFlags: DWORD,
        pstm: *mut IStream,
    ) -> HRESULT;
}
STRUCT!{struct IMAGEINFO {
    hbmImage: HBITMAP,
    hbmMask: HBITMAP,
    Unused1: c_int,
    Unused2: c_int,
    rcImage: RECT,
}}
pub type LPIMAGEINFO = *mut IMAGEINFO;
extern "system" {
    pub fn ImageList_GetIconSize(
        himl: HIMAGELIST,
        cx: *mut c_int,
        cy: *mut c_int,
    ) -> BOOL;
    pub fn ImageList_SetIconSize(
        himl: HIMAGELIST,
        cx: c_int,
        cy: c_int,
    ) -> BOOL;
    pub fn ImageList_GetImageInfo(
        himl: HIMAGELIST,
        i: c_int,
        pImageInfo: *mut IMAGEINFO,
    ) -> BOOL;
    pub fn ImageList_Merge(
        himl1: HIMAGELIST,
        i1: c_int,
        himl2: HIMAGELIST,
        i2: c_int,
        dx: c_int,
        dy: c_int,
    ) -> HIMAGELIST;
    pub fn ImageList_Duplicate(
        himl: HIMAGELIST,
    ) -> HIMAGELIST;
    pub fn HIMAGELIST_QueryInterface(
        himl: HIMAGELIST,
        riid: REFIID,
        ppv: *mut *mut c_void,
    ) -> HRESULT;
}
#[inline]
pub fn IImageListToHIMAGELIST(himl: *mut IImageList) -> HIMAGELIST {
    himl as HIMAGELIST
}
pub const WC_HEADER: &'static str = "SysHeader32";
pub const HDS_HORZ: DWORD = 0x0000;
pub const HDS_BUTTONS: DWORD = 0x0002;
pub const HDS_HOTTRACK: DWORD = 0x0004;
pub const HDS_HIDDEN: DWORD = 0x0008;
pub const HDS_DRAGDROP: DWORD = 0x0040;
pub const HDS_FULLDRAG: DWORD = 0x0080;
pub const HDS_FILTERBAR: DWORD = 0x0100;
pub const HDS_FLAT: DWORD = 0x0200;
pub const HDS_CHECKBOXES: DWORD = 0x0400;
pub const HDS_NOSIZING: DWORD = 0x0800;
pub const HDS_OVERFLOW: DWORD = 0x1000;
pub const HDFT_ISSTRING: UINT = 0x0000;
pub const HDFT_ISNUMBER: UINT = 0x0001;
pub const HDFT_ISDATE: UINT = 0x0002;
pub const HDFT_HASNOVALUE: UINT = 0x8000;
STRUCT!{struct HD_TEXTFILTERA {
    pszText: LPSTR,
    cchTextMax: INT,
}}
pub type LPHD_TEXTFILTERA = *mut HD_TEXTFILTERA;
STRUCT!{struct HD_TEXTFILTERW {
    pszText: LPWSTR,
    cchTextMax: INT,
}}
pub type LPHD_TEXTFILTERW = *mut HD_TEXTFILTERW;
STRUCT!{struct HDITEMA {
    mask: UINT,
    cxy: c_int,
    pszText: LPSTR,
    hbm: HBITMAP,
    cchTextMax: c_int,
    fmt: c_int,
    lParam: LPARAM,
    iImage: c_int,
    iOrder: c_int,
    _type: UINT,
    pvFilter: *mut c_void,
    state: UINT,
}}
pub type LPHDITEMA = *mut HDITEMA;
STRUCT!{struct HDITEMW {
    mask: UINT,
    cxy: c_int,
    pszText: LPWSTR,
    hbm: HBITMAP,
    cchTextMax: c_int,
    fmt: c_int,
    lParam: LPARAM,
    iImage: c_int,
    iOrder: c_int,
    _type: UINT,
    pvFilter: *mut c_void,
    state: UINT,
}}
pub type LPHDITEMW = *mut HDITEMW;
pub const HDI_WIDTH: UINT = 0x0001;
pub const HDI_HEIGHT: UINT = HDI_WIDTH;
pub const HDI_TEXT: UINT = 0x0002;
pub const HDI_FORMAT: UINT = 0x0004;
pub const HDI_LPARAM: UINT = 0x0008;
pub const HDI_BITMAP: UINT = 0x0010;
pub const HDI_IMAGE: UINT = 0x0020;
pub const HDI_DI_SETITEM: UINT = 0x0040;
pub const HDI_ORDER: UINT = 0x0080;
pub const HDI_FILTER: UINT = 0x0100;
pub const HDI_STATE: UINT = 0x0200;
pub const HDF_LEFT: c_int = 0x0000;
pub const HDF_RIGHT: c_int = 0x0001;
pub const HDF_CENTER: c_int = 0x0002;
pub const HDF_JUSTIFYMASK: c_int = 0x0003;
pub const HDF_RTLREADING: c_int = 0x0004;
pub const HDF_BITMAP: c_int = 0x2000;
pub const HDF_STRING: c_int = 0x4000;
pub const HDF_OWNERDRAW: c_int = 0x8000;
pub const HDF_IMAGE: c_int = 0x0800;
pub const HDF_BITMAP_ON_RIGHT: c_int = 0x1000;
pub const HDF_SORTUP: c_int = 0x0400;
pub const HDF_SORTDOWN: c_int = 0x0200;
pub const HDF_CHECKBOX: c_int = 0x0040;
pub const HDF_CHECKED: c_int = 0x0080;
pub const HDF_FIXEDWIDTH: c_int = 0x0100;
pub const HDF_SPLITBUTTON: c_int = 0x1000000;
pub const HDIS_FOCUSED: UINT = 0x00000001;
pub const HDM_GETITEMCOUNT: UINT = HDM_FIRST + 0;
pub const HDM_INSERTITEMA: UINT = HDM_FIRST + 1;
pub const HDM_INSERTITEMW: UINT = HDM_FIRST + 10;
pub const HDM_DELETEITEM: UINT = HDM_FIRST + 2;
pub const HDM_GETITEMA: UINT = HDM_FIRST + 3;
pub const HDM_GETITEMW: UINT = HDM_FIRST + 11;
pub const HDM_SETITEMA: UINT = HDM_FIRST + 4;
pub const HDM_SETITEMW: UINT = HDM_FIRST + 12;
STRUCT!{struct HDLAYOUT {
    prc: *mut RECT,
    pwpos: *mut WINDOWPOS,
}}
pub type LPHDLAYOUT = *mut HDLAYOUT;
pub const HDM_LAYOUT: UINT = HDM_FIRST + 5;
pub const HHT_NOWHERE: UINT = 0x0001;
pub const HHT_ONHEADER: UINT = 0x0002;
pub const HHT_ONDIVIDER: UINT = 0x0004;
pub const HHT_ONDIVOPEN: UINT = 0x0008;
pub const HHT_ONFILTER: UINT = 0x0010;
pub const HHT_ONFILTERBUTTON: UINT = 0x0020;
pub const HHT_ABOVE: UINT = 0x0100;
pub const HHT_BELOW: UINT = 0x0200;
pub const HHT_TORIGHT: UINT = 0x0400;
pub const HHT_TOLEFT: UINT = 0x0800;
pub const HHT_ONITEMSTATEICON: UINT = 0x1000;
pub const HHT_ONDROPDOWN: UINT = 0x2000;
pub const HHT_ONOVERFLOW: UINT = 0x4000;
STRUCT!{struct HDHITTESTINFO {
    pt: POINT,
    flags: UINT,
    iItem: c_int,
}}
pub type LPHDHITTESTINFO = *mut HDHITTESTINFO;
pub type HD_HITTESTINFO = HDHITTESTINFO;
pub const HDSIL_NORMAL: WPARAM = 0;
pub const HDSIL_STATE: WPARAM = 1;
pub const HDM_HITTEST: UINT = HDM_FIRST + 6;
pub const HDM_GETITEMRECT: UINT = HDM_FIRST + 7;
pub const HDM_SETIMAGELIST: UINT = HDM_FIRST + 8;
pub const HDM_GETIMAGELIST: UINT = HDM_FIRST + 9;
pub const HDM_ORDERTOINDEX: UINT = HDM_FIRST + 15;
pub const HDM_CREATEDRAGIMAGE: UINT = HDM_FIRST + 16;
pub const HDM_GETORDERARRAY: UINT = HDM_FIRST + 17;
pub const HDM_SETORDERARRAY: UINT = HDM_FIRST + 18;
pub const HDM_SETHOTDIVIDER: UINT = HDM_FIRST + 19;
pub const HDM_SETBITMAPMARGIN: UINT = HDM_FIRST + 20;
pub const HDM_GETBITMAPMARGIN: UINT = HDM_FIRST + 21;
pub const HDM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const HDM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const HDM_SETFILTERCHANGETIMEOUT: UINT = HDM_FIRST + 22;
pub const HDM_EDITFILTER: UINT = HDM_FIRST + 23;
pub const HDM_CLEARFILTER: UINT = HDM_FIRST + 24;
pub const HDM_GETITEMDROPDOWNRECT: UINT = HDM_FIRST + 25;
pub const HDM_GETOVERFLOWRECT: UINT = HDM_FIRST + 26;
pub const HDM_GETFOCUSEDITEM: UINT = HDM_FIRST + 27;
pub const HDM_SETFOCUSEDITEM: UINT = HDM_FIRST + 28;
pub const HDN_ITEMCHANGINGA: UINT = HDN_FIRST - 0;
pub const HDN_ITEMCHANGINGW: UINT = HDN_FIRST - 20;
pub const HDN_ITEMCHANGEDA: UINT = HDN_FIRST - 1;
pub const HDN_ITEMCHANGEDW: UINT = HDN_FIRST - 21;
pub const HDN_ITEMCLICKA: UINT = HDN_FIRST - 2;
pub const HDN_ITEMCLICKW: UINT = HDN_FIRST - 22;
pub const HDN_ITEMDBLCLICKA: UINT = HDN_FIRST - 3;
pub const HDN_ITEMDBLCLICKW: UINT = HDN_FIRST - 23;
pub const HDN_DIVIDERDBLCLICKA: UINT = HDN_FIRST - 5;
pub const HDN_DIVIDERDBLCLICKW: UINT = HDN_FIRST - 25;
pub const HDN_BEGINTRACKA: UINT = HDN_FIRST - 6;
pub const HDN_BEGINTRACKW: UINT = HDN_FIRST - 26;
pub const HDN_ENDTRACKA: UINT = HDN_FIRST - 7;
pub const HDN_ENDTRACKW: UINT = HDN_FIRST - 27;
pub const HDN_TRACKA: UINT = HDN_FIRST - 8;
pub const HDN_TRACKW: UINT = HDN_FIRST - 28;
pub const HDN_GETDISPINFOA: UINT = HDN_FIRST - 9;
pub const HDN_GETDISPINFOW: UINT = HDN_FIRST - 29;
pub const HDN_BEGINDRAG: UINT = HDN_FIRST - 10;
pub const HDN_ENDDRAG: UINT = HDN_FIRST - 11;
pub const HDN_FILTERCHANGE: UINT = HDN_FIRST - 12;
pub const HDN_FILTERBTNCLICK: UINT = HDN_FIRST - 13;
pub const HDN_BEGINFILTEREDIT: UINT = HDN_FIRST - 14;
pub const HDN_ENDFILTEREDIT: UINT = HDN_FIRST - 15;
pub const HDN_ITEMSTATEICONCLICK: UINT = HDN_FIRST - 16;
pub const HDN_ITEMKEYDOWN: UINT = HDN_FIRST - 17;
pub const HDN_DROPDOWN: UINT = HDN_FIRST - 18;
pub const HDN_OVERFLOWCLICK: UINT = HDN_FIRST - 19;
STRUCT!{struct NMHEADERA {
    hdr: NMHDR,
    iItem: c_int,
    iButton: c_int,
    pitem: *mut HDITEMA,
}}
pub type LPNMHEADERA = *mut NMHEADERA;
pub type HD_NOTIFYA = NMHEADERA;
STRUCT!{struct NMHEADERW {
    hdr: NMHDR,
    iItem: c_int,
    iButton: c_int,
    pitem: *mut HDITEMW,
}}
pub type LPNMHEADERW = *mut NMHEADERW;
pub type HD_NOTIFYW = NMHEADERW;
STRUCT!{struct NMHDDISPINFOW {
    hdr: NMHDR,
    iItem: c_int,
    mask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPNMHDDISPINFOW = *mut NMHDDISPINFOW;
STRUCT!{struct NMHDDISPINFOA {
    hdr: NMHDR,
    iItem: c_int,
    mask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPNMHDDISPINFOA = *mut NMHDDISPINFOA;
STRUCT!{struct NMHDFILTERBTNCLICK {
    hdr: NMHDR,
    iItem: INT,
    rc: RECT,
}}
pub type LPNMHDFILTERBTNCLICK = *mut NMHDFILTERBTNCLICK;
pub const TOOLBARCLASSNAME: &'static str = "ToolbarWindow32";
#[cfg(target_pointer_width = "32")]
STRUCT!{struct TBBUTTON {
    iBitmap: c_int,
    idCommand: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    bReserved: [BYTE; 2],
    dwData: DWORD_PTR,
    iString: INT_PTR,
}}
#[cfg(target_pointer_width = "64")]
STRUCT!{struct TBBUTTON {
    iBitmap: c_int,
    idCommand: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    bReserved: [BYTE; 6],
    dwData: DWORD_PTR,
    iString: INT_PTR,
}}
pub type PTBBUTTON = *mut TBBUTTON;
pub type LPTBBUTTON = *mut TBBUTTON;
pub type LPCTBBUTTON = *const TBBUTTON;
STRUCT!{struct COLORMAP {
    from: COLORREF,
    to: COLORREF,
}}
pub type LPCOLORMAP = *mut COLORMAP;
extern "system" {
    pub fn CreateToolbarEx(
        hwnd: HWND,
        ws: DWORD,
        wID: UINT,
        nBitmaps: c_int,
        hBMInst: HINSTANCE,
        wBMID: UINT_PTR,
        lpButtons: LPCTBBUTTON,
        iNumButtons: c_int,
        dxButton: c_int,
        dyButton: c_int,
        dxBitmap: c_int,
        dyBitmap: c_int,
        uStructSize: UINT,
    ) -> HWND;
    pub fn CreateMappedBitmap(
        hInstance: HINSTANCE,
        idBitmap: INT_PTR,
        wFlags: UINT,
        lpColorMap: LPCOLORMAP,
        iNumMaps: c_int,
    ) -> HBITMAP;
}
pub const CMB_MASKED: UINT = 0x02;
pub const TBSTATE_CHECKED: BYTE = 0x01;
pub const TBSTATE_PRESSED: BYTE = 0x02;
pub const TBSTATE_ENABLED: BYTE = 0x04;
pub const TBSTATE_HIDDEN: BYTE = 0x08;
pub const TBSTATE_INDETERMINATE: BYTE = 0x10;
pub const TBSTATE_WRAP: BYTE = 0x20;
pub const TBSTATE_ELLIPSES: BYTE = 0x40;
pub const TBSTATE_MARKED: BYTE = 0x80;
pub const TBSTYLE_BUTTON: DWORD = 0x0000;
pub const TBSTYLE_SEP: DWORD = 0x0001;
pub const TBSTYLE_CHECK: DWORD = 0x0002;
pub const TBSTYLE_GROUP: DWORD = 0x0004;
pub const TBSTYLE_CHECKGROUP: DWORD = TBSTYLE_GROUP | TBSTYLE_CHECK;
pub const TBSTYLE_DROPDOWN: DWORD = 0x0008;
pub const TBSTYLE_AUTOSIZE: DWORD = 0x0010;
pub const TBSTYLE_NOPREFIX: DWORD = 0x0020;
pub const TBSTYLE_TOOLTIPS: DWORD = 0x0100;
pub const TBSTYLE_WRAPABLE: DWORD = 0x0200;
pub const TBSTYLE_ALTDRAG: DWORD = 0x0400;
pub const TBSTYLE_FLAT: DWORD = 0x0800;
pub const TBSTYLE_LIST: DWORD = 0x1000;
pub const TBSTYLE_CUSTOMERASE: DWORD = 0x2000;
pub const TBSTYLE_REGISTERDROP: DWORD = 0x4000;
pub const TBSTYLE_TRANSPARENT: DWORD = 0x8000;
pub const TBSTYLE_EX_DRAWDDARROWS: DWORD = 0x00000001;
pub const BTNS_BUTTON: DWORD = TBSTYLE_BUTTON;
pub const BTNS_SEP: DWORD = TBSTYLE_SEP;
pub const BTNS_CHECK: DWORD = TBSTYLE_CHECK;
pub const BTNS_GROUP: DWORD = TBSTYLE_GROUP;
pub const BTNS_CHECKGROUP: DWORD = TBSTYLE_CHECKGROUP;
pub const BTNS_DROPDOWN: DWORD = TBSTYLE_DROPDOWN;
pub const BTNS_AUTOSIZE: DWORD = TBSTYLE_AUTOSIZE;
pub const BTNS_NOPREFIX: DWORD = TBSTYLE_NOPREFIX;
pub const BTNS_SHOWTEXT: DWORD = 0x0040;
pub const BTNS_WHOLEDROPDOWN: DWORD = 0x0080;
pub const TBSTYLE_EX_MIXEDBUTTONS: DWORD = 0x00000008;
pub const TBSTYLE_EX_HIDECLIPPEDBUTTONS: DWORD = 0x00000010;
pub const TBSTYLE_EX_MULTICOLUMN: DWORD = 0x00000002;
pub const TBSTYLE_EX_VERTICAL: DWORD = 0x00000004;
pub const TBSTYLE_EX_DOUBLEBUFFER: DWORD = 0x00000080;
STRUCT!{struct NMTBCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    hbrMonoDither: HBRUSH,
    hbrLines: HBRUSH,
    hpenLines: HPEN,
    clrText: COLORREF,
    clrMark: COLORREF,
    clrTextHighlight: COLORREF,
    clrBtnFace: COLORREF,
    clrBtnHighlight: COLORREF,
    clrHighlightHotTrack: COLORREF,
    rcText: RECT,
    nStringBkMode: c_int,
    nHLStringBkMode: c_int,
    iListGap: c_int,
}}
pub type LPNMTBCUSTOMDRAW = *mut NMTBCUSTOMDRAW;
pub const TBCDRF_NOEDGES: LRESULT = 0x00010000;
pub const TBCDRF_HILITEHOTTRACK: LRESULT = 0x00020000;
pub const TBCDRF_NOOFFSET: LRESULT = 0x00040000;
pub const TBCDRF_NOMARK: LRESULT = 0x00080000;
pub const TBCDRF_NOETCHEDEFFECT: LRESULT = 0x00100000;
pub const TBCDRF_BLENDICON: LRESULT = 0x00200000;
pub const TBCDRF_NOBACKGROUND: LRESULT = 0x00400000;
pub const TBCDRF_USECDCOLORS: LRESULT = 0x00800000;
pub const TB_ENABLEBUTTON: UINT = WM_USER + 1;
pub const TB_CHECKBUTTON: UINT = WM_USER + 2;
pub const TB_PRESSBUTTON: UINT = WM_USER + 3;
pub const TB_HIDEBUTTON: UINT = WM_USER + 4;
pub const TB_INDETERMINATE: UINT = WM_USER + 5;
pub const TB_MARKBUTTON: UINT = WM_USER + 6;
pub const TB_ISBUTTONENABLED: UINT = WM_USER + 9;
pub const TB_ISBUTTONCHECKED: UINT = WM_USER + 10;
pub const TB_ISBUTTONPRESSED: UINT = WM_USER + 11;
pub const TB_ISBUTTONHIDDEN: UINT = WM_USER + 12;
pub const TB_ISBUTTONINDETERMINATE: UINT = WM_USER + 13;
pub const TB_ISBUTTONHIGHLIGHTED: UINT = WM_USER + 14;
pub const TB_SETSTATE: UINT = WM_USER + 17;
pub const TB_GETSTATE: UINT = WM_USER + 18;
pub const TB_ADDBITMAP: UINT = WM_USER + 19;
STRUCT!{struct TBADDBITMAP {
    hInst: HINSTANCE,
    nID: UINT_PTR,
}}
pub type LPTBADDBITMAP = *mut TBADDBITMAP;
pub const HINST_COMMCTRL: HINSTANCE = -1isize as HINSTANCE;
pub const IDB_STD_SMALL_COLOR: WPARAM = 0;
pub const IDB_STD_LARGE_COLOR: WPARAM = 1;
pub const IDB_VIEW_SMALL_COLOR: WPARAM = 4;
pub const IDB_VIEW_LARGE_COLOR: WPARAM = 5;
pub const IDB_HIST_SMALL_COLOR: WPARAM = 8;
pub const IDB_HIST_LARGE_COLOR: WPARAM = 9;
pub const IDB_HIST_NORMAL: WPARAM = 12;
pub const IDB_HIST_HOT: WPARAM = 13;
pub const IDB_HIST_DISABLED: WPARAM = 14;
pub const IDB_HIST_PRESSED: WPARAM = 15;
pub const STD_CUT: c_int = 0;
pub const STD_COPY: c_int = 1;
pub const STD_PASTE: c_int = 2;
pub const STD_UNDO: c_int = 3;
pub const STD_REDOW: c_int = 4;
pub const STD_DELETE: c_int = 5;
pub const STD_FILENEW: c_int = 6;
pub const STD_FILEOPEN: c_int = 7;
pub const STD_FILESAVE: c_int = 8;
pub const STD_PRINTPRE: c_int = 9;
pub const STD_PROPERTIES: c_int = 10;
pub const STD_HELP: c_int = 11;
pub const STD_FIND: c_int = 12;
pub const STD_REPLACE: c_int = 13;
pub const STD_PRINT: c_int = 14;
pub const VIEW_LARGEICONS: c_int = 0;
pub const VIEW_SMALLICONS: c_int = 1;
pub const VIEW_LIST: c_int = 2;
pub const VIEW_DETAILS: c_int = 3;
pub const VIEW_SORTNAME: c_int = 4;
pub const VIEW_SORTSIZE: c_int = 5;
pub const VIEW_SORTDATE: c_int = 6;
pub const VIEW_SORTTYPE: c_int = 7;
pub const VIEW_PARENTFOLDER: c_int = 8;
pub const VIEW_NETCONNECT: c_int = 9;
pub const VIEW_NETDISCONNECT: c_int = 10;
pub const VIEW_NEWFOLDER: c_int = 11;
pub const VIEW_VIEWMENU: c_int = 12;
pub const HIST_BACK: c_int = 0;
pub const HIST_FORWARD: c_int = 1;
pub const HIST_FAVORITES: c_int = 2;
pub const HIST_ADDTOFAVORITES: c_int = 3;
pub const HIST_VIEWTREE: c_int = 4;
pub const TB_ADDBUTTONSA: UINT = WM_USER + 20;
pub const TB_INSERTBUTTONA: UINT = WM_USER + 21;
pub const TB_DELETEBUTTON: UINT = WM_USER + 22;
pub const TB_GETBUTTON: UINT = WM_USER + 23;
pub const TB_BUTTONCOUNT: UINT = WM_USER + 24;
pub const TB_COMMANDTOINDEX: UINT = WM_USER + 25;
STRUCT!{struct TBSAVEPARAMSA {
    hkr: HKEY,
    pszSubKey: LPCSTR,
    pszValueName: LPCSTR,
}}
pub type LPTBSAVEPARAMSA = *mut TBSAVEPARAMSA;
STRUCT!{struct TBSAVEPARAMSW {
    hkr: HKEY,
    pszSubKey: LPCWSTR,
    pszValueName: LPCWSTR,
}}
pub type LPTBSAVEPARAMSW = *mut TBSAVEPARAMSW;
pub const TB_SAVERESTOREA: UINT = WM_USER + 26;
pub const TB_SAVERESTOREW: UINT = WM_USER + 76;
pub const TB_CUSTOMIZE: UINT = WM_USER + 27;
pub const TB_ADDSTRINGA: UINT = WM_USER + 28;
pub const TB_ADDSTRINGW: UINT = WM_USER + 77;
pub const TB_GETITEMRECT: UINT = WM_USER + 29;
pub const TB_BUTTONSTRUCTSIZE: UINT = WM_USER + 30;
pub const TB_SETBUTTONSIZE: UINT = WM_USER + 31;
pub const TB_SETBITMAPSIZE: UINT = WM_USER + 32;
pub const TB_AUTOSIZE: UINT = WM_USER + 33;
pub const TB_GETTOOLTIPS: UINT = WM_USER + 35;
pub const TB_SETTOOLTIPS: UINT = WM_USER + 36;
pub const TB_SETPARENT: UINT = WM_USER + 37;
pub const TB_SETROWS: UINT = WM_USER + 39;
pub const TB_GETROWS: UINT = WM_USER + 40;
pub const TB_SETCMDID: UINT = WM_USER + 42;
pub const TB_CHANGEBITMAP: UINT = WM_USER + 43;
pub const TB_GETBITMAP: UINT = WM_USER + 44;
pub const TB_GETBUTTONTEXTA: UINT = WM_USER + 45;
pub const TB_GETBUTTONTEXTW: UINT = WM_USER + 75;
pub const TB_REPLACEBITMAP: UINT = WM_USER + 46;
pub const TB_SETINDENT: UINT = WM_USER + 47;
pub const TB_SETIMAGELIST: UINT = WM_USER + 48;
pub const TB_GETIMAGELIST: UINT = WM_USER + 49;
pub const TB_LOADIMAGES: UINT = WM_USER + 50;
pub const TB_GETRECT: UINT = WM_USER + 51;
pub const TB_SETHOTIMAGELIST: UINT = WM_USER + 52;
pub const TB_GETHOTIMAGELIST: UINT = WM_USER + 53;
pub const TB_SETDISABLEDIMAGELIST: UINT = WM_USER + 54;
pub const TB_GETDISABLEDIMAGELIST: UINT = WM_USER + 55;
pub const TB_SETSTYLE: UINT = WM_USER + 56;
pub const TB_GETSTYLE: UINT = WM_USER + 57;
pub const TB_GETBUTTONSIZE: UINT = WM_USER + 58;
pub const TB_SETBUTTONWIDTH: UINT = WM_USER + 59;
pub const TB_SETMAXTEXTROWS: UINT = WM_USER + 60;
pub const TB_GETTEXTROWS: UINT = WM_USER + 61;
pub const TB_GETOBJECT: UINT = WM_USER + 62;
pub const TB_GETHOTITEM: UINT = WM_USER + 71;
pub const TB_SETHOTITEM: UINT = WM_USER + 72;
pub const TB_SETANCHORHIGHLIGHT: UINT = WM_USER + 73;
pub const TB_GETANCHORHIGHLIGHT: UINT = WM_USER + 74;
pub const TB_MAPACCELERATORA: UINT = WM_USER + 78;
STRUCT!{struct TBINSERTMARK {
    iButton: c_int,
    dwFlags: DWORD,
}}
pub type LPTBINSERTMARK = *mut TBINSERTMARK;
pub const TBIMHT_AFTER: DWORD = 0x00000001;
pub const TBIMHT_BACKGROUND: DWORD = 0x00000002;
pub const TB_GETINSERTMARK: UINT = WM_USER + 79;
pub const TB_SETINSERTMARK: UINT = WM_USER + 80;
pub const TB_INSERTMARKHITTEST: UINT = WM_USER + 81;
pub const TB_MOVEBUTTON: UINT = WM_USER + 82;
pub const TB_GETMAXSIZE: UINT = WM_USER + 83;
pub const TB_SETEXTENDEDSTYLE: UINT = WM_USER + 84;
pub const TB_GETEXTENDEDSTYLE: UINT = WM_USER + 85;
pub const TB_GETPADDING: UINT = WM_USER + 86;
pub const TB_SETPADDING: UINT = WM_USER + 87;
pub const TB_SETINSERTMARKCOLOR: UINT = WM_USER + 88;
pub const TB_GETINSERTMARKCOLOR: UINT = WM_USER + 89;
pub const TB_SETCOLORSCHEME: UINT = CCM_SETCOLORSCHEME;
pub const TB_GETCOLORSCHEME: UINT = CCM_GETCOLORSCHEME;
pub const TB_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TB_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TB_MAPACCELERATORW: UINT = WM_USER + 90;
STRUCT!{struct TBREPLACEBITMAP {
    hInstOld: HINSTANCE,
    nIDOld: UINT_PTR,
    hInstNew: HINSTANCE,
    nIDNew: UINT_PTR,
    nButtons: c_int,
}}
pub type LPTBREPLACEBITMAP = *mut TBREPLACEBITMAP;
pub const TBBF_LARGE: DWORD = 0x0001;
pub const TB_GETBITMAPFLAGS: UINT = WM_USER + 41;
pub const TBIF_IMAGE: DWORD = 0x00000001;
pub const TBIF_TEXT: DWORD = 0x00000002;
pub const TBIF_STATE: DWORD = 0x00000004;
pub const TBIF_STYLE: DWORD = 0x00000008;
pub const TBIF_LPARAM: DWORD = 0x00000010;
pub const TBIF_COMMAND: DWORD = 0x00000020;
pub const TBIF_SIZE: DWORD = 0x00000040;
pub const TBIF_BYINDEX: DWORD = 0x80000000;
STRUCT!{struct TBBUTTONINFOA {
    cbSize: UINT,
    dwMask: DWORD,
    idCommand: c_int,
    iImage: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    cx: WORD,
    lParam: DWORD_PTR,
    pszText: LPSTR,
    cchText: c_int,
}}
pub type LPTBBUTTONINFOA = *mut TBBUTTONINFOA;
STRUCT!{struct TBBUTTONINFOW {
    cbSize: UINT,
    dwMask: DWORD,
    idCommand: c_int,
    iImage: c_int,
    fsState: BYTE,
    fsStyle: BYTE,
    cx: WORD,
    lParam: DWORD_PTR,
    pszText: LPWSTR,
    cchText: c_int,
}}
pub type LPTBBUTTONINFOW = *mut TBBUTTONINFOW;
pub const TB_GETBUTTONINFOW: UINT = WM_USER + 63;
pub const TB_SETBUTTONINFOW: UINT = WM_USER + 64;
pub const TB_GETBUTTONINFOA: UINT = WM_USER + 65;
pub const TB_SETBUTTONINFOA: UINT = WM_USER + 66;
pub const TB_INSERTBUTTONW: UINT = WM_USER + 67;
pub const TB_ADDBUTTONSW: UINT = WM_USER + 68;
pub const TB_HITTEST: UINT = WM_USER + 69;
pub const TB_SETDRAWTEXTFLAGS: UINT = WM_USER + 70;
pub const TB_GETSTRINGW: UINT = WM_USER + 91;
pub const TB_GETSTRINGA: UINT = WM_USER + 92;
pub const TB_SETBOUNDINGSIZE: UINT = WM_USER + 93;
pub const TB_SETHOTITEM2: UINT = WM_USER + 94;
pub const TB_HASACCELERATOR: UINT = WM_USER + 95;
pub const TB_SETLISTGAP: UINT = WM_USER + 96;
pub const TB_GETIMAGELISTCOUNT: UINT = WM_USER + 98;
pub const TB_GETIDEALSIZE: UINT = WM_USER + 99;
pub const TBMF_PAD: DWORD = 0x00000001;
pub const TBMF_BARPAD: DWORD = 0x00000002;
pub const TBMF_BUTTONSPACING: DWORD = 0x00000004;
STRUCT!{struct TBMETRICS {
    cbSize: UINT,
    dwMask: DWORD,
    cxPad: c_int,
    cyPad: c_int,
    cxBarPad: c_int,
    cyBarPad: c_int,
    cxButtonSpacing: c_int,
    cyButtonSpacing: c_int,
}}
pub type LPTBMETRICS = *mut TBMETRICS;
pub const TB_GETMETRICS: UINT = WM_USER + 101;
pub const TB_SETMETRICS: UINT = WM_USER + 102;
pub const TB_GETITEMDROPDOWNRECT: UINT = WM_USER + 103;
pub const TB_SETPRESSEDIMAGELIST: UINT = WM_USER + 104;
pub const TB_GETPRESSEDIMAGELIST: UINT = WM_USER + 105;
pub const TB_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub const TBN_GETBUTTONINFOA: UINT = TBN_FIRST - 0;
pub const TBN_BEGINDRAG: UINT = TBN_FIRST - 1;
pub const TBN_ENDDRAG: UINT = TBN_FIRST - 2;
pub const TBN_BEGINADJUST: UINT = TBN_FIRST - 3;
pub const TBN_ENDADJUST: UINT = TBN_FIRST - 4;
pub const TBN_RESET: UINT = TBN_FIRST - 5;
pub const TBN_QUERYINSERT: UINT = TBN_FIRST - 6;
pub const TBN_QUERYDELETE: UINT = TBN_FIRST - 7;
pub const TBN_TOOLBARCHANGE: UINT = TBN_FIRST - 8;
pub const TBN_CUSTHELP: UINT = TBN_FIRST - 9;
pub const TBN_DROPDOWN: UINT = TBN_FIRST - 10;
pub const TBN_GETOBJECT: UINT = TBN_FIRST - 12;
STRUCT!{struct NMTBHOTITEM {
    hdr: NMHDR,
    idOld: c_int,
    idNew: c_int,
    dwFlags: DWORD,
}}
pub type LPNMTBHOTITEM = *mut NMTBHOTITEM;
pub const HICF_OTHER: DWORD = 0x00000000;
pub const HICF_MOUSE: DWORD = 0x00000001;
pub const HICF_ARROWKEYS: DWORD = 0x00000002;
pub const HICF_ACCELERATOR: DWORD = 0x00000004;
pub const HICF_DUPACCEL: DWORD = 0x00000008;
pub const HICF_ENTERING: DWORD = 0x00000010;
pub const HICF_LEAVING: DWORD = 0x00000020;
pub const HICF_RESELECT: DWORD = 0x00000040;
pub const HICF_LMOUSE: DWORD = 0x00000080;
pub const HICF_TOGGLEDROPDOWN: DWORD = 0x00000100;
pub const TBN_HOTITEMCHANGE: UINT = TBN_FIRST - 13;
pub const TBN_DRAGOUT: UINT = TBN_FIRST - 14;
pub const TBN_DELETINGBUTTON: UINT = TBN_FIRST - 15;
pub const TBN_GETDISPINFOA: UINT = TBN_FIRST - 16;
pub const TBN_GETDISPINFOW: UINT = TBN_FIRST - 17;
pub const TBN_GETINFOTIPA: UINT = TBN_FIRST - 18;
pub const TBN_GETINFOTIPW: UINT = TBN_FIRST - 19;
pub const TBN_GETBUTTONINFOW: UINT = TBN_FIRST - 20;
pub const TBN_RESTORE: UINT = TBN_FIRST - 21;
pub const TBN_SAVE: UINT = TBN_FIRST - 22;
pub const TBN_INITCUSTOMIZE: UINT = TBN_FIRST - 23;
pub const TBNRF_HIDEHELP: LRESULT = 0x00000001;
pub const TBNRF_ENDCUSTOMIZE: LRESULT = 0x00000002;
pub const TBN_WRAPHOTITEM: UINT = TBN_FIRST - 24;
pub const TBN_DUPACCELERATOR: UINT = TBN_FIRST - 25;
pub const TBN_WRAPACCELERATOR: UINT = TBN_FIRST - 26;
pub const TBN_DRAGOVER: UINT = TBN_FIRST - 27;
pub const TBN_MAPACCELERATOR: UINT = TBN_FIRST - 28;
STRUCT!{struct NMTBSAVE {
    hdr: NMHDR,
    pData: *mut DWORD,
    pCurrent: *mut DWORD,
    cbData: UINT,
    iItem: c_int,
    cButtons: c_int,
    tbButton: TBBUTTON,
}}
pub type LPNMTBSAVE = *mut NMTBSAVE;
STRUCT!{struct NMTBRESTORE {
    hdr: NMHDR,
    pData: *mut DWORD,
    pCurrent: *mut DWORD,
    cbData: UINT,
    iItem: c_int,
    cButtons: c_int,
    cbBytesPerRecord: c_int,
    tbButton: TBBUTTON,
}}
pub type LPNMTBRESTORE = *mut NMTBRESTORE;
STRUCT!{struct NMTBGETINFOTIPA {
    hdr: NMHDR,
    pszText: LPSTR,
    cchTextMax: c_int,
    iItem: c_int,
    lParal: LPARAM,
}}
pub type LPNMTBGETINFOTIPA = *mut NMTBGETINFOTIPA;
STRUCT!{struct NMTBGETINFOTIPW {
    hdr: NMHDR,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iItem: c_int,
    lParal: LPARAM,
}}
pub type LPNMTBGETINFOTIPW = *mut NMTBGETINFOTIPW;
pub const TBNF_IMAGE: DWORD = 0x00000001;
pub const TBNF_TEXT: DWORD = 0x00000002;
pub const TBNF_DI_SETITEM: DWORD = 0x10000000;
STRUCT!{struct NMTBDISPINFOA {
    hdr: NMHDR,
    dwMask: DWORD,
    idCommand: c_int,
    lParam: DWORD_PTR,
    iImage: c_int,
    pszText: LPSTR,
    cchText: c_int,
}}
pub type LPNMTBDISPINFOA = *mut NMTBDISPINFOA;
STRUCT!{struct NMTBDISPINFOW {
    hdr: NMHDR,
    dwMask: DWORD,
    idCommand: c_int,
    lParam: DWORD_PTR,
    iImage: c_int,
    pszText: LPWSTR,
    cchText: c_int,
}}
pub type LPNMTBDISPINFOW = *mut NMTBDISPINFOW;
pub const TBDDRET_DEFAULT: LRESULT = 0;
pub const TBDDRET_NODEFAULT: LRESULT = 1;
pub const TBDDRET_TREATPRESSED: LRESULT = 2;
pub type TBNOTIFYA = NMTOOLBARA;
pub type TBNOTIFYW = NMTOOLBARW;
pub type LPTBNOTIFYA = LPNMTOOLBARA;
pub type LPTBNOTIFYW = LPNMTOOLBARW;
STRUCT!{struct NMTOOLBARA {
    hdr: NMHDR,
    iItem: c_int,
    tbButton: TBBUTTON,
    cchText: c_int,
    pszText: LPSTR,
    rcButton: RECT,
}}
pub type LPNMTOOLBARA = *mut NMTOOLBARA;
STRUCT!{struct NMTOOLBARW {
    hdr: NMHDR,
    iItem: c_int,
    tbButton: TBBUTTON,
    cchText: c_int,
    pszText: LPWSTR,
    rcButton: RECT,
}}
pub type LPNMTOOLBARW = *mut NMTOOLBARW;
pub const REBARCLASSNAME: &'static str = "ReBarWindow32";
pub const RBIM_IMAGELIST: UINT = 0x00000001;
pub const RBS_TOOLTIPS: DWORD = 0x00000100;
pub const RBS_VARHEIGHT: DWORD = 0x00000200;
pub const RBS_BANDBORDERS: DWORD = 0x00000400;
pub const RBS_FIXEDORDER: DWORD = 0x00000800;
pub const RBS_REGISTERDROP: DWORD = 0x00001000;
pub const RBS_AUTOSIZE: DWORD = 0x00002000;
pub const RBS_VERTICALGRIPPER: DWORD = 0x00004000;
pub const RBS_DBLCLKTOGGLE: DWORD = 0x00008000;
STRUCT!{struct REBARINFO {
    cbSize: UINT,
    fMask: UINT,
    himl: HIMAGELIST,
}}
pub type LPREBARINFO = *mut REBARINFO;
pub const RBBS_BREAK: UINT = 0x00000001;
pub const RBBS_FIXEDSIZE: UINT = 0x00000002;
pub const RBBS_CHILDEDGE: UINT = 0x00000004;
pub const RBBS_HIDDEN: UINT = 0x00000008;
pub const RBBS_NOVERT: UINT = 0x00000010;
pub const RBBS_FIXEDBMP: UINT = 0x00000020;
pub const RBBS_VARIABLEHEIGHT: UINT = 0x00000040;
pub const RBBS_GRIPPERALWAYS: UINT = 0x00000080;
pub const RBBS_NOGRIPPER: UINT = 0x00000100;
pub const RBBS_USECHEVRON: UINT = 0x00000200;
pub const RBBS_HIDETITLE: UINT = 0x00000400;
pub const RBBS_TOPALIGN: UINT = 0x00000800;
pub const RBBIM_STYLE: UINT = 0x00000001;
pub const RBBIM_COLORS: UINT = 0x00000002;
pub const RBBIM_TEXT: UINT = 0x00000004;
pub const RBBIM_IMAGE: UINT = 0x00000008;
pub const RBBIM_CHILD: UINT = 0x00000010;
pub const RBBIM_CHILDSIZE: UINT = 0x00000020;
pub const RBBIM_SIZE: UINT = 0x00000040;
pub const RBBIM_BACKGROUND: UINT = 0x00000080;
pub const RBBIM_ID: UINT = 0x00000100;
pub const RBBIM_IDEALSIZE: UINT = 0x00000200;
pub const RBBIM_LPARAM: UINT = 0x00000400;
pub const RBBIM_HEADERSIZE: UINT = 0x00000800;
pub const RBBIM_CHEVRONLOCATION: UINT = 0x00001000;
pub const RBBIM_CHEVRONSTATE: UINT = 0x00002000;
STRUCT!{struct REBARBANDINFOA {
    cbSize: UINT,
    fMask: UINT,
    fStyle: UINT,
    clrFore: COLORREF,
    clrBack: COLORREF,
    lpText: LPSTR,
    cch: UINT,
    iImage: c_int,
    hwndChild: HWND,
    cxMinChild: UINT,
    cyMinChild: UINT,
    cx: UINT,
    hbmBack: HBITMAP,
    wID: UINT,
    cyChild: UINT,
    cyMaxChild: UINT,
    cyIntegral: UINT,
    cxIdeal: UINT,
    lParam: LPARAM,
    cxHeader: UINT,
    rcChevronLocation: RECT,
    uChevronState: UINT,
}}
pub type LPREBARBANDINFOA = *mut REBARBANDINFOA;
pub type LPCREBARBANDINFOA = *const REBARBANDINFOA;
STRUCT!{struct REBARBANDINFOW {
    cbSize: UINT,
    fMask: UINT,
    fStyle: UINT,
    clrFore: COLORREF,
    clrBack: COLORREF,
    lpText: LPWSTR,
    cch: UINT,
    iImage: c_int,
    hwndChild: HWND,
    cxMinChild: UINT,
    cyMinChild: UINT,
    cx: UINT,
    hbmBack: HBITMAP,
    wID: UINT,
    cyChild: UINT,
    cyMaxChild: UINT,
    cyIntegral: UINT,
    cxIdeal: UINT,
    lParam: LPARAM,
    cxHeader: UINT,
    rcChevronLocation: RECT,
    uChevronState: UINT,
}}
pub type LPREBARBANDINFOW = *mut REBARBANDINFOW;
pub type LPCREBARBANDINFOW = *const REBARBANDINFOW;
pub const RB_INSERTBANDA: UINT = WM_USER + 1;
pub const RB_DELETEBAND: UINT = WM_USER + 2;
pub const RB_GETBARINFO: UINT = WM_USER + 3;
pub const RB_SETBARINFO: UINT = WM_USER + 4;
pub const RB_SETBANDINFOA: UINT = WM_USER + 6;
pub const RB_SETPARENT: UINT = WM_USER + 7;
pub const RB_HITTEST: UINT = WM_USER + 8;
pub const RB_GETRECT: UINT = WM_USER + 9;
pub const RB_INSERTBANDW: UINT = WM_USER + 10;
pub const RB_SETBANDINFOW: UINT = WM_USER + 11;
pub const RB_GETBANDCOUNT: UINT = WM_USER + 12;
pub const RB_GETROWCOUNT: UINT = WM_USER + 13;
pub const RB_GETROWHEIGHT: UINT = WM_USER + 14;
pub const RB_IDTOINDEX: UINT = WM_USER + 16;
pub const RB_GETTOOLTIPS: UINT = WM_USER + 17;
pub const RB_SETTOOLTIPS: UINT = WM_USER + 18;
pub const RB_SETBKCOLOR: UINT = WM_USER + 19;
pub const RB_GETBKCOLOR: UINT = WM_USER + 20;
pub const RB_SETTEXTCOLOR: UINT = WM_USER + 21;
pub const RB_GETTEXTCOLOR: UINT = WM_USER + 22;
pub const RBSTR_CHANGERECT: WPARAM = 0x0001;
pub const RB_SIZETORECT: UINT = WM_USER + 23;
pub const RB_SETCOLORSCHEME: UINT = CCM_SETCOLORSCHEME;
pub const RB_GETCOLORSCHEME: UINT = CCM_GETCOLORSCHEME;
pub const RB_BEGINDRAG: UINT = WM_USER + 24;
pub const RB_ENDDRAG: UINT = WM_USER + 25;
pub const RB_DRAGMOVE: UINT = WM_USER + 26;
pub const RB_GETBARHEIGHT: UINT = WM_USER + 27;
pub const RB_GETBANDINFOW: UINT = WM_USER + 28;
pub const RB_GETBANDINFOA: UINT = WM_USER + 29;
pub const RB_MINIMIZEBAND: UINT = WM_USER + 30;
pub const RB_MAXIMIZEBAND: UINT = WM_USER + 31;
pub const RB_GETDROPTARGET: UINT = CCM_GETDROPTARGET;
pub const RB_GETBANDBORDERS: UINT = WM_USER + 34;
pub const RB_SHOWBAND: UINT = WM_USER + 35;
pub const RB_SETPALETTE: UINT = WM_USER + 37;
pub const RB_GETPALETTE: UINT = WM_USER + 38;
pub const RB_MOVEBAND: UINT = WM_USER + 39;
pub const RB_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const RB_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const RB_GETBANDMARGINS: UINT = WM_USER + 40;
pub const RB_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub const RB_SETEXTENDEDSTYLE: UINT = WM_USER + 41;
pub const RB_GETEXTENDEDSTYLE: UINT = WM_USER + 42;
pub const RB_PUSHCHEVRON: UINT = WM_USER + 43;
pub const RB_SETBANDWIDTH: UINT = WM_USER + 44;
pub const RBN_HEIGHTCHANGE: UINT = RBN_FIRST - 0;
pub const RBN_GETOBJECT: UINT = RBN_FIRST - 1;
pub const RBN_LAYOUTCHANGED: UINT = RBN_FIRST - 2;
pub const RBN_AUTOSIZE: UINT = RBN_FIRST - 3;
pub const RBN_BEGINDRAG: UINT = RBN_FIRST - 4;
pub const RBN_ENDDRAG: UINT = RBN_FIRST - 5;
pub const RBN_DELETINGBAND: UINT = RBN_FIRST - 6;
pub const RBN_DELETEDBAND: UINT = RBN_FIRST - 7;
pub const RBN_CHILDSIZE: UINT = RBN_FIRST - 8;
pub const RBN_CHEVRONPUSHED: UINT = RBN_FIRST - 10;
pub const RBN_SPLITTERDRAG: UINT = RBN_FIRST - 11;
pub const RBN_MINMAX: UINT = RBN_FIRST - 21;
pub const RBN_AUTOBREAK: UINT = RBN_FIRST - 22;
STRUCT!{struct NMREBARCHILDSIZE {
    hdr: NMHDR,
    uBand: UINT,
    wID: UINT,
    rcChild: RECT,
    rcBand: RECT,
}}
pub type LPNMREBARCHILDSIZE = *mut NMREBARCHILDSIZE;
STRUCT!{struct NMREBAR {
    hdr: NMHDR,
    dwMask: DWORD,
    uBand: UINT,
    fStyle: UINT,
    wID: UINT,
    lParam: LPARAM,
}}
pub type LPNMREBAR = *mut NMREBAR;
pub const RBNM_ID: DWORD = 0x00000001;
pub const RBNM_STYLE: DWORD = 0x00000002;
pub const RBNM_LPARAM: DWORD = 0x00000004;
STRUCT!{struct NMRBAUTOSIZE {
    hdr: NMHDR,
    fChanged: BOOL,
    rcTarget: RECT,
    rcActual: RECT,
}}
pub type LPNMRBAUTOSIZE = *mut NMRBAUTOSIZE;
STRUCT!{struct NMREBARCHEVRON {
    hdr: NMHDR,
    uBand: UINT,
    wID: UINT,
    lParam: LPARAM,
    rc: RECT,
    lParamNM: LPARAM,
}}
pub type LPNMREBARCHEVRON = *mut NMREBARCHEVRON;
STRUCT!{struct NMREBARSPLITTER {
    hdr: NMHDR,
    rcSizing: RECT,
}}
pub type LPNMREBARSPLITTER = *mut NMREBARSPLITTER;
pub const RBAB_AUTOSIZE: UINT = 0x0001;
pub const RBAB_ADDBAND: UINT = 0x0002;
STRUCT!{struct NMREBARAUTOBREAK {
    hdr: NMHDR,
    uBand: UINT,
    wID: UINT,
    lParam: LPARAM,
    uMsg: UINT,
    fStyleCurrent: UINT,
    fAutoBreak: UINT,
}}
pub type LPNMREBARAUTOBREAK = *mut NMREBARAUTOBREAK;
pub const RBHT_NOWHERE: UINT = 0x0001;
pub const RBHT_CAPTION: UINT = 0x0002;
pub const RBHT_CLIENT: UINT = 0x0003;
pub const RBHT_GRABBER: UINT = 0x0004;
pub const RBHT_CHEVRON: UINT = 0x0008;
pub const RBHT_SPLITTER: UINT = 0x0010;
STRUCT!{struct RBHITTESTINFO {
    pt: POINT,
    flags: UINT,
    iBand: c_int,
}}
pub type LPRBHITTESTINFO = *mut RBHITTESTINFO;
pub const TOOLTIPS_CLASS: &'static str = "tooltips_class32";
pub type LPTOOLINFOA = LPTTTOOLINFOA;
pub type LPTOOLINFOW = LPTTTOOLINFOW;
pub type TOOLINFOA = TTTOOLINFOA;
pub type TOOLINFOW = TTTOOLINFOW;
STRUCT!{struct TTTOOLINFOA {
    cbSize: UINT,
    uFlags: UINT,
    hwnd: HWND,
    uId: UINT_PTR,
    rect: RECT,
    hinst: HINSTANCE,
    lpszText: LPSTR,
    lParam: LPARAM,
    lpReserved: *mut c_void,
}}
pub type PTTTOOLINFOA = *mut TTTOOLINFOA;
pub type LPTTTOOLINFOA = *mut TTTOOLINFOA;
STRUCT!{struct TTTOOLINFOW {
    cbSize: UINT,
    uFlags: UINT,
    hwnd: HWND,
    uId: UINT_PTR,
    rect: RECT,
    hinst: HINSTANCE,
    lpszText: LPWSTR,
    lParam: LPARAM,
    lpReserved: *mut c_void,
}}
pub type PTTTOOLINFOW = *mut TTTOOLINFOW;
pub type LPTTTOOLINFOW = *mut TTTOOLINFOW;
pub const TTS_ALWAYSTIP: DWORD = 0x01;
pub const TTS_NOPREFIX: DWORD = 0x02;
pub const TTS_NOANIMATE: DWORD = 0x10;
pub const TTS_NOFADE: DWORD = 0x20;
pub const TTS_BALLOON: DWORD = 0x40;
pub const TTS_CLOSE: DWORD = 0x80;
pub const TTS_USEVISUALSTYLE: DWORD = 0x100;
pub const TTF_IDISHWND: UINT = 0x0001;
pub const TTF_CENTERTIP: UINT = 0x0002;
pub const TTF_RTLREADING: UINT = 0x0004;
pub const TTF_SUBCLASS: UINT = 0x0010;
pub const TTF_TRACK: UINT = 0x0020;
pub const TTF_ABSOLUTE: UINT = 0x0080;
pub const TTF_TRANSPARENT: UINT = 0x0100;
pub const TTF_PARSELINKS: UINT = 0x1000;
pub const TTF_DI_SETITEM: UINT = 0x8000;
pub const TTDT_AUTOMATIC: WPARAM = 0;
pub const TTDT_RESHOW: WPARAM = 1;
pub const TTDT_AUTOPOP: WPARAM = 2;
pub const TTDT_INITIAL: WPARAM = 3;
pub const TTI_NONE: WPARAM = 0;
pub const TTI_INFO: WPARAM = 1;
pub const TTI_WARNING: WPARAM = 2;
pub const TTI_ERROR: WPARAM = 3;
pub const TTI_INFO_LARGE: WPARAM = 4;
pub const TTI_WARNING_LARGE: WPARAM = 5;
pub const TTI_ERROR_LARGE: WPARAM = 6;
pub const TTM_ACTIVATE: UINT = WM_USER + 1;
pub const TTM_SETDELAYTIME: UINT = WM_USER + 3;
pub const TTM_ADDTOOLA: UINT = WM_USER + 4;
pub const TTM_ADDTOOLW: UINT = WM_USER + 50;
pub const TTM_DELTOOLA: UINT = WM_USER + 5;
pub const TTM_DELTOOLW: UINT = WM_USER + 51;
pub const TTM_NEWTOOLRECTA: UINT = WM_USER + 6;
pub const TTM_NEWTOOLRECTW: UINT = WM_USER + 52;
pub const TTM_RELAYEVENT: UINT = WM_USER + 7;
pub const TTM_GETTOOLINFOA: UINT = WM_USER + 8;
pub const TTM_GETTOOLINFOW: UINT = WM_USER + 53;
pub const TTM_SETTOOLINFOA: UINT = WM_USER + 9;
pub const TTM_SETTOOLINFOW: UINT = WM_USER + 54;
pub const TTM_HITTESTA: UINT = WM_USER + 10;
pub const TTM_HITTESTW: UINT = WM_USER + 55;
pub const TTM_GETTEXTA: UINT = WM_USER + 11;
pub const TTM_GETTEXTW: UINT = WM_USER + 56;
pub const TTM_UPDATETIPTEXTA: UINT = WM_USER + 12;
pub const TTM_UPDATETIPTEXTW: UINT = WM_USER + 57;
pub const TTM_GETTOOLCOUNT: UINT = WM_USER + 13;
pub const TTM_ENUMTOOLSA: UINT = WM_USER + 14;
pub const TTM_ENUMTOOLSW: UINT = WM_USER + 58;
pub const TTM_GETCURRENTTOOLA: UINT = WM_USER + 15;
pub const TTM_GETCURRENTTOOLW: UINT = WM_USER + 59;
pub const TTM_WINDOWFROMPOINT: UINT = WM_USER + 16;
pub const TTM_TRACKACTIVATE: UINT = WM_USER + 17;
pub const TTM_TRACKPOSITION: UINT = WM_USER + 18;
pub const TTM_SETTIPBKCOLOR: UINT = WM_USER + 19;
pub const TTM_SETTIPTEXTCOLOR: UINT = WM_USER + 20;
pub const TTM_GETDELAYTIME: UINT = WM_USER + 21;
pub const TTM_GETTIPBKCOLOR: UINT = WM_USER + 22;
pub const TTM_GETTIPTEXTCOLOR: UINT = WM_USER + 23;
pub const TTM_SETMAXTIPWIDTH: UINT = WM_USER + 24;
pub const TTM_GETMAXTIPWIDTH: UINT = WM_USER + 25;
pub const TTM_SETMARGIN: UINT = WM_USER + 26;
pub const TTM_GETMARGIN: UINT = WM_USER + 27;
pub const TTM_POP: UINT = WM_USER + 28;
pub const TTM_UPDATE: UINT = WM_USER + 29;
pub const TTM_GETBUBBLESIZE: UINT = WM_USER + 30;
pub const TTM_ADJUSTRECT: UINT = WM_USER + 31;
pub const TTM_SETTITLEA: UINT = WM_USER + 32;
pub const TTM_SETTITLEW: UINT = WM_USER + 33;
pub const TTM_POPUP: UINT = WM_USER + 34;
pub const TTM_GETTITLE: UINT = WM_USER + 35;
STRUCT!{struct TTGETTITLE {
    dwSize: DWORD,
    uTitleBitmap: UINT,
    cch: UINT,
    pszTitle: *mut WCHAR,
}}
pub type LPTTGETTITLE = *mut TTGETTITLE;
pub const TTM_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub type LPHITTESTINFOW = LPTTHITTESTINFOW;
pub type LPHITTESTINFOA = LPTTHITTESTINFOA;
STRUCT!{struct TTHITTESTINFOA {
    hwnd: HWND,
    pt: POINT,
    ti: TTTOOLINFOA,
}}
pub type LPTTHITTESTINFOA = *mut TTHITTESTINFOA;
STRUCT!{struct TTHITTESTINFOW {
    hwnd: HWND,
    pt: POINT,
    ti: TTTOOLINFOW,
}}
pub type LPTTHITTESTINFOW = *mut TTHITTESTINFOW;
pub const TTN_GETDISPINFOA: UINT = TTN_FIRST - 0;
pub const TTN_GETDISPINFOW: UINT = TTN_FIRST - 10;
pub const TTN_SHOW: UINT = TTN_FIRST - 1;
pub const TTN_POP: UINT = TTN_FIRST - 2;
pub const TTN_LINKCLICK: UINT = TTN_FIRST - 3;
pub const TTN_NEEDTEXTA: UINT = TTN_GETDISPINFOA;
pub const TTN_NEEDTEXTW: UINT = TTN_GETDISPINFOW;
pub type TOOLTIPTEXTW = NMTTDISPINFOW;
pub type TOOLTIPTEXTA = NMTTDISPINFOA;
pub type LPTOOLTIPTEXTA = LPNMTTDISPINFOA;
pub type LPTOOLTIPTEXTW = LPNMTTDISPINFOW;
STRUCT!{struct NMTTDISPINFOA {
    hdr: NMHDR,
    lpszText: LPSTR,
    szText: [c_char; 80],
    hinst: HINSTANCE,
    uFlags: UINT,
    lParam: LPARAM,
}}
pub type LPNMTTDISPINFOA = *mut NMTTDISPINFOA;
STRUCT!{struct NMTTDISPINFOW {
    hdr: NMHDR,
    lpszText: LPWSTR,
    szText: [WCHAR; 80],
    hinst: HINSTANCE,
    uFlags: UINT,
    lParam: LPARAM,
}}
pub type LPNMTTDISPINFOW = *mut NMTTDISPINFOW;
pub const SBARS_SIZEGRIP: DWORD = 0x0100;
pub const SBARS_TOOLTIPS: DWORD = 0x0800;
pub const SBT_TOOLTIPS: DWORD = 0x0800;
extern "system" {
    pub fn DrawStatusTextA(
        hDC: HDC,
        lprc: LPCRECT,
        pszText: LPCSTR,
        uFlags: UINT,
    );
    pub fn DrawStatusTextW(
        hDC: HDC,
        lprc: LPCRECT,
        pszText: LPCWSTR,
        uFlags: UINT,
    );
    pub fn CreateStatusWindowA(
        style: LONG,
        lpszText: LPCSTR,
        hwndParent: HWND,
        wID: UINT,
    ) -> HWND;
    pub fn CreateStatusWindowW(
        style: LONG,
        lpszText: LPCWSTR,
        hwndParent: HWND,
        wID: UINT,
    ) -> HWND;
}
pub const STATUSCLASSNAME: &'static str = "msctls_statusbar32";
pub const SB_SETTEXTA: UINT = WM_USER + 1;
pub const SB_SETTEXTW: UINT = WM_USER + 11;
pub const SB_GETTEXTA: UINT = WM_USER + 2;
pub const SB_GETTEXTW: UINT = WM_USER + 13;
pub const SB_GETTEXTLENGTHA: UINT = WM_USER + 3;
pub const SB_GETTEXTLENGTHW: UINT = WM_USER + 12;
pub const SB_SETPARTS: UINT = WM_USER + 4;
pub const SB_GETPARTS: UINT = WM_USER + 6;
pub const SB_GETBORDERS: UINT = WM_USER + 7;
pub const SB_SETMINHEIGHT: UINT = WM_USER + 8;
pub const SB_SIMPLE: UINT = WM_USER + 9;
pub const SB_GETRECT: UINT = WM_USER + 10;
pub const SB_ISSIMPLE: UINT = WM_USER + 14;
pub const SB_SETICON: UINT = WM_USER + 15;
pub const SB_SETTIPTEXTA: UINT = WM_USER + 16;
pub const SB_SETTIPTEXTW: UINT = WM_USER + 17;
pub const SB_GETTIPTEXTA: UINT = WM_USER + 18;
pub const SB_GETTIPTEXTW: UINT = WM_USER + 19;
pub const SB_GETICON: UINT = WM_USER + 20;
pub const SB_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const SB_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const SBT_OWNERDRAW: WPARAM = 0x1000;
pub const SBT_NOBORDERS: WPARAM = 0x0100;
pub const SBT_POPOUT: WPARAM = 0x0200;
pub const SBT_RTLREADING: WPARAM = 0x0400;
pub const SBT_NOTABPARSING: WPARAM = 0x0800;
pub const SB_SETBKCOLOR: UINT = CCM_SETBKCOLOR;
pub const SBN_SIMPLEMODECHANGE: UINT = SBN_FIRST - 0;
pub const SB_SIMPLEID: WPARAM = 0x00ff;
extern "system" {
    pub fn MenuHelp(
        uMsg: UINT,
        wParam: WPARAM,
        lParam: LPARAM,
        hMainMenu: HMENU,
        hInst: HINSTANCE,
        hwndStatus: HWND,
        lpwIDs: *mut UINT,
    );
    pub fn ShowHideMenuCtl(
        hWnd: HWND,
        uFlags: UINT_PTR,
        lpInfo: LPINT,
    ) -> BOOL;
    pub fn GetEffectiveClientRect(
        hWnd: HWND,
        lprc: LPRECT,
        lpInfo: *const INT,
    );
}
pub const TRACKBAR_CLASS: &'static str = "msctls_trackbar32";
pub const TBS_AUTOTICKS: DWORD = 0x0001;
pub const TBS_VERT: DWORD = 0x0002;
pub const TBS_HORZ: DWORD = 0x0000;
pub const TBS_TOP: DWORD = 0x0004;
pub const TBS_BOTTOM: DWORD = 0x0000;
pub const TBS_LEFT: DWORD = 0x0004;
pub const TBS_RIGHT: DWORD = 0x0000;
pub const TBS_BOTH: DWORD = 0x0008;
pub const TBS_NOTICKS: DWORD = 0x0010;
pub const TBS_ENABLESELRANGE: DWORD = 0x0020;
pub const TBS_FIXEDLENGTH: DWORD = 0x0040;
pub const TBS_NOTHUMB: DWORD = 0x0080;
pub const TBS_TOOLTIPS: DWORD = 0x0100;
pub const TBS_REVERSED: DWORD = 0x0200;
pub const TBS_DOWNISLEFT: DWORD = 0x0400;
pub const TBS_NOTIFYBEFOREMOVE: DWORD = 0x0800;
pub const TBS_TRANSPARENTBKGND: DWORD = 0x1000;
pub const TBM_GETPOS: UINT = WM_USER;
pub const TBM_GETRANGEMIN: UINT = WM_USER + 1;
pub const TBM_GETRANGEMAX: UINT = WM_USER + 2;
pub const TBM_GETTIC: UINT = WM_USER + 3;
pub const TBM_SETTIC: UINT = WM_USER + 4;
pub const TBM_SETPOS: UINT = WM_USER + 5;
pub const TBM_SETRANGE: UINT = WM_USER + 6;
pub const TBM_SETRANGEMIN: UINT = WM_USER + 7;
pub const TBM_SETRANGEMAX: UINT = WM_USER + 8;
pub const TBM_CLEARTICS: UINT = WM_USER + 9;
pub const TBM_SETSEL: UINT = WM_USER + 10;
pub const TBM_SETSELSTART: UINT = WM_USER + 11;
pub const TBM_SETSELEND: UINT = WM_USER + 12;
pub const TBM_GETPTICS: UINT = WM_USER + 14;
pub const TBM_GETTICPOS: UINT = WM_USER + 15;
pub const TBM_GETNUMTICS: UINT = WM_USER + 16;
pub const TBM_GETSELSTART: UINT = WM_USER + 17;
pub const TBM_GETSELEND: UINT = WM_USER + 18;
pub const TBM_CLEARSEL: UINT = WM_USER + 19;
pub const TBM_SETTICFREQ: UINT = WM_USER + 20;
pub const TBM_SETPAGESIZE: UINT = WM_USER + 21;
pub const TBM_GETPAGESIZE: UINT = WM_USER + 22;
pub const TBM_SETLINESIZE: UINT = WM_USER + 23;
pub const TBM_GETLINESIZE: UINT = WM_USER + 24;
pub const TBM_GETTHUMBRECT: UINT = WM_USER + 25;
pub const TBM_GETCHANNELRECT: UINT = WM_USER + 26;
pub const TBM_SETTHUMBLENGTH: UINT = WM_USER + 27;
pub const TBM_GETTHUMBLENGTH: UINT = WM_USER + 28;
pub const TBM_SETTOOLTIPS: UINT = WM_USER + 29;
pub const TBM_GETTOOLTIPS: UINT = WM_USER + 30;
pub const TBM_SETTIPSIDE: UINT = WM_USER + 31;
pub const TBTS_TOP: WPARAM = 0;
pub const TBTS_LEFT: WPARAM = 1;
pub const TBTS_BOTTOM: WPARAM = 2;
pub const TBTS_RIGHT: WPARAM = 3;
pub const TBM_SETBUDDY: UINT = WM_USER + 32;
pub const TBM_GETBUDDY: UINT = WM_USER + 33;
pub const TBM_SETPOSNOTIFY: UINT = WM_USER + 34;
pub const TBM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TBM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TB_LINEUP: WPARAM = 0;
pub const TB_LINEDOWN: WPARAM = 1;
pub const TB_PAGEUP: WPARAM = 2;
pub const TB_PAGEDOWN: WPARAM = 3;
pub const TB_THUMBPOSITION: WPARAM = 4;
pub const TB_THUMBTRACK: WPARAM = 5;
pub const TB_TOP: WPARAM = 6;
pub const TB_BOTTOM: WPARAM = 7;
pub const TB_ENDTRACK: WPARAM = 8;
pub const TBCD_TICS: DWORD_PTR = 0x0001;
pub const TBCD_THUMB: DWORD_PTR = 0x0001;
pub const TBCD_CHANNEL: DWORD_PTR = 0x0001;
pub const TRBN_THUMBPOSCHANGING: UINT = TRBN_FIRST - 1;
STRUCT!{struct NMTRBTHUMBPOSCHANGING {
    hdr: NMHDR,
    dwPos: DWORD,
    nReason: c_int,
}}
STRUCT!{struct DRAGLISTINFO {
    uNotification: UINT,
    hWnd: HWND,
    ptCursor: POINT,
}}
pub type LPDRAGLISTINFO = *mut DRAGLISTINFO;
pub const DL_BEGINDRAG: UINT = WM_USER + 133;
pub const DL_DRAGGING: UINT = WM_USER + 134;
pub const DL_DROPPED: UINT = WM_USER + 135;
pub const DL_CANCELDRAG: UINT = WM_USER + 136;
pub const DL_CURSORSET: UINT = 0;
pub const DL_STOPCURSOR: UINT = 1;
pub const DL_COPYCURSOR: UINT = 2;
pub const DL_MOVECURSOR: UINT = 3;
pub const DRAGLISTMSGSTRING: &'static str = "commctrl_DragListMsg";
extern "system" {
    pub fn MakeDragList(
        hLB: HWND,
    ) -> BOOL;
    pub fn DrawInsert(
        handParent: HWND,
        hLB: HWND,
        nItem: c_int,
    );
    pub fn LBItemFromPt(
        hLB: HWND,
        pt: POINT,
        bAutoScroll: BOOL,
    ) -> c_int;
}
pub const UPDOWN_CLASS: &'static str = "msctls_updown32";
STRUCT!{struct UDACCEL {
    nSec: UINT,
    nInc: UINT,
}}
pub type LPUDACCEL = *mut UDACCEL;
pub const UD_MAXVAL: c_short = 0x7fff;
pub const UD_MINVAL: c_short = 0 - UD_MAXVAL;
pub const UDS_WRAP: DWORD = 0x0001;
pub const UDS_SETBUDDYINT: DWORD = 0x0002;
pub const UDS_ALIGNRIGHT: DWORD = 0x0004;
pub const UDS_ALIGNLEFT: DWORD = 0x0008;
pub const UDS_AUTOBUDDY: DWORD = 0x0010;
pub const UDS_ARROWKEYS: DWORD = 0x0020;
pub const UDS_HORZ: DWORD = 0x0040;
pub const UDS_NOTHOUSANDS: DWORD = 0x0080;
pub const UDS_HOTTRACK: DWORD = 0x0100;
pub const UDM_SETRANGE: UINT = WM_USER + 101;
pub const UDM_GETRANGE: UINT = WM_USER + 102;
pub const UDM_SETPOS: UINT = WM_USER + 103;
pub const UDM_GETPOS: UINT = WM_USER + 104;
pub const UDM_SETBUDDY: UINT = WM_USER + 105;
pub const UDM_GETBUDDY: UINT = WM_USER + 106;
pub const UDM_SETACCEL: UINT = WM_USER + 107;
pub const UDM_GETACCEL: UINT = WM_USER + 108;
pub const UDM_SETBASE: UINT = WM_USER + 109;
pub const UDM_GETBASE: UINT = WM_USER + 110;
pub const UDM_SETRANGE32: UINT = WM_USER + 111;
pub const UDM_GETRANGE32: UINT = WM_USER + 112;
pub const UDM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const UDM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const UDM_SETPOS32: UINT = WM_USER + 113;
pub const UDM_GETPOS32: UINT = WM_USER + 114;
extern "system" {
    pub fn CreateUpDownControl(
        dwStyle: DWORD,
        x: c_int,
        y: c_int,
        cx: c_int,
        cy: c_int,
        hParent: HWND,
        nID: c_int,
        hInst: HINSTANCE,
        nBuddy: HWND,
        nUpper: c_int,
        nLower: c_int,
        nPos: c_int,
    ) -> HWND;
}
pub type NM_UPDOWN = NMUPDOWN;
pub type LPNM_UPDOWN = LPNMUPDOWN;
STRUCT!{struct NMUPDOWN {
    hdr: NMHDR,
    iPos: c_int,
    iDelta: c_int,
}}
pub type LPNMUPDOWN = *mut NMUPDOWN;
pub const UDN_DELTAPOS: UINT = UDN_FIRST - 1;
pub const PROGRESS_CLASS: &'static str = "msctls_progress32";
pub const PBS_SMOOTH: DWORD = 0x01;
pub const PBS_VERTICAL: DWORD = 0x04;
pub const PBM_SETRANGE: UINT = WM_USER + 1;
pub const PBM_SETPOS: UINT = WM_USER + 2;
pub const PBM_DELTAPOS: UINT = WM_USER + 3;
pub const PBM_SETSTEP: UINT = WM_USER + 4;
pub const PBM_STEPIT: UINT = WM_USER + 5;
pub const PBM_SETRANGE32: UINT = WM_USER + 6;
STRUCT!{struct PBRANGE {
    iLow: c_int,
    iHigh: c_int,
}}
pub type LPPBRANGE = *mut PBRANGE;
pub const PBM_GETRANGE: UINT = WM_USER + 7;
pub const PBM_GETPOS: UINT = WM_USER + 8;
pub const PBM_SETBARCOLOR: UINT = WM_USER + 9;
pub const PBM_SETBKCOLOR: UINT = CCM_SETBKCOLOR;
pub const PBS_MARQUEE: DWORD = 0x08;
pub const PBM_SETMARQUEE: UINT = WM_USER + 10;
pub const PBS_SMOOTHREVERSE: DWORD = 0x10;
pub const PBM_GETSTEP: UINT = WM_USER + 13;
pub const PBM_GETBKCOLOR: UINT = WM_USER + 14;
pub const PBM_GETBARCOLOR: UINT = WM_USER + 15;
pub const PBM_SETSTATE: UINT = WM_USER + 16;
pub const PBM_GETSTATE: UINT = WM_USER + 17;
pub const PBST_NORMAL: c_int = 0x0001;
pub const PBST_ERROR: c_int = 0x0002;
pub const PBST_PAUSED: c_int = 0x0003;
pub const HOTKEYF_SHIFT: BYTE = 0x01;
pub const HOTKEYF_CONTROL: BYTE = 0x02;
pub const HOTKEYF_ALT: BYTE = 0x04;
pub const HOTKEYF_EXT: BYTE = 0x08;
pub const HKCOMB_NONE: WPARAM = 0x0001;
pub const HKCOMB_S: WPARAM = 0x0002;
pub const HKCOMB_C: WPARAM = 0x0004;
pub const HKCOMB_A: WPARAM = 0x0008;
pub const HKCOMB_SC: WPARAM = 0x0010;
pub const HKCOMB_SA: WPARAM = 0x0020;
pub const HKCOMB_CA: WPARAM = 0x0040;
pub const HKCOMB_SCA: WPARAM = 0x0080;
pub const HKM_SETHOTKEY: UINT = WM_USER + 1;
pub const HKM_GETHOTKEY: UINT = WM_USER + 2;
pub const HKM_SETRULES: UINT = WM_USER + 3;
pub const HOTKEY_CLASS: &'static str = "msctls_hotkey32";
pub const CCS_TOP: DWORD = 0x00000001;
pub const CCS_NOMOVEY: DWORD = 0x00000002;
pub const CCS_BOTTOM: DWORD = 0x00000003;
pub const CCS_NORESIZE: DWORD = 0x00000004;
pub const CCS_NOPARENTALIGN: DWORD = 0x00000008;
pub const CCS_ADJUSTABLE: DWORD = 0x00000020;
pub const CCS_NODIVIDER: DWORD = 0x00000040;
pub const CCS_VERT: DWORD = 0x00000080;
pub const CCS_LEFT: DWORD = CCS_VERT | CCS_TOP;
pub const CCS_RIGHT: DWORD = CCS_VERT | CCS_BOTTOM;
pub const CCS_NOMOVEX: DWORD = CCS_VERT | CCS_NOMOVEY;
pub const INVALID_LINK_INDEX: c_int = -1;
pub const MAX_LINKID_TEXT: usize = 48;
pub const L_MAX_URL_LENGTH: usize = 2048 + 32 + 4;
pub const WC_LINK: &'static str = "SysLink";
pub const LWS_TRANSPARENT: DWORD = 0x0001;
pub const LWS_IGNORERETURN: DWORD = 0x0002;
pub const LWS_NOPREFIX: DWORD = 0x0004;
pub const LWS_USEVISUALSTYLE: DWORD = 0x0008;
pub const LWS_USECUSTOMTEXT: DWORD = 0x0010;
pub const LWS_RIGHT: DWORD = 0x0020;
pub const LIF_ITEMINDEX: UINT = 0x00000001;
pub const LIF_STATE: UINT = 0x00000002;
pub const LIF_ITEMID: UINT = 0x00000004;
pub const LIF_URL: UINT = 0x00000008;
pub const LIS_FOCUSED: UINT = 0x00000001;
pub const LIS_ENABLED: UINT = 0x00000002;
pub const LIS_VISITED: UINT = 0x00000004;
pub const LIS_HOTTRACK: UINT = 0x00000008;
pub const LIS_DEFAULTCOLORS: UINT = 0x00000010;
STRUCT!{struct LITEM {
    mask: UINT,
    iLink: c_int,
    state: UINT,
    stateMask: UINT,
    szID: [WCHAR; MAX_LINKID_TEXT],
    szUrl: [WCHAR; L_MAX_URL_LENGTH],
}}
pub type PLITEM = *mut LITEM;
STRUCT!{struct LHITTESTINFO {
    pt: POINT,
    item: LITEM,
}}
pub type PLHITTESTINFO = *mut LHITTESTINFO;
STRUCT!{struct NMLINK {
    hdr: NMHDR,
    item: LITEM,
}}
pub type PNMLINK = *mut NMLINK;
pub const LM_HITTEST: UINT = WM_USER + 0x300;
pub const LM_GETIDEALHEIGHT: UINT = WM_USER + 0x301;
pub const LM_SETITEM: UINT = WM_USER + 0x302;
pub const LM_GETITEM: UINT = WM_USER + 0x303;
pub const LM_GETIDEALSIZE: UINT = LM_GETIDEALHEIGHT;
pub const WC_LISTVIEW: &'static str = "SysListView32";
pub const LVS_ICON: DWORD = 0x0000;
pub const LVS_REPORT: DWORD = 0x0001;
pub const LVS_SMALLICON: DWORD = 0x0002;
pub const LVS_LIST: DWORD = 0x0003;
pub const LVS_TYPEMASK: DWORD = 0x0003;
pub const LVS_SINGLESEL: DWORD = 0x0004;
pub const LVS_SHOWSELALWAYS: DWORD = 0x0008;
pub const LVS_SORTASCENDING: DWORD = 0x0010;
pub const LVS_SORTDESCENDING: DWORD = 0x0020;
pub const LVS_SHAREIMAGELISTS: DWORD = 0x0040;
pub const LVS_NOLABELWRAP: DWORD = 0x0080;
pub const LVS_AUTOARRANGE: DWORD = 0x0100;
pub const LVS_EDITLABELS: DWORD = 0x0200;
pub const LVS_OWNERDATA: DWORD = 0x1000;
pub const LVS_NOSCROLL: DWORD = 0x2000;
pub const LVS_TYPESTYLEMASK: DWORD = 0xfc00;
pub const LVS_ALIGNTOP: DWORD = 0x0000;
pub const LVS_ALIGNLEFT: DWORD = 0x0800;
pub const LVS_ALIGNMASK: DWORD = 0x0c00;
pub const LVS_OWNERDRAWFIXED: DWORD = 0x0400;
pub const LVS_NOCOLUMNHEADER: DWORD = 0x4000;
pub const LVS_NOSORTHEADER: DWORD = 0x8000;
pub const LVM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const LVM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const LVM_GETBKCOLOR: UINT = LVM_FIRST + 0;
pub const LVM_SETBKCOLOR: UINT = LVM_FIRST + 1;
pub const LVM_GETIMAGELIST: UINT = LVM_FIRST + 2;
pub const LVSIL_NORMAL: c_int = 0;
pub const LVSIL_SMALL: c_int = 1;
pub const LVSIL_STATE: c_int = 2;
pub const LVSIL_GROUPHEADER: c_int = 3;
pub const LVM_SETIMAGELIST: UINT = LVM_FIRST + 3;
pub const LVM_GETITEMCOUNT: UINT = LVM_FIRST + 4;
pub const LVIF_TEXT: UINT = 0x00000001;
pub const LVIF_IMAGE: UINT = 0x00000002;
pub const LVIF_PARAM: UINT = 0x00000004;
pub const LVIF_STATE: UINT = 0x00000008;
pub const LVIF_INDENT: UINT = 0x00000010;
pub const LVIF_NORECOMPUTE: UINT = 0x00000800;
pub const LVIF_GROUPID: UINT = 0x00000100;
pub const LVIF_COLUMNS: UINT = 0x00000200;
pub const LVIF_COLFMT: UINT = 0x00010000;
pub const LVIS_FOCUSED: UINT = 0x0001;
pub const LVIS_SELECTED: UINT = 0x0002;
pub const LVIS_CUT: UINT = 0x0004;
pub const LVIS_DROPHILITED: UINT = 0x0008;
pub const LVIS_GLOW: UINT = 0x0010;
pub const LVIS_ACTIVATING: UINT = 0x0020;
pub const LVIS_OVERLAYMASK: UINT = 0x0F00;
pub const LVIS_STATEIMAGEMASK: UINT = 0xF000;
#[inline]
pub fn INDEXTOSTATEIMAGEMASK(i: UINT) -> UINT {
    i << 12
}
pub const I_INDENTCALLBACK: c_int = -1;
pub type LV_ITEMA = LVITEMA;
pub type LV_ITEMW = LVITEMW;
pub const I_GROUPIDCALLBACK: c_int = -1;
pub const I_GROUPIDNONE: c_int = -2;
STRUCT!{struct LVITEMA {
    mask: UINT,
    iItem: c_int,
    iSubItem: c_int,
    state: UINT,
    stateMask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
    iIndent: c_int,
    iGroupId: c_int,
    cColumns: UINT,
    puColumns: PUINT,
    piColFmt: *mut c_int,
    iGroup: c_int,
}}
pub type LPLVITEMA = *mut LVITEMA;
STRUCT!{struct LVITEMW {
    mask: UINT,
    iItem: c_int,
    iSubItem: c_int,
    state: UINT,
    stateMask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
    iIndent: c_int,
    iGroupId: c_int,
    cColumns: UINT,
    puColumns: PUINT,
    piColFmt: *mut c_int,
    iGroup: c_int,
}}
pub type LPLVITEMW = *mut LVITEMW;
pub const LPSTR_TEXTCALLBACKW: LPWSTR = -1isize as LPWSTR;
pub const LPSTR_TEXTCALLBACKA: LPSTR = -1isize as LPSTR;
pub const I_IMAGECALLBACK: c_int = -1;
pub const I_IMAGENONE: c_int = -2;
pub const I_COLUMNSCALLBACK: UINT = -1i32 as u32;
pub const LVM_GETITEMA: UINT = LVM_FIRST + 5;
pub const LVM_GETITEMW: UINT = LVM_FIRST + 75;
pub const LVM_SETITEMA: UINT = LVM_FIRST + 6;
pub const LVM_SETITEMW: UINT = LVM_FIRST + 76;
pub const LVM_INSERTITEMA: UINT = LVM_FIRST + 7;
pub const LVM_INSERTITEMW: UINT = LVM_FIRST + 77;
pub const LVM_DELETEITEM: UINT = LVM_FIRST + 8;
pub const LVM_DELETEALLITEMS: UINT = LVM_FIRST + 9;
pub const LVM_GETCALLBACKMASK: UINT = LVM_FIRST + 10;
pub const LVM_SETCALLBACKMASK: UINT = LVM_FIRST + 11;
pub const LVNI_ALL: LPARAM = 0x0000;
pub const LVNI_FOCUSED: LPARAM = 0x0001;
pub const LVNI_SELECTED: LPARAM = 0x0002;
pub const LVNI_CUT: LPARAM = 0x0004;
pub const LVNI_DROPHILITED: LPARAM = 0x0008;
pub const LVNI_STATEMASK: LPARAM = LVNI_FOCUSED | LVNI_SELECTED | LVNI_CUT | LVNI_DROPHILITED;
pub const LVNI_VISIBLEORDER: LPARAM = 0x0010;
pub const LVNI_PREVIOUS: LPARAM = 0x0020;
pub const LVNI_VISIBLEONLY: LPARAM = 0x0040;
pub const LVNI_SAMEGROUPONLY: LPARAM = 0x0080;
pub const LVNI_ABOVE: LPARAM = 0x0100;
pub const LVNI_BELOW: LPARAM = 0x0200;
pub const LVNI_TOLEFT: LPARAM = 0x0400;
pub const LVNI_TORIGHT: LPARAM = 0x0800;
pub const LVNI_DIRECTIONMASK: LPARAM = LVNI_ABOVE | LVNI_BELOW | LVNI_TOLEFT | LVNI_TORIGHT;
pub const LVM_GETNEXTITEM: UINT = LVM_FIRST + 12;
pub const LVFI_PARAM: UINT = 0x0001;
pub const LVFI_STRING: UINT = 0x0002;
pub const LVFI_SUBSTRING: UINT = 0x0004;
pub const LVFI_PARTIAL: UINT = 0x0008;
pub const LVFI_WRAP: UINT = 0x0020;
pub const LVFI_NEARESTXY: UINT = 0x0040;
pub type LV_FINDINFOA = LVFINDINFOA;
pub type LV_FINDINFOW = LVFINDINFOW;
STRUCT!{struct LVFINDINFOA {
    flags: UINT,
    psz: LPCSTR,
    lParam: LPARAM,
    pt: POINT,
    vkDirection: UINT,
}}
pub type LPFINDINFOA = *mut LVFINDINFOA;
STRUCT!{struct LVFINDINFOW {
    flags: UINT,
    psz: LPCWSTR,
    lParam: LPARAM,
    pt: POINT,
    vkDirection: UINT,
}}
pub type LPFINDINFOW = *mut LVFINDINFOW;
pub const LVM_FINDITEMA: UINT = LVM_FIRST + 13;
pub const LVM_FINDITEMW: UINT = LVM_FIRST + 83;
pub const LVIR_BOUNDS: c_int = 0;
pub const LVIR_ICON: c_int = 1;
pub const LVIR_LABEL: c_int = 2;
pub const LVIR_SELECTBOUNDS: c_int = 3;
pub const LVM_GETITEMRECT: UINT = LVM_FIRST + 14;
pub const LVM_SETITEMPOSITION: UINT = LVM_FIRST + 15;
pub const LVM_GETITEMPOSITION: UINT = LVM_FIRST + 16;
pub const LVM_GETSTRINGWIDTHA: UINT = LVM_FIRST + 17;
pub const LVM_GETSTRINGWIDTHW: UINT = LVM_FIRST + 87;
pub const LVHT_NOWHERE: UINT = 0x00000001;
pub const LVHT_ONITEMICON: UINT = 0x00000002;
pub const LVHT_ONITEMLABEL: UINT = 0x00000004;
pub const LVHT_ONITEMSTATEICON: UINT = 0x00000008;
pub const LVHT_ONITEM: UINT = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON;
pub const LVHT_ABOVE: UINT = 0x00000008;
pub const LVHT_BELOW: UINT = 0x00000010;
pub const LVHT_TORIGHT: UINT = 0x00000020;
pub const LVHT_TOLEFT: UINT = 0x00000040;
pub const LVHT_EX_GROUP_HEADER: UINT = 0x10000000;
pub const LVHT_EX_GROUP_FOOTER: UINT = 0x20000000;
pub const LVHT_EX_GROUP_COLLAPSE: UINT = 0x40000000;
pub const LVHT_EX_GROUP_BACKGROUND: UINT = 0x80000000;
pub const LVHT_EX_GROUP_STATEICON: UINT = 0x01000000;
pub const LVHT_EX_GROUP_SUBSETLINK: UINT = 0x02000000;
pub const LVHT_EX_GROUP: UINT = LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE
    | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON
    | LVHT_EX_GROUP_SUBSETLINK;
pub const LVHT_EX_ONCONTENTS: UINT = 0x04000000;
pub const LVHT_EX_FOOTER: UINT = 0x08000000;
pub type LV_HITTESTINFO = LVHITTESTINFO;
STRUCT!{struct LVHITTESTINFO {
    pt: POINT,
    flags: UINT,
    iItem: c_int,
    iSubItem: c_int,
    iGroup: c_int,
}}
pub type LPLVHITTESTINFO = *mut LVHITTESTINFO;
pub const LVM_HITTEST: UINT = LVM_FIRST + 18;
pub const LVM_ENSUREVISIBLE: UINT = LVM_FIRST + 19;
pub const LVM_SCROLL: UINT = LVM_FIRST + 20;
pub const LVM_REDRAWITEMS: UINT = LVM_FIRST + 21;
pub const LVA_DEFAULT: WPARAM = 0x0000;
pub const LVA_ALIGNLEFT: WPARAM = 0x0001;
pub const LVA_ALIGNTOP: WPARAM = 0x0002;
pub const LVA_SNAPTOGRID: WPARAM = 0x0005;
pub const LVM_ARRANGE: UINT = LVM_FIRST + 22;
pub const LVM_EDITLABELA: UINT = LVM_FIRST + 23;
pub const LVM_EDITLABELW: UINT = LVM_FIRST + 118;
pub const LVM_GETEDITCONTROL: UINT = LVM_FIRST + 24;
pub type LV_COLUMNA = LVCOLUMNA;
pub type LV_COLUMNW = LVCOLUMNW;
STRUCT!{struct LVCOLUMNA {
    mask: UINT,
    fmt: c_int,
    cx: c_int,
    pszText: LPSTR,
    cchTextMax: c_int,
    iSubItem: c_int,
    iImage: c_int,
    iOrder: c_int,
    cxMin: c_int,
    cxDefault: c_int,
    cxIdeal: c_int,
}}
pub type LPLVCOLUMNA = *mut LVCOLUMNA;
STRUCT!{struct LVCOLUMNW {
    mask: UINT,
    fmt: c_int,
    cx: c_int,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iSubItem: c_int,
    iImage: c_int,
    iOrder: c_int,
    cxMin: c_int,
    cxDefault: c_int,
    cxIdeal: c_int,
}}
pub type LPLVCOLUMNW = *mut LVCOLUMNW;
pub const LVCF_FMT: UINT = 0x0001;
pub const LVCF_WIDTH: UINT = 0x0002;
pub const LVCF_TEXT: UINT = 0x0004;
pub const LVCF_SUBITEM: UINT = 0x0008;
pub const LVCF_IMAGE: UINT = 0x0010;
pub const LVCF_ORDER: UINT = 0x0020;
pub const LVCF_MINWIDTH: UINT = 0x0040;
pub const LVCF_DEFAULTWIDTH: UINT = 0x0080;
pub const LVCF_IDEALWIDTH: UINT = 0x0100;
pub const LVCFMT_LEFT: c_int = 0x0000;
pub const LVCFMT_RIGHT: c_int = 0x0001;
pub const LVCFMT_CENTER: c_int = 0x0002;
pub const LVCFMT_JUSTIFYMASK: c_int = 0x0003;
pub const LVCFMT_IMAGE: c_int = 0x0800;
pub const LVCFMT_BITMAP_ON_RIGHT: c_int = 0x1000;
pub const LVCFMT_COL_HAS_IMAGES: c_int = 0x8000;
pub const LVCFMT_FIXED_WIDTH: c_int = 0x00100;
pub const LVCFMT_NO_DPI_SCALE: c_int = 0x40000;
pub const LVCFMT_FIXED_RATIO: c_int = 0x80000;
pub const LVCFMT_LINE_BREAK: c_int = 0x100000;
pub const LVCFMT_FILL: c_int = 0x200000;
pub const LVCFMT_WRAP: c_int = 0x400000;
pub const LVCFMT_NO_TITLE: c_int = 0x800000;
pub const LVCFMT_TILE_PLACEMENTMASK: c_int = LVCFMT_LINE_BREAK | LVCFMT_FILL;
pub const LVCFMT_SPLITBUTTON: c_int = 0x1000000;
pub const LVM_GETCOLUMNA: UINT = LVM_FIRST + 25;
pub const LVM_GETCOLUMNW: UINT = LVM_FIRST + 95;
pub const LVM_SETCOLUMNA: UINT = LVM_FIRST + 26;
pub const LVM_SETCOLUMNW: UINT = LVM_FIRST + 96;
pub const LVM_INSERTCOLUMNA: UINT = LVM_FIRST + 27;
pub const LVM_INSERTCOLUMNW: UINT = LVM_FIRST + 97;
pub const LVM_DELETECOLUMN: UINT = LVM_FIRST + 28;
pub const LVM_GETCOLUMNWIDTH: UINT = LVM_FIRST + 29;
pub const LVSCW_AUTOSIZE: c_int = -1;
pub const LVSCW_AUTOSIZE_USEHEADER: c_int = -2;
pub const LVM_SETCOLUMNWIDTH: UINT = LVM_FIRST + 30;
pub const LVM_GETHEADER: UINT = LVM_FIRST + 31;
pub const LVM_CREATEDRAGIMAGE: UINT = LVM_FIRST + 33;
pub const LVM_GETVIEWRECT: UINT = LVM_FIRST + 34;
pub const LVM_GETTEXTCOLOR: UINT = LVM_FIRST + 35;
pub const LVM_SETTEXTCOLOR: UINT = LVM_FIRST + 36;
pub const LVM_GETTEXTBKCOLOR: UINT = LVM_FIRST + 37;
pub const LVM_SETTEXTBKCOLOR: UINT = LVM_FIRST + 38;
pub const LVM_GETTOPINDEX: UINT = LVM_FIRST + 39;
pub const LVM_GETCOUNTPERPAGE: UINT = LVM_FIRST + 40;
pub const LVM_GETORIGIN: UINT = LVM_FIRST + 41;
pub const LVM_UPDATE: UINT = LVM_FIRST + 42;
pub const LVM_SETITEMSTATE: UINT = LVM_FIRST + 43;
pub const LVM_GETITEMSTATE: UINT = LVM_FIRST + 44;
pub const LVM_GETITEMTEXTA: UINT = LVM_FIRST + 45;
pub const LVM_GETITEMTEXTW: UINT = LVM_FIRST + 115;
pub const LVM_SETITEMTEXTA: UINT = LVM_FIRST + 46;
pub const LVM_SETITEMTEXTW: UINT = LVM_FIRST + 116;
pub const LVSICF_NOINVALIDATEALL: LPARAM = 0x00000001;
pub const LVSICF_NOSCROLL: LPARAM = 0x00000002;
pub const LVM_SETITEMCOUNT: UINT = LVM_FIRST + 47;
FN!{stdcall PFNLVCOMPARE(
    LPARAM,
    LPARAM,
    LPARAM,
) -> c_int}
pub const LVM_SORTITEMS: UINT = LVM_FIRST + 48;
pub const LVM_SETITEMPOSITION32: UINT = LVM_FIRST + 49;
pub const LVM_GETSELECTEDCOUNT: UINT = LVM_FIRST + 50;
pub const LVM_GETITEMSPACING: UINT = LVM_FIRST + 51;
pub const LVM_GETISEARCHSTRINGA: UINT = LVM_FIRST + 52;
pub const LVM_GETISEARCHSTRINGW: UINT = LVM_FIRST + 117;
pub const LVM_SETICONSPACING: UINT = LVM_FIRST + 53;
pub const LVM_SETEXTENDEDLISTVIEWSTYLE: UINT = LVM_FIRST + 54;
pub const LVM_GETEXTENDEDLISTVIEWSTYLE: UINT = LVM_FIRST + 55;
pub const LVS_EX_GRIDLINES: DWORD = 0x00000001;
pub const LVS_EX_SUBITEMIMAGES: DWORD = 0x00000002;
pub const LVS_EX_CHECKBOXES: DWORD = 0x00000004;
pub const LVS_EX_TRACKSELECT: DWORD = 0x00000008;
pub const LVS_EX_HEADERDRAGDROP: DWORD = 0x00000010;
pub const LVS_EX_FULLROWSELECT: DWORD = 0x00000020;
pub const LVS_EX_ONECLICKACTIVATE: DWORD = 0x00000040;
pub const LVS_EX_TWOCLICKACTIVATE: DWORD = 0x00000080;
pub const LVS_EX_FLATSB: DWORD = 0x00000100;
pub const LVS_EX_REGIONAL: DWORD = 0x00000200;
pub const LVS_EX_INFOTIP: DWORD = 0x00000400;
pub const LVS_EX_UNDERLINEHOT: DWORD = 0x00000800;
pub const LVS_EX_UNDERLINECOLD: DWORD = 0x00001000;
pub const LVS_EX_MULTIWORKAREAS: DWORD = 0x00002000;
pub const LVS_EX_LABELTIP: DWORD = 0x00004000;
pub const LVS_EX_BORDERSELECT: DWORD = 0x00008000;
pub const LVS_EX_DOUBLEBUFFER: DWORD = 0x00010000;
pub const LVS_EX_HIDELABELS: DWORD = 0x00020000;
pub const LVS_EX_SINGLEROW: DWORD = 0x00040000;
pub const LVS_EX_SNAPTOGRID: DWORD = 0x00080000;
pub const LVS_EX_SIMPLESELECT: DWORD = 0x00100000;
pub const LVS_EX_JUSTIFYCOLUMNS: DWORD = 0x00200000;
pub const LVS_EX_TRANSPARENTBKGND: DWORD = 0x00400000;
pub const LVS_EX_TRANSPARENTSHADOWTEXT: DWORD = 0x00800000;
pub const LVS_EX_AUTOAUTOARRANGE: DWORD = 0x01000000;
pub const LVS_EX_HEADERINALLVIEWS: DWORD = 0x02000000;
pub const LVS_EX_AUTOCHECKSELECT: DWORD = 0x08000000;
pub const LVS_EX_AUTOSIZECOLUMNS: DWORD = 0x10000000;
pub const LVS_EX_COLUMNSNAPPOINTS: DWORD = 0x40000000;
pub const LVS_EX_COLUMNOVERFLOW: DWORD = 0x80000000;
pub const LVM_GETSUBITEMRECT: UINT = LVM_FIRST + 56;
pub const LVM_SUBITEMHITTEST: UINT = LVM_FIRST + 57;
pub const LVM_SETCOLUMNORDERARRAY: UINT = LVM_FIRST + 58;
pub const LVM_GETCOLUMNORDERARRAY: UINT = LVM_FIRST + 59;
pub const LVM_SETHOTITEM: UINT = LVM_FIRST + 60;
pub const LVM_GETHOTITEM: UINT = LVM_FIRST + 61;
pub const LVM_SETHOTCURSOR: UINT = LVM_FIRST + 62;
pub const LVM_GETHOTCURSOR: UINT = LVM_FIRST + 63;
pub const LVM_APPROXIMATEVIEWRECT: UINT = LVM_FIRST + 64;
pub const LV_MAX_WORKAREAS: WPARAM = 16;
pub const LVM_SETWORKAREAS: UINT = LVM_FIRST + 65;
pub const LVM_GETWORKAREAS: UINT = LVM_FIRST + 70;
pub const LVM_GETNUMBEROFWORKAREAS: UINT = LVM_FIRST + 73;
pub const LVM_GETSELECTIONMARK: UINT = LVM_FIRST + 66;
pub const LVM_SETSELECTIONMARK: UINT = LVM_FIRST + 67;
pub const LVM_SETHOVERTIME: UINT = LVM_FIRST + 71;
pub const LVM_GETHOVERTIME: UINT = LVM_FIRST + 72;
pub const LVM_SETTOOLTIPS: UINT = LVM_FIRST + 74;
pub const LVM_GETTOOLTIPS: UINT = LVM_FIRST + 78;
pub const LVM_SORTITEMSEX: UINT = LVM_FIRST + 81;
STRUCT!{struct LVBKIMAGEA {
    ulFlags: ULONG,
    hbm: HBITMAP,
    pszImage: LPSTR,
    cchImageMax: UINT,
    xOffsetPercent: c_int,
    yOffsetPercent: c_int,
}}
pub type LPLVBKIMAGEA = *mut LVBKIMAGEA;
STRUCT!{struct LVBKIMAGEW {
    ulFlags: ULONG,
    hbm: HBITMAP,
    pszImage: LPWSTR,
    cchImageMax: UINT,
    xOffsetPercent: c_int,
    yOffsetPercent: c_int,
}}
pub type LPLVBKIMAGEW = *mut LVBKIMAGEW;
pub const LVBKIF_SOURCE_NONE: ULONG = 0x00000000;
pub const LVBKIF_SOURCE_HBITMAP: ULONG = 0x00000001;
pub const LVBKIF_SOURCE_URL: ULONG = 0x00000002;
pub const LVBKIF_SOURCE_MASK: ULONG = 0x00000003;
pub const LVBKIF_STYLE_NORMAL: ULONG = 0x00000000;
pub const LVBKIF_STYLE_TILE: ULONG = 0x00000010;
pub const LVBKIF_STYLE_MASK: ULONG = 0x00000010;
pub const LVBKIF_FLAG_TILEOFFSET: ULONG = 0x00000100;
pub const LVBKIF_TYPE_WATERMARK: ULONG = 0x10000000;
pub const LVBKIF_FLAG_ALPHABLEND: ULONG = 0x20000000;
pub const LVM_SETBKIMAGEA: UINT = LVM_FIRST + 68;
pub const LVM_SETBKIMAGEW: UINT = LVM_FIRST + 138;
pub const LVM_GETBKIMAGEA: UINT = LVM_FIRST + 69;
pub const LVM_GETBKIMAGEW: UINT = LVM_FIRST + 139;
pub const LVM_SETSELECTEDCOLUMN: UINT = LVM_FIRST + 140;
pub const LV_VIEW_ICON: DWORD = 0x0000;
pub const LV_VIEW_DETAILS: DWORD = 0x0001;
pub const LV_VIEW_SMALLICON: DWORD = 0x0002;
pub const LV_VIEW_LIST: DWORD = 0x0003;
pub const LV_VIEW_TILE: DWORD = 0x0004;
pub const LV_VIEW_MAX: DWORD = 0x0004;
pub const LVM_SETVIEW: UINT = LVM_FIRST + 142;
pub const LVM_GETVIEW: UINT = LVM_FIRST + 143;
pub const LVGF_NONE: UINT = 0x00000000;
pub const LVGF_HEADER: UINT = 0x00000001;
pub const LVGF_FOOTER: UINT = 0x00000002;
pub const LVGF_STATE: UINT = 0x00000004;
pub const LVGF_ALIGN: UINT = 0x00000008;
pub const LVGF_GROUPID: UINT = 0x00000010;
pub const LVGF_SUBTITLE: UINT = 0x00000100;
pub const LVGF_TASK: UINT = 0x00000200;
pub const LVGF_DESCRIPTIONTOP: UINT = 0x00000400;
pub const LVGF_DESCRIPTIONBOTTOM: UINT = 0x00000800;
pub const LVGF_TITLEIMAGE: UINT = 0x00001000;
pub const LVGF_EXTENDEDIMAGE: UINT = 0x00002000;
pub const LVGF_ITEMS: UINT = 0x00004000;
pub const LVGF_SUBSET: UINT = 0x00008000;
pub const LVGF_SUBSETITEMS: UINT = 0x00010000;
pub const LVGS_NORMAL: UINT = 0x00000000;
pub const LVGS_COLLAPSED: UINT = 0x00000001;
pub const LVGS_HIDDEN: UINT = 0x00000002;
pub const LVGS_NOHEADER: UINT = 0x00000004;
pub const LVGS_COLLAPSIBLE: UINT = 0x00000008;
pub const LVGS_FOCUSED: UINT = 0x00000010;
pub const LVGS_SELECTED: UINT = 0x00000020;
pub const LVGS_SUBSETED: UINT = 0x00000040;
pub const LVGS_SUBSETLINKFOCUSED: UINT = 0x00000080;
pub const LVGA_HEADER_LEFT: UINT = 0x00000001;
pub const LVGA_HEADER_CENTER: UINT = 0x00000002;
pub const LVGA_HEADER_RIGHT: UINT = 0x00000004;
pub const LVGA_FOOTER_LEFT: UINT = 0x00000008;
pub const LVGA_FOOTER_CENTER: UINT = 0x00000010;
pub const LVGA_FOOTER_RIGHT: UINT = 0x00000020;
STRUCT!{struct LVGROUP {
    cbSize: UINT,
    mask: UINT,
    pszHeader: LPWSTR,
    cchHeader: c_int,
    pszFooter: LPWSTR,
    cchFooter: c_int,
    iGroupId: c_int,
    stateMask: UINT,
    state: UINT,
    uAlign: UINT,
    pszSubtitle: LPWSTR,
    cchSubtitle: UINT,
    pszTask: LPWSTR,
    cchTask: UINT,
    pszDescriptionTop: LPWSTR,
    cchDescriptionTop: UINT,
    pszDescriptionBottom: LPWSTR,
    cchDescriptionBottom: UINT,
    iTitleImage: c_int,
    iExtendedImage: c_int,
    iFirstItem: c_int,
    cItems: UINT,
    pszSubsetTitle: LPWSTR,
    cchSubsetTitle: UINT,
}}
pub type PLVGROUP = *mut LVGROUP;
pub const LVM_INSERTGROUP: UINT = LVM_FIRST + 145;
pub const LVM_SETGROUPINFO: UINT = LVM_FIRST + 147;
pub const LVM_GETGROUPINFO: UINT = LVM_FIRST + 149;
pub const LVM_REMOVEGROUP: UINT = LVM_FIRST + 150;
pub const LVM_MOVEGROUP: UINT = LVM_FIRST + 151;
pub const LVM_GETGROUPCOUNT: UINT = LVM_FIRST + 152;
pub const LVM_GETGROUPINFOBYINDEX: UINT = LVM_FIRST + 153;
pub const LVM_MOVEITEMTOGROUP: UINT = LVM_FIRST + 154;
pub const LVGGR_GROUP: LPARAM = 0;
pub const LVGGR_HEADER: LPARAM = 1;
pub const LVGGR_LABEL: LPARAM = 2;
pub const LVGGR_SUBSETLINK: LPARAM = 3;
pub const LVM_GETGROUPRECT: UINT = LVM_FIRST + 98;
pub const LVGMF_NONE: UINT = 0x00000000;
pub const LVGMF_BORDERSIZE: UINT = 0x00000001;
pub const LVGMF_BORDERCOLOR: UINT = 0x00000002;
pub const LVGMF_TEXTCOLOR: UINT = 0x00000004;
STRUCT!{struct LVGROUPMETRICS {
    cbSize: UINT,
    mask: UINT,
    Left: UINT,
    Top: UINT,
    Right: UINT,
    Bottom: UINT,
    crLeft: COLORREF,
    crTop: COLORREF,
    crRight: COLORREF,
    crBottom: COLORREF,
    crHeader: COLORREF,
    crFooter: COLORREF,
}}
pub type PLVGROUPMETRICS = *mut LVGROUPMETRICS;
pub const LVM_SETGROUPMETRICS: UINT = LVM_FIRST + 155;
pub const LVM_GETGROUPMETRICS: UINT = LVM_FIRST + 156;
pub const LVM_ENABLEGROUPVIEW: UINT = LVM_FIRST + 157;
FN!{stdcall PFNLVGROUPCOMPARE(
    c_int,
    c_int,
    *mut c_void,
) -> c_int}
pub const LVM_SORTGROUPS: UINT = LVM_FIRST + 158;
STRUCT!{struct LVINSERTGROUPSORTED {
    pfnGroupCompare: PFNLVGROUPCOMPARE,
    pvData: *mut c_void,
    lvGroup: LVGROUP,
}}
pub type PLVINSERTGROUPSORTED = *mut LVINSERTGROUPSORTED;
pub const LVM_INSERTGROUPSORTED: UINT = LVM_FIRST + 159;
pub const LVM_REMOVEALLGROUPS: UINT = LVM_FIRST + 160;
pub const LVM_HASGROUP: UINT = LVM_FIRST + 161;
pub const LVM_GETGROUPSTATE: UINT = LVM_FIRST + 92;
pub const LVM_GETFOCUSEDGROUP: UINT = LVM_FIRST + 93;
pub const LVTVIF_AUTOSIZE: DWORD = 0x00000000;
pub const LVTVIF_FIXEDWIDTH: DWORD = 0x00000001;
pub const LVTVIF_FIXEDHEIGHT: DWORD = 0x00000002;
pub const LVTVIF_FIXEDSIZE: DWORD = 0x00000003;
pub const LVTVIF_EXTENDED: DWORD = 0x00000004;
pub const LVTVIM_TILESIZE: DWORD = 0x00000001;
pub const LVTVIM_COLUMNS: DWORD = 0x00000002;
pub const LVTVIM_LABELMARGIN: DWORD = 0x00000004;
STRUCT!{struct LVTILEVIEWINFO {
    cbSize: UINT,
    dwMask: DWORD,
    dwFlags: DWORD,
    sizeTile: SIZE,
    cLines: c_int,
    rcLabelMargin: RECT,
}}
pub type PLVTILEVIEWINFO = *mut LVTILEVIEWINFO;
STRUCT!{struct LVTILEINFO {
    cbSize: UINT,
    iItem: c_int,
    cColumns: UINT,
    puColumns: PUINT,
    piColFmt: *mut c_int,
}}
pub type PLVTILEINFO = *mut LVTILEINFO;
pub const LVM_SETTILEVIEWINFO: UINT = LVM_FIRST + 162;
pub const LVM_GETTILEVIEWINFO: UINT = LVM_FIRST + 163;
pub const LVM_SETTILEINFO: UINT = LVM_FIRST + 164;
pub const LVM_GETTILEINFO: UINT = LVM_FIRST + 165;
STRUCT!{struct LVINSERTMARK {
    cbSize: UINT,
    dwFlags: DWORD,
    iItem: c_int,
    dwReserved: DWORD,
}}
pub type LPLVINSERTMARK = *mut LVINSERTMARK;
pub const LVIM_AFTER: DWORD = 0x00000001;
pub const LVM_SETINSERTMARK: UINT = LVM_FIRST + 166;
pub const LVM_GETINSERTMARK: UINT = LVM_FIRST + 167;
pub const LVM_INSERTMARKHITTEST: UINT = LVM_FIRST + 168;
pub const LVM_GETINSERTMARKRECT: UINT = LVM_FIRST + 169;
pub const LVM_SETINSERTMARKCOLOR: UINT = LVM_FIRST + 170;
pub const LVM_GETINSERTMARKCOLOR: UINT = LVM_FIRST + 171;
STRUCT!{struct LVSETINFOTIP {
    cbSize: UINT,
    dwFlags: DWORD,
    pszText: LPWSTR,
    iItem: c_int,
    iSubItem: c_int,
}}
pub type PLVSETINFOTIP = *mut LVSETINFOTIP;
pub const LVM_SETINFOTIP: UINT = LVM_FIRST + 173;
pub const LVM_GETSELECTEDCOLUMN: UINT = LVM_FIRST + 174;
pub const LVM_ISGROUPVIEWENABLED: UINT = LVM_FIRST + 175;
pub const LVM_GETOUTLINECOLOR: UINT = LVM_FIRST + 176;
pub const LVM_SETOUTLINECOLOR: UINT = LVM_FIRST + 177;
pub const LVM_CANCELEDITLABEL: UINT = LVM_FIRST + 179;
pub const LVM_MAPINDEXTOID: UINT = LVM_FIRST + 180;
pub const LVM_MAPIDTOINDEX: UINT = LVM_FIRST + 181;
pub const LVM_ISITEMVISIBLE: UINT = LVM_FIRST + 182;
pub const LVM_GETEMPTYTEXT: UINT = LVM_FIRST + 204;
pub const LVM_GETFOOTERRECT: UINT = LVM_FIRST + 205;
pub const LVFF_ITEMCOUNT: UINT = 0x00000001;
STRUCT!{struct LVFOOTERINFO {
    mask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    cItems: UINT,
}}
pub type LPLVFOOTERINFO = *mut LVFOOTERINFO;
pub const LVM_GETFOOTERINFO: UINT = LVM_FIRST + 206;
pub const LVM_GETFOOTERITEMRECT: UINT = LVM_FIRST + 207;
pub const LVFIF_TEXT: UINT = 0x00000001;
pub const LVFIF_STATE: UINT = 0x00000002;
pub const LVFIS_FOCUSED: UINT = 0x0001;
STRUCT!{struct LVFOOTERITEM {
    mask: UINT,
    iItem: c_int,
    pszText: LPWSTR,
    cchTextMax: c_int,
    state: UINT,
    stateMask: UINT,
}}
pub type LPLVFOOTERITEM = *mut LVFOOTERITEM;
pub const LVM_GETFOOTERITEM: UINT = LVM_FIRST + 208;
STRUCT!{struct LVITEMINDEX {
    iItem: c_int,
    iGroup: c_int,
}}
pub type PLVITEMINDEX = *mut LVITEMINDEX;
pub const LVM_GETITEMINDEXRECT: UINT = LVM_FIRST + 209;
pub const LVM_SETITEMINDEXSTATE: UINT = LVM_FIRST + 210;
pub const LVM_GETNEXTITEMINDEX: UINT = LVM_FIRST + 211;
pub type LPNM_LISTVIEW = LPNMLISTVIEW;
pub type NM_LISTVIEW = NMLISTVIEW;
STRUCT!{struct NMLISTVIEW {
    hdr: NMHDR,
    iItem: c_int,
    iSubItem: c_int,
    uNewState: UINT,
    uOldState: UINT,
    uChanged: UINT,
    ptAction: POINT,
    lParam: LPARAM,
}}
pub type LPNMLISTVIEW = *mut NMLISTVIEW;
STRUCT!{struct NMITEMACTIVATE {
    hdr: NMHDR,
    iItem: c_int,
    iSubItem: c_int,
    uNewState: UINT,
    uOldState: UINT,
    uChanged: UINT,
    ptAction: POINT,
    lParam: LPARAM,
    uKeyFlags: UINT,
}}
pub type LPNMITEMACTIVATE = *mut NMITEMACTIVATE;
pub const LVKF_ALT: UINT = 0x0001;
pub const LVKF_CONTROL: UINT = 0x0002;
pub const LVKF_SHIFT: UINT = 0x0004;
STRUCT!{struct NMLVCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    clrText: COLORREF,
    clrTextBk: COLORREF,
    iSubItem: c_int,
    dwItemType: DWORD,
    clrFace: COLORREF,
    iIconEffect: c_int,
    iIconPhase: c_int,
    iPartId: c_int,
    iStateId: c_int,
    rcText: RECT,
    uAlign: UINT,
}}
pub type LPNMLVCUSTOMDRAW = *mut NMLVCUSTOMDRAW;
pub const LVCDI_ITEM: DWORD = 0x00000000;
pub const LVCDI_GROUP: DWORD = 0x00000001;
pub const LVCDI_ITEMSLIST: DWORD = 0x00000002;
pub const LVCDRF_NOSELECT: LRESULT = 0x00010000;
pub const LVCDRF_NOGROUPFRAME: LRESULT = 0x00020000;
STRUCT!{struct NMLVCACHEHINT {
    hdr: NMHDR,
    iFrom: c_int,
    iTo: c_int,
}}
pub type LPNMLVCACHEHINT = *mut NMLVCACHEHINT;
pub type LPNM_CACHEHINT = LPNMLVCACHEHINT;
pub type PNM_CACHEHINT = LPNMLVCACHEHINT;
pub type NM_CACHEHINT = NMLVCACHEHINT;
STRUCT!{struct NMLVFINDITEMA {
    hdr: NMHDR,
    iStart: c_int,
    lvfi: LVFINDINFOA,
}}
pub type LPNMLVFINDITEMA = *mut NMLVFINDITEMA;
STRUCT!{struct NMLVFINDITEMW {
    hdr: NMHDR,
    iStart: c_int,
    lvfi: LVFINDINFOW,
}}
pub type LPNMLVFINDITEMW = *mut NMLVFINDITEMW;
pub type PNM_FINDITEMA = LPNMLVFINDITEMA;
pub type LPNM_FINDITEMA = LPNMLVFINDITEMA;
pub type NM_FINDITEMA = NMLVFINDITEMA;
pub type PNM_FINDITEMW = LPNMLVFINDITEMW;
pub type LPNM_FINDITEMW = LPNMLVFINDITEMW;
pub type NM_FINDITEMW = NMLVFINDITEMW;
STRUCT!{struct NMLVODSTATECHANGE {
    hdr: NMHDR,
    iFrom: c_int,
    iTo: c_int,
    uNewState: UINT,
    uOldState: UINT,
}}
pub type LPNMLVODSTATECHANGE = *mut NMLVODSTATECHANGE;
pub type PNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
pub type LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
pub type NM_ODSTATECHANGE = NMLVODSTATECHANGE;
pub const LVN_ITEMCHANGING: UINT = LVN_FIRST - 0;
pub const LVN_ITEMCHANGED: UINT = LVN_FIRST - 1;
pub const LVN_INSERTITEM: UINT = LVN_FIRST - 2;
pub const LVN_DELETEITEM: UINT = LVN_FIRST - 3;
pub const LVN_DELETEALLITEMS: UINT = LVN_FIRST - 4;
pub const LVN_BEGINLABELEDITA: UINT = LVN_FIRST - 5;
pub const LVN_BEGINLABELEDITW: UINT = LVN_FIRST - 75;
pub const LVN_ENDLABELEDITA: UINT = LVN_FIRST - 6;
pub const LVN_ENDLABELEDITW: UINT = LVN_FIRST - 76;
pub const LVN_COLUMNCLICK: UINT = LVN_FIRST - 8;
pub const LVN_BEGINDRAG: UINT = LVN_FIRST - 9;
pub const LVN_BEGINRDRAG: UINT = LVN_FIRST - 11;
pub const LVN_ODCACHEHINT: UINT = LVN_FIRST - 13;
pub const LVN_ODFINDITEMA: UINT = LVN_FIRST - 52;
pub const LVN_ODFINDITEMW: UINT = LVN_FIRST - 79;
pub const LVN_ITEMACTIVATE: UINT = LVN_FIRST - 14;
pub const LVN_ODSTATECHANGED: UINT = LVN_FIRST - 15;
pub const LVN_HOTTRACK: UINT = LVN_FIRST - 21;
pub const LVN_GETDISPINFOA: UINT = LVN_FIRST - 50;
pub const LVN_GETDISPINFOW: UINT = LVN_FIRST - 77;
pub const LVN_SETDISPINFOA: UINT = LVN_FIRST - 51;
pub const LVN_SETDISPINFOW: UINT = LVN_FIRST - 78;
pub const LVIF_DI_SETITEM: UINT = 0x1000;
pub type LV_DISPINFOA = NMLVDISPINFOA;
pub type LV_DISPINFOW = NMLVDISPINFOW;
STRUCT!{struct NMLVDISPINFOA {
    hdr: NMHDR,
    item: LVITEMA,
}}
pub type LPNMLVDISPINFOA = *mut NMLVDISPINFOA;
STRUCT!{struct NMLVDISPINFOW {
    hdr: NMHDR,
    item: LVITEMW,
}}
pub type LPNMLVDISPINFOW = *mut NMLVDISPINFOW;
pub const LVN_KEYDOWN: UINT = LVN_FIRST - 55;
pub type LV_KEYDOWN = NMLVKEYDOWN;
STRUCT!{#[repr(packed)] struct NMLVKEYDOWN {
    hdr: NMHDR,
    wVKey: WORD,
    flags: UINT,
}}
pub type LPNMLVKEYDOWN = *mut NMLVKEYDOWN;
pub const LVN_MARQUEEBEGIN: UINT = LVN_FIRST - 56;
STRUCT!{struct NMLVLINK {
    hdr: NMHDR,
    link: LITEM,
    iItem: c_int,
    iSubItem: c_int,
}}
pub type PNMLVLINK = *mut NMLVLINK;
STRUCT!{struct NMLVGETINFOTIPA {
    hdr: NMHDR,
    dwFlags: DWORD,
    pszText: LPSTR,
    cchTextMax: c_int,
    iItem: c_int,
    iSubItem: c_int,
    lParam: LPARAM,
}}
pub type LPNMLVGETINFOTIPA = *mut NMLVGETINFOTIPA;
STRUCT!{struct NMLVGETINFOTIPW {
    hdr: NMHDR,
    dwFlags: DWORD,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iItem: c_int,
    iSubItem: c_int,
    lParam: LPARAM,
}}
pub type LPNMLVGETINFOTIPW = *mut NMLVGETINFOTIPW;
pub const LVGIT_UNFOLDED: DWORD = 0x0001;
pub const LVN_GETINFOTIPA: UINT = LVN_FIRST - 57;
pub const LVN_GETINFOTIPW: UINT = LVN_FIRST - 58;
pub const LVNSCH_DEFAULT: LPARAM = -1;
pub const LVNSCH_ERROR: LPARAM = -2;
pub const LVNSCH_IGNORE: LPARAM = -3;
pub const LVN_INCREMENTALSEARCHA: UINT = LVN_FIRST - 62;
pub const LVN_INCREMENTALSEARCHW: UINT = LVN_FIRST - 63;
pub const LVN_COLUMNDROPDOWN: UINT = LVN_FIRST - 64;
pub const LVN_COLUMNOVERFLOWCLICK: UINT = LVN_FIRST - 66;
STRUCT!{struct NMLVSCROLL {
    hdr: NMHDR,
    dx: c_int,
    dy: c_int,
}}
pub type LPNMLVSCROLL = *mut NMLVSCROLL;
pub const LVN_BEGINSCROLL: UINT = LVN_FIRST - 80;
pub const LVN_ENDSCROLL: UINT = LVN_FIRST - 81;
pub const LVN_LINKCLICK: UINT = LVN_FIRST - 84;
pub const EMF_CENTERED: DWORD = 0x00000001;
STRUCT!{struct NMLVEMPTYMARKUP {
    hdr: NMHDR,
    dwFlags: DWORD,
    szMarkup: [WCHAR; L_MAX_URL_LENGTH],
}}
pub const LVN_GETEMPTYMARKUP: UINT = LVN_FIRST - 87;
pub const WC_TREEVIEW: &'static str = "SysTreeView32";
pub const TVS_HASBUTTONS: DWORD = 0x0001;
pub const TVS_HASLINES: DWORD = 0x0002;
pub const TVS_LINESATROOT: DWORD = 0x0004;
pub const TVS_EDITLABELS: DWORD = 0x0008;
pub const TVS_DISABLEDRAGDROP: DWORD = 0x0010;
pub const TVS_SHOWSELALWAYS: DWORD = 0x0020;
pub const TVS_RTLREADING: DWORD = 0x0040;
pub const TVS_NOTOOLTIPS: DWORD = 0x0080;
pub const TVS_CHECKBOXES: DWORD = 0x0100;
pub const TVS_TRACKSELECT: DWORD = 0x0200;
pub const TVS_SINGLEEXPAND: DWORD = 0x0400;
pub const TVS_INFOTIP: DWORD = 0x0800;
pub const TVS_FULLROWSELECT: DWORD = 0x1000;
pub const TVS_NOSCROLL: DWORD = 0x2000;
pub const TVS_NONEVENHEIGHT: DWORD = 0x4000;
pub const TVS_NOHSCROLL: DWORD = 0x8000;
pub const TVS_EX_NOSINGLECOLLAPSE: DWORD = 0x0001;
pub const TVS_EX_MULTISELECT: DWORD = 0x0002;
pub const TVS_EX_DOUBLEBUFFER: DWORD = 0x0004;
pub const TVS_EX_NOINDENTSTATE: DWORD = 0x0008;
pub const TVS_EX_RICHTOOLTIP: DWORD = 0x0010;
pub const TVS_EX_AUTOHSCROLL: DWORD = 0x0020;
pub const TVS_EX_FADEINOUTEXPANDOS: DWORD = 0x0040;
pub const TVS_EX_PARTIALCHECKBOXES: DWORD = 0x0080;
pub const TVS_EX_EXCLUSIONCHECKBOXES: DWORD = 0x0100;
pub const TVS_EX_DIMMEDCHECKBOXES: DWORD = 0x0200;
pub const TVS_EX_DRAWIMAGEASYNC: DWORD = 0x0400;
pub enum TREEITEM {}
pub type HTREEITEM = *mut TREEITEM;
pub const TVIF_TEXT: UINT = 0x0001;
pub const TVIF_IMAGE: UINT = 0x0002;
pub const TVIF_PARAM: UINT = 0x0004;
pub const TVIF_STATE: UINT = 0x0008;
pub const TVIF_HANDLE: UINT = 0x0010;
pub const TVIF_SELECTEDIMAGE: UINT = 0x0020;
pub const TVIF_CHILDREN: UINT = 0x0040;
pub const TVIF_INTEGRAL: UINT = 0x0080;
pub const TVIF_STATEEX: UINT = 0x0100;
pub const TVIF_EXPANDEDIMAGE: UINT = 0x0200;
pub const TVIS_SELECTED: UINT = 0x0002;
pub const TVIS_CUT: UINT = 0x0004;
pub const TVIS_DROPHILITED: UINT = 0x0008;
pub const TVIS_BOLD: UINT = 0x0010;
pub const TVIS_EXPANDED: UINT = 0x0020;
pub const TVIS_EXPANDEDONCE: UINT = 0x0040;
pub const TVIS_EXPANDPARTIAL: UINT = 0x0080;
pub const TVIS_OVERLAYMASK: UINT = 0x0F00;
pub const TVIS_STATEIMAGEMASK: UINT = 0xF000;
pub const TVIS_USERMASK: UINT = 0xF000;
pub const TVIS_EX_FLAT: UINT = 0x0001;
pub const TVIS_EX_DISABLED: UINT = 0x0002;
pub const TVIS_EX_ALL: UINT = 0x0002;
STRUCT!{struct NMTVSTATEIMAGECHANGING {
    hdr: NMHDR,
    hti: HTREEITEM,
    iOldStateImageIndex: c_int,
    iNewStateImageIndex: c_int,
}}
pub type LPNMTVSTATEIMAGECHANGING = *mut NMTVSTATEIMAGECHANGING;
pub const I_CHILDRENCALLBACK: c_int = -1;
pub const I_CHILDRENAUTO: c_int = -2;
pub type LPTV_ITEMW = LPTVITEMW;
pub type LPTV_ITEMA = LPTVITEMA;
pub type TV_ITEMW = TVITEMW;
pub type TV_ITEMA = TVITEMA;
STRUCT!{struct TVITEMA {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
}}
pub type LPTVITEMA = *mut TVITEMA;
STRUCT!{struct TVITEMW {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
}}
pub type LPTVITEMW = *mut TVITEMW;
STRUCT!{struct TVITEMEXA {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
    iIntegral: c_int,
    uStateEx: UINT,
    hwnd: HWND,
    iExpandedImage: c_int,
    iReserved: c_int,
}}
pub type LPTVITEMEXA = *mut TVITEMEXA;
STRUCT!{struct TVITEMEXW {
    mask: UINT,
    hItem: HTREEITEM,
    state: UINT,
    stateMask: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    cChildren: c_int,
    lParam: LPARAM,
    iIntegral: c_int,
    uStateEx: UINT,
    hwnd: HWND,
    iExpandedImage: c_int,
    iReserved: c_int,
}}
pub type LPTVITEMEXW = *mut TVITEMEXW;
pub const TVI_ROOT: HTREEITEM = -0x10000isize as HTREEITEM;
pub const TVI_FIRST: HTREEITEM = -0x0FFFFisize as HTREEITEM;
pub const TVI_LAST: HTREEITEM = -0x0FFFEisize as HTREEITEM;
pub const TVI_SORT: HTREEITEM = -0x0FFFDisize as HTREEITEM;
pub type LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;
pub type LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;
pub type TV_INSERTSTRUCTA = TVINSERTSTRUCTA;
pub type TV_INSERTSTRUCTW = TVINSERTSTRUCTW;
UNION!{union TVINSERTSTRUCTA_u {
    [u32; 15] [u64; 10],
    itemex itemex_mut: TVITEMEXA,
    item item_mut: TV_ITEMA,
}}
STRUCT!{struct TVINSERTSTRUCTA {
    hParent: HTREEITEM,
    hInsertAfter: HTREEITEM,
    u: TVINSERTSTRUCTA_u,
}}
pub type LPTVINSERTSTRUCTA = *mut TVINSERTSTRUCTA;
UNION!{union TVINSERTSTRUCTW_u {
    [u32; 15] [u64; 10],
    itemex itemex_mut: TVITEMEXW,
    item item_mut: TV_ITEMW,
}}
STRUCT!{struct TVINSERTSTRUCTW {
    hParent: HTREEITEM,
    hInsertAfter: HTREEITEM,
    u: TVINSERTSTRUCTW_u,
}}
pub type LPTVINSERTSTRUCTW = *mut TVINSERTSTRUCTW;
pub const TVM_INSERTITEMA: UINT = TV_FIRST + 0;
pub const TVM_INSERTITEMW: UINT = TV_FIRST + 50;
pub const TVM_DELETEITEM: UINT = TV_FIRST + 1;
pub const TVM_EXPAND: UINT = TV_FIRST + 2;
pub const TVE_COLLAPSE: WPARAM = 0x0001;
pub const TVE_EXPAND: WPARAM = 0x0002;
pub const TVE_TOGGLE: WPARAM = 0x0003;
pub const TVE_EXPANDPARTIAL: WPARAM = 0x4000;
pub const TVE_COLLAPSERESET: WPARAM = 0x8000;
pub const TVM_GETITEMRECT: UINT = TV_FIRST + 4;
pub const TVM_GETCOUNT: UINT = TV_FIRST + 5;
pub const TVM_GETINDENT: UINT = TV_FIRST + 6;
pub const TVM_SETINDENT: UINT = TV_FIRST + 7;
pub const TVM_GETIMAGELIST: UINT = TV_FIRST + 8;
pub const TVSIL_NORMAL: WPARAM = 0;
pub const TVSIL_STATE: WPARAM = 2;
pub const TVM_SETIMAGELIST: UINT = TV_FIRST + 9;
pub const TVM_GETNEXTITEM: UINT = TV_FIRST + 10;
pub const TVGN_ROOT: WPARAM = 0x0000;
pub const TVGN_NEXT: WPARAM = 0x0001;
pub const TVGN_PREVIOUS: WPARAM = 0x0002;
pub const TVGN_PARENT: WPARAM = 0x0003;
pub const TVGN_CHILD: WPARAM = 0x0004;
pub const TVGN_FIRSTVISIBLE: WPARAM = 0x0005;
pub const TVGN_NEXTVISIBLE: WPARAM = 0x0006;
pub const TVGN_PREVIOUSVISIBLE: WPARAM = 0x0007;
pub const TVGN_DROPHILITE: WPARAM = 0x0008;
pub const TVGN_CARET: WPARAM = 0x0009;
pub const TVGN_LASTVISIBLE: WPARAM = 0x000A;
pub const TVGN_NEXTSELECTED: WPARAM = 0x000B;
pub const TVSI_NOSINGLEEXPAND: WPARAM = 0x8000;
pub const TVM_SELECTITEM: UINT = TV_FIRST + 11;
pub const TVM_GETITEMA: UINT = TV_FIRST + 12;
pub const TVM_GETITEMW: UINT = TV_FIRST + 62;
pub const TVM_SETITEMA: UINT = TV_FIRST + 13;
pub const TVM_SETITEMW: UINT = TV_FIRST + 63;
pub const TVM_EDITLABELA: UINT = TV_FIRST + 14;
pub const TVM_EDITLABELW: UINT = TV_FIRST + 65;
pub const TVM_GETEDITCONTROL: UINT = TV_FIRST + 15;
pub const TVM_GETVISIBLECOUNT: UINT = TV_FIRST + 16;
pub const TVM_HITTEST: UINT = TV_FIRST + 17;
pub type LPTV_HITTESTINFO = LPTVHITTESTINFO;
pub type TV_HITTESTINFO = TVHITTESTINFO;
STRUCT!{struct TVHITTESTINFO {
    pt: POINT,
    flags: UINT,
    hItem: HTREEITEM,
}}
pub type LPTVHITTESTINFO = *mut TVHITTESTINFO;
pub const TVHT_NOWHERE: UINT = 0x0001;
pub const TVHT_ONITEMICON: UINT = 0x0002;
pub const TVHT_ONITEMLABEL: UINT = 0x0004;
pub const TVHT_ONITEM: UINT = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON;
pub const TVHT_ONITEMINDENT: UINT = 0x0008;
pub const TVHT_ONITEMBUTTON: UINT = 0x0010;
pub const TVHT_ONITEMRIGHT: UINT = 0x0020;
pub const TVHT_ONITEMSTATEICON: UINT = 0x0040;
pub const TVHT_ABOVE: UINT = 0x0100;
pub const TVHT_BELOW: UINT = 0x0200;
pub const TVHT_TORIGHT: UINT = 0x0400;
pub const TVHT_TOLEFT: UINT = 0x0800;
pub const TVM_CREATEDRAGIMAGE: UINT = TV_FIRST + 18;
pub const TVM_SORTCHILDREN: UINT = TV_FIRST + 19;
pub const TVM_ENSUREVISIBLE: UINT = TV_FIRST + 20;
pub const TVM_SORTCHILDRENCB: UINT = TV_FIRST + 21;
pub const TVM_ENDEDITLABELNOW: UINT = TV_FIRST + 22;
pub const TVM_GETISEARCHSTRINGA: UINT = TV_FIRST + 23;
pub const TVM_GETISEARCHSTRINGW: UINT = TV_FIRST + 64;
pub const TVM_SETTOOLTIPS: UINT = TV_FIRST + 24;
pub const TVM_GETTOOLTIPS: UINT = TV_FIRST + 25;
pub const TVM_SETINSERTMARK: UINT = TV_FIRST + 26;
pub const TVM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TVM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TVM_SETITEMHEIGHT: UINT = TV_FIRST + 27;
pub const TVM_GETITEMHEIGHT: UINT = TV_FIRST + 28;
pub const TVM_SETBKCOLOR: UINT = TV_FIRST + 29;
pub const TVM_SETTEXTCOLOR: UINT = TV_FIRST + 30;
pub const TVM_GETBKCOLOR: UINT = TV_FIRST + 31;
pub const TVM_GETTEXTCOLOR: UINT = TV_FIRST + 32;
pub const TVM_SETSCROLLTIME: UINT = TV_FIRST + 33;
pub const TVM_GETSCROLLTIME: UINT = TV_FIRST + 34;
pub const TVM_SETINSERTMARKCOLOR: UINT = TV_FIRST + 37;
pub const TVM_GETINSERTMARKCOLOR: UINT = TV_FIRST + 38;
pub const TVM_SETBORDER: UINT = TV_FIRST + 35;
pub const TVSBF_XBORDER: WPARAM = 0x00000001;
pub const TVSBF_YBORDER: WPARAM = 0x00000002;
pub const TVM_GETITEMSTATE: UINT = TV_FIRST + 39;
pub const TVM_SETLINECOLOR: UINT = TV_FIRST + 40;
pub const TVM_GETLINECOLOR: UINT = TV_FIRST + 41;
pub const TVM_MAPACCIDTOHTREEITEM: UINT = TV_FIRST + 42;
pub const TVM_MAPHTREEITEMTOACCID: UINT = TV_FIRST + 43;
pub const TVM_SETEXTENDEDSTYLE: UINT = TV_FIRST + 44;
pub const TVM_GETEXTENDEDSTYLE: UINT = TV_FIRST + 45;
pub const TVM_SETAUTOSCROLLINFO: UINT = TV_FIRST + 59;
pub const TVM_SETHOT: UINT = TV_FIRST + 58;
pub const TVM_GETSELECTEDCOUNT: UINT = TV_FIRST + 70;
pub const TVM_SHOWINFOTIP: UINT = TV_FIRST + 71;
ENUM!{enum TVITEMPART {
    TVGIPR_BUTTON = 0x0001,
}}
STRUCT!{struct TVGETITEMPARTRECTINFO {
    hti: HTREEITEM,
    prc: *mut RECT,
    partID: TVITEMPART,
}}
pub const TVM_GETITEMPARTRECT: UINT = TV_FIRST + 72;
FN!{stdcall PFNTVCOMPARE(
    lParam1: LPARAM,
    lParam2: LPARAM,
    lParamSort: LPARAM,
) -> c_int}
pub type LPTV_SORTCB = LPTVSORTCB;
pub type TV_SORTCB = TVSORTCB;
STRUCT!{struct TVSORTCB {
    hParent: HTREEITEM,
    lpfnCompare: PFNTVCOMPARE,
    lParam: LPARAM,
}}
pub type LPTVSORTCB = *mut TVSORTCB;
pub type LPNM_TREEVIEWA = LPNMTREEVIEWA;
pub type LPNM_TREEVIEWW = LPNMTREEVIEWW;
pub type NM_TREEVIEWA = NMTREEVIEWA;
pub type NM_TREEVIEWW = NMTREEVIEWW;
STRUCT!{struct NMTREEVIEWA {
    hdr: NMHDR,
    action: UINT,
    itemOld: TVITEMA,
    itemNew: TVITEMA,
    ptDrag: POINT,
}}
pub type LPNMTREEVIEWA = *mut NMTREEVIEWA;
STRUCT!{struct NMTREEVIEWW {
    hdr: NMHDR,
    action: UINT,
    itemOld: TVITEMW,
    itemNew: TVITEMW,
    ptDrag: POINT,
}}
pub type LPNMTREEVIEWW = *mut NMTREEVIEWW;
pub const TVN_SELCHANGINGA: UINT = TVN_FIRST - 1;
pub const TVN_SELCHANGINGW: UINT = TVN_FIRST - 50;
pub const TVN_SELCHANGEDA: UINT = TVN_FIRST - 2;
pub const TVN_SELCHANGEDW: UINT = TVN_FIRST - 51;
pub const TVC_UNKNOWN: LPARAM = 0x0000;
pub const TVC_BYMOUSE: LPARAM = 0x0001;
pub const TVC_BYKEYBOARD: LPARAM = 0x0002;
pub const TVN_GETDISPINFOA: UINT = TVN_FIRST - 3;
pub const TVN_GETDISPINFOW: UINT = TVN_FIRST - 52;
pub const TVN_SETDISPINFOA: UINT = TVN_FIRST - 4;
pub const TVN_SETDISPINFOW: UINT = TVN_FIRST - 53;
pub const TVIF_DI_SETITEM: UINT = 0x1000;
pub type TV_DISPINFOA = NMTVDISPINFOA;
pub type TV_DISPINFOW = NMTVDISPINFOW;
STRUCT!{struct NMTVDISPINFOA {
    hdr: NMHDR,
    item: TVITEMA,
}}
pub type LPNMTVDISPINFOA = *mut NMTVDISPINFOA;
STRUCT!{struct NMTVDISPINFOW {
    hdr: NMHDR,
    item: TVITEMW,
}}
pub type LPNMTVDISPINFOW = *mut NMTVDISPINFOW;
STRUCT!{struct NMTVDISPINFOEXA {
    hdr: NMHDR,
    item: TVITEMEXA,
}}
pub type LPNMTVDISPINFOEXA = *mut NMTVDISPINFOEXA;
STRUCT!{struct NMTVDISPINFOEXW {
    hdr: NMHDR,
    item: TVITEMEXW,
}}
pub type LPNMTVDISPINFOEXW = *mut NMTVDISPINFOEXW;
pub type TV_DISPINFOEXA = NMTVDISPINFOEXA;
pub type TV_DISPINFOEXW = NMTVDISPINFOEXW;
pub const TVN_ITEMEXPANDINGA: UINT = TVN_FIRST - 5;
pub const TVN_ITEMEXPANDINGW: UINT = TVN_FIRST - 54;
pub const TVN_ITEMEXPANDEDA: UINT = TVN_FIRST - 6;
pub const TVN_ITEMEXPANDEDW: UINT = TVN_FIRST - 55;
pub const TVN_BEGINDRAGA: UINT = TVN_FIRST - 7;
pub const TVN_BEGINDRAGW: UINT = TVN_FIRST - 56;
pub const TVN_BEGINRDRAGA: UINT = TVN_FIRST - 8;
pub const TVN_BEGINRDRAGW: UINT = TVN_FIRST - 57;
pub const TVN_DELETEITEMA: UINT = TVN_FIRST - 9;
pub const TVN_DELETEITEMW: UINT = TVN_FIRST - 58;
pub const TVN_BEGINLABELEDITA: UINT = TVN_FIRST - 10;
pub const TVN_BEGINLABELEDITW: UINT = TVN_FIRST - 59;
pub const TVN_ENDLABELEDITA: UINT = TVN_FIRST - 11;
pub const TVN_ENDLABELEDITW: UINT = TVN_FIRST - 60;
pub const TVN_KEYDOWN: UINT = TVN_FIRST - 12;
pub const TVN_GETINFOTIPA: UINT = TVN_FIRST - 13;
pub const TVN_GETINFOTIPW: UINT = TVN_FIRST - 14;
pub const TVN_SINGLEEXPAND: UINT = TVN_FIRST - 15;
pub const TVNRET_DEFAULT: LRESULT = 0;
pub const TVNRET_SKIPOLD: LRESULT = 1;
pub const TVNRET_SKIPNEW: LRESULT = 2;
pub const TVN_ITEMCHANGINGA: UINT = TVN_FIRST - 16;
pub const TVN_ITEMCHANGINGW: UINT = TVN_FIRST - 17;
pub const TVN_ITEMCHANGEDA: UINT = TVN_FIRST - 18;
pub const TVN_ITEMCHANGEDW: UINT = TVN_FIRST - 19;
pub const TVN_ASYNCDRAW: UINT = TVN_FIRST - 20;
pub type TV_KEYDOWN = NMTVKEYDOWN;
STRUCT!{#[repr(packed)] struct NMTVKEYDOWN {
    hdr: NMHDR,
    wVKey: WORD,
    flags: UINT,
}}
pub type LPNMTVKEYDOWN = *mut NMTVKEYDOWN;
STRUCT!{struct NMTVCUSTOMDRAW {
    nmcd: NMCUSTOMDRAW,
    clrText: COLORREF,
    clrTextBk: COLORREF,
    iLevel: c_int,
}}
pub type LPNMTVCUSTOMDRAW = *mut NMTVCUSTOMDRAW;
STRUCT!{struct NMTVGETINFOTIPA {
    hdr: NMHDR,
    pszText: LPSTR,
    cchTextMax: c_int,
    hItem: HTREEITEM,
    lParam: LPARAM,
}}
pub type LPNMTVGETINFOTIPA = *mut NMTVGETINFOTIPA;
STRUCT!{struct NMTVGETINFOTIPW {
    hdr: NMHDR,
    pszText: LPWSTR,
    cchTextMax: c_int,
    hItem: HTREEITEM,
    lParam: LPARAM,
}}
pub type LPNMTVGETINFOTIPW = *mut NMTVGETINFOTIPW;
pub const TVCDRF_NOIMAGES: LRESULT = 0x00010000;
STRUCT!{struct NMTVITEMCHANGE {
    hdr: NMHDR,
    uChanged: UINT,
    hItem: HTREEITEM,
    uStateNew: UINT,
    uStateOld: UINT,
    lParam: LPARAM,
}}
STRUCT!{struct NMTVASYNCDRAW {
    hdr: NMHDR,
    pimldp: *mut IMAGELISTDRAWPARAMS,
    hr: HRESULT,
    hItem: HTREEITEM,
    lParam: LPARAM,
    dwRetFlags: DWORD,
    iRetImageIndex: c_int,
}}
pub const WC_COMBOBOXEX: &'static str = "ComboBoxEx32";
pub const CBEIF_TEXT: UINT = 0x00000001;
pub const CBEIF_IMAGE: UINT = 0x00000002;
pub const CBEIF_SELECTEDIMAGE: UINT = 0x00000004;
pub const CBEIF_OVERLAY: UINT = 0x00000008;
pub const CBEIF_INDENT: UINT = 0x00000010;
pub const CBEIF_LPARAM: UINT = 0x00000020;
pub const CBEIF_DI_SETITEM: UINT = 0x10000000;
STRUCT!{struct COMBOBOXEXITEMA {
    mask: UINT,
    iItem: INT_PTR,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    iOverlay: c_int,
    iIndent: c_int,
    lParam: LPARAM,
}}
pub type PCOMBOBOXEXITEMA = *mut COMBOBOXEXITEMA;
pub type PCCOMBOBOXEXITEMA = *const COMBOBOXEXITEMA;
STRUCT!{struct COMBOBOXEXITEMW {
    mask: UINT,
    iItem: INT_PTR,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    iSelectedImage: c_int,
    iOverlay: c_int,
    iIndent: c_int,
    lParam: LPARAM,
}}
pub type PCOMBOBOXEXITEMW = *mut COMBOBOXEXITEMW;
pub type PCCOMBOBOXEXITEMW = *const COMBOBOXEXITEMW;
pub const CBEM_INSERTITEMA: UINT = WM_USER + 1;
pub const CBEM_SETIMAGELIST: UINT = WM_USER + 2;
pub const CBEM_GETIMAGELIST: UINT = WM_USER + 3;
pub const CBEM_GETITEMA: UINT = WM_USER + 4;
pub const CBEM_SETITEMA: UINT = WM_USER + 5;
pub const CBEM_DELETEITEM: UINT = CB_DELETESTRING;
pub const CBEM_GETCOMBOCONTROL: UINT = WM_USER + 6;
pub const CBEM_GETEDITCONTROL: UINT = WM_USER + 7;
pub const CBEM_SETEXSTYLE: UINT = WM_USER + 8;
pub const CBEM_SETEXTENDEDSTYLE: UINT = WM_USER + 14;
pub const CBEM_GETEXSTYLE: UINT = WM_USER + 9;
pub const CBEM_GETEXTENDEDSTYLE: UINT = WM_USER + 9;
pub const CBEM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const CBEM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const CBEM_HASEDITCHANGED: UINT = WM_USER + 10;
pub const CBEM_INSERTITEMW: UINT = WM_USER + 11;
pub const CBEM_SETITEMW: UINT = WM_USER + 12;
pub const CBEM_GETITEMW: UINT = WM_USER + 13;
pub const CBEM_SETWINDOWTHEME: UINT = CCM_SETWINDOWTHEME;
pub const CBES_EX_NOEDITIMAGE: DWORD = 0x00000001;
pub const CBES_EX_NOEDITIMAGEINDENT: DWORD = 0x00000002;
pub const CBES_EX_PATHWORDBREAKPROC: DWORD = 0x00000004;
pub const CBES_EX_NOSIZELIMIT: DWORD = 0x00000008;
pub const CBES_EX_CASESENSITIVE: DWORD = 0x00000010;
pub const CBES_EX_TEXTENDELLIPSIS: DWORD = 0x00000020;
STRUCT!{struct NMCOMBOBOXEXA {
    hdr: NMHDR,
    ceItem: COMBOBOXEXITEMA,
}}
pub type PNMCOMBOBOXEXA = *mut NMCOMBOBOXEXA;
STRUCT!{struct NMCOMBOBOXEXW {
    hdr: NMHDR,
    ceItem: COMBOBOXEXITEMW,
}}
pub type PNMCOMBOBOXEXW = *mut NMCOMBOBOXEXW;
pub const CBEN_GETDISPINFOA: UINT = CBEN_FIRST - 0;
pub const CBEN_INSERTITEM: UINT = CBEN_FIRST - 1;
pub const CBEN_DELETEITEM: UINT = CBEN_FIRST - 2;
pub const CBEN_BEGINEDIT: UINT = CBEN_FIRST - 4;
pub const CBEN_ENDEDITA: UINT = CBEN_FIRST - 5;
pub const CBEN_ENDEDITW: UINT = CBEN_FIRST - 6;
pub const CBEN_GETDISPINFOW: UINT = CBEN_FIRST - 7;
pub const CBEN_DRAGBEGINA: UINT = CBEN_FIRST - 8;
pub const CBEN_DRAGBEGINW: UINT = CBEN_FIRST - 9;
pub const CBENF_KILLFOCUS: c_int = 1;
pub const CBENF_RETURN: c_int = 2;
pub const CBENF_ESCAPE: c_int = 3;
pub const CBENF_DROPDOWN: c_int = 4;
pub const CBEMAXSTRLEN: usize = 260;
STRUCT!{struct NMCBEDRAGBEGINW {
    hdr: NMHDR,
    iItemid: c_int,
    szText: [WCHAR; CBEMAXSTRLEN],
}}
pub type PNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
pub type LPNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
STRUCT!{struct NMCBEDRAGBEGINA {
    hdr: NMHDR,
    iItemid: c_int,
    szText: [c_char; CBEMAXSTRLEN],
}}
pub type PNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
pub type LPNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
STRUCT!{struct NMCBEENDEDITW {
    hdr: NMHDR,
    fChanged: BOOL,
    iNewSelection: c_int,
    szText: [WCHAR; CBEMAXSTRLEN],
    iWhy: c_int,
}}
pub type PNMCBEENDEDITW = *mut NMCBEENDEDITW;
pub type LPNMCBEENDEDITW = *mut NMCBEENDEDITW;
STRUCT!{struct NMCBEENDEDITA {
    hdr: NMHDR,
    fChanged: BOOL,
    iNewSelection: c_int,
    szText: [c_char; CBEMAXSTRLEN],
    iWhy: c_int,
}}
pub type PNMCBEENDEDITA = *mut NMCBEENDEDITA;
pub type LPNMCBEENDEDITA = *mut NMCBEENDEDITA;
pub const WC_TABCONTROL: &'static str = "SysTabControl32";
pub const TCS_SCROLLOPPOSITE: DWORD = 0x0001;
pub const TCS_BOTTOM: DWORD = 0x0002;
pub const TCS_RIGHT: DWORD = 0x0002;
pub const TCS_MULTISELECT: DWORD = 0x0004;
pub const TCS_FLATBUTTONS: DWORD = 0x0008;
pub const TCS_FORCEICONLEFT: DWORD = 0x0010;
pub const TCS_FORCELABELLEFT: DWORD = 0x0020;
pub const TCS_HOTTRACK: DWORD = 0x0040;
pub const TCS_VERTICAL: DWORD = 0x0080;
pub const TCS_TABS: DWORD = 0x0000;
pub const TCS_BUTTONS: DWORD = 0x0100;
pub const TCS_SINGLELINE: DWORD = 0x0000;
pub const TCS_MULTILINE: DWORD = 0x0200;
pub const TCS_RIGHTJUSTIFY: DWORD = 0x0000;
pub const TCS_FIXEDWIDTH: DWORD = 0x0400;
pub const TCS_RAGGEDRIGHT: DWORD = 0x0800;
pub const TCS_FOCUSONBUTTONDOWN: DWORD = 0x1000;
pub const TCS_OWNERDRAWFIXED: DWORD = 0x2000;
pub const TCS_TOOLTIPS: DWORD = 0x4000;
pub const TCS_FOCUSNEVER: DWORD = 0x8000;
pub const TCS_EX_FLATSEPARATORS: DWORD = 0x00000001;
pub const TCS_EX_REGISTERDROP: DWORD = 0x00000002;
pub const TCM_GETIMAGELIST: UINT = TCM_FIRST + 2;
pub const TCM_SETIMAGELIST: UINT = TCM_FIRST + 3;
pub const TCM_GETITEMCOUNT: UINT = TCM_FIRST + 4;
pub const TCIF_TEXT: UINT = 0x0001;
pub const TCIF_IMAGE: UINT = 0x0002;
pub const TCIF_RTLREADING: UINT = 0x0004;
pub const TCIF_PARAM: UINT = 0x0008;
pub const TCIF_STATE: UINT = 0x0010;
pub const TCIS_BUTTONPRESSED: DWORD = 0x0001;
pub const TCIS_HIGHLIGHTED: DWORD = 0x0002;
pub type TC_ITEMHEADERA = TCITEMHEADERA;
pub type TC_ITEMHEADERW = TCITEMHEADERW;
STRUCT!{struct TCITEMHEADERA {
    mask: UINT,
    lpReserved1: UINT,
    lpReserved2: UINT,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
}}
pub type LPTCITEMHEADERA = *mut TCITEMHEADERA;
STRUCT!{struct TCITEMHEADERW {
    mask: UINT,
    lpReserved1: UINT,
    lpReserved2: UINT,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
}}
pub type LPTCITEMHEADERW = *mut TCITEMHEADERW;
pub type TC_ITEMA = TCITEMA;
pub type TC_ITEMW = TCITEMW;
STRUCT!{struct TCITEMA {
    mask: UINT,
    dwState: DWORD,
    dwStateMask: DWORD,
    pszText: LPSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPTCITEMA = *mut TCITEMA;
STRUCT!{struct TCITEMW {
    mask: UINT,
    dwState: DWORD,
    dwStateMask: DWORD,
    pszText: LPWSTR,
    cchTextMax: c_int,
    iImage: c_int,
    lParam: LPARAM,
}}
pub type LPTCITEMW = *mut TCITEMW;
pub const TCM_GETITEMA: UINT = TCM_FIRST + 5;
pub const TCM_GETITEMW: UINT = TCM_FIRST + 60;
pub const TCM_SETITEMA: UINT = TCM_FIRST + 6;
pub const TCM_SETITEMW: UINT = TCM_FIRST + 61;
pub const TCM_INSERTITEMA: UINT = TCM_FIRST + 7;
pub const TCM_INSERTITEMW: UINT = TCM_FIRST + 62;
pub const TCM_DELETEITEM: UINT = TCM_FIRST + 8;
pub const TCM_DELETEALLITEMS: UINT = TCM_FIRST + 9;
pub const TCM_GETITEMRECT: UINT = TCM_FIRST + 10;
pub const TCM_GETCURSEL: UINT = TCM_FIRST + 11;
pub const TCM_SETCURSEL: UINT = TCM_FIRST + 12;
pub const TCHT_NOWHERE: UINT = 0x0001;
pub const TCHT_ONITEMICON: UINT = 0x0002;
pub const TCHT_ONITEMLABEL: UINT = 0x0004;
pub const TCHT_ONITEM: UINT = TCHT_ONITEMICON | TCHT_ONITEMLABEL;
pub type LPTC_HITTESTINFO = LPTCHITTESTINFO;
pub type TC_HITTESTINFO = TCHITTESTINFO;
STRUCT!{struct TCHITTESTINFO {
    pt: POINT,
    flags: UINT,
}}
pub type LPTCHITTESTINFO = *mut TCHITTESTINFO;
pub const TCM_HITTEST: UINT = TCM_FIRST + 13;
pub const TCM_SETITEMEXTRA: UINT = TCM_FIRST + 14;
pub const TCM_ADJUSTRECT: UINT = TCM_FIRST + 40;
pub const TCM_SETITEMSIZE: UINT = TCM_FIRST + 41;
pub const TCM_REMOVEIMAGE: UINT = TCM_FIRST + 42;
pub const TCM_SETPADDING: UINT = TCM_FIRST + 43;
pub const TCM_GETROWCOUNT: UINT = TCM_FIRST + 44;
pub const TCM_GETTOOLTIPS: UINT = TCM_FIRST + 45;
pub const TCM_SETTOOLTIPS: UINT = TCM_FIRST + 46;
pub const TCM_GETCURFOCUS: UINT = TCM_FIRST + 47;
pub const TCM_SETCURFOCUS: UINT = TCM_FIRST + 48;
pub const TCM_SETMINTABWIDTH: UINT = TCM_FIRST + 49;
pub const TCM_DESELECTALL: UINT = TCM_FIRST + 50;
pub const TCM_HIGHLIGHTITEM: UINT = TCM_FIRST + 51;
pub const TCM_SETEXTENDEDSTYLE: UINT = TCM_FIRST + 52;
pub const TCM_GETEXTENDEDSTYLE: UINT = TCM_FIRST + 53;
pub const TCM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const TCM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const TCN_KEYDOWN: UINT = TCN_FIRST - 0;
pub type TC_KEYDOWN = NMTCKEYDOWN;
STRUCT!{#[repr(packed)] struct NMTCKEYDOWN {
    hdr: NMHDR,
    wVKey: WORD,
    flags: UINT,
}}
pub const TCN_SELCHANGE: UINT = TCN_FIRST - 1;
pub const TCN_SELCHANGING: UINT = TCN_FIRST - 2;
pub const TCN_GETOBJECT: UINT = TCN_FIRST - 3;
pub const TCN_FOCUSCHANGE: UINT = TCN_FIRST - 4;
pub const ANIMATE_CLASS: &'static str = "SysAnimate32";
pub const ACS_CENTER: DWORD = 0x0001;
pub const ACS_TRANSPARENT: DWORD = 0x0002;
pub const ACS_AUTOPLAY: DWORD = 0x0004;
pub const ACS_TIMER: DWORD = 0x0008;
pub const ACM_OPENA: UINT = WM_USER + 100;
pub const ACM_OPENW: UINT = WM_USER + 103;
pub const ACM_PLAY: UINT = WM_USER + 101;
pub const ACM_STOP: UINT = WM_USER + 102;
pub const ACM_ISPLAYING: UINT = WM_USER + 104;
pub const ACN_START: WPARAM = 1;
pub const ACN_STOP: WPARAM = 2;
pub const MONTHCAL_CLASS: &'static str = "SysMonthCal32";
pub type MONTHDAYSTATE = DWORD;
pub type LPMONTHDAYSTATE = *mut DWORD;
pub const MCM_FIRST: UINT = 0x1000;
pub const MCM_GETCURSEL: UINT = MCM_FIRST + 1;
pub const MCM_SETCURSEL: UINT = MCM_FIRST + 2;
pub const MCM_GETMAXSELCOUNT: UINT = MCM_FIRST + 3;
pub const MCM_SETMAXSELCOUNT: UINT = MCM_FIRST + 4;
pub const MCM_GETSELRANGE: UINT = MCM_FIRST + 5;
pub const MCM_SETSELRANGE: UINT = MCM_FIRST + 6;
pub const MCM_GETMONTHRANGE: UINT = MCM_FIRST + 7;
pub const MCM_SETDAYSTATE: UINT = MCM_FIRST + 8;
pub const MCM_GETMINREQRECT: UINT = MCM_FIRST + 9;
pub const MCM_SETCOLOR: UINT = MCM_FIRST + 10;
pub const MCM_GETCOLOR: UINT = MCM_FIRST + 11;
pub const MCSC_BACKGROUND: WPARAM = 0;
pub const MCSC_TEXT: WPARAM = 1;
pub const MCSC_TITLEBK: WPARAM = 2;
pub const MCSC_TITLETEXT: WPARAM = 3;
pub const MCSC_MONTHBK: WPARAM = 4;
pub const MCSC_TRAILINGTEXT: WPARAM = 5;
pub const MCM_SETTODAY: UINT = MCM_FIRST + 12;
pub const MCM_GETTODAY: UINT = MCM_FIRST + 13;
pub const MCM_HITTEST: UINT = MCM_FIRST + 14;
STRUCT!{struct MCHITTESTINFO {
    cbSize: UINT,
    pt: POINT,
    uHit: UINT,
    st: SYSTEMTIME,
    rc: RECT,
    iOffset: c_int,
    iRow: c_int,
    iCol: c_int,
}}
pub type PMCHITTESTINFO = *mut MCHITTESTINFO;
pub const MCHT_TITLE: UINT = 0x00010000;
pub const MCHT_CALENDAR: UINT = 0x00020000;
pub const MCHT_TODAYLINK: UINT = 0x00030000;
pub const MCHT_CALENDARCONTROL: UINT = 0x00100000;
pub const MCHT_NEXT: UINT = 0x01000000;
pub const MCHT_PREV: UINT = 0x02000000;
pub const MCHT_NOWHERE: UINT = 0x00000000;
pub const MCHT_TITLEBK: UINT = MCHT_TITLE;
pub const MCHT_TITLEMONTH: UINT = MCHT_TITLE | 0x0001;
pub const MCHT_TITLEYEAR: UINT = MCHT_TITLE | 0x0002;
pub const MCHT_TITLEBTNNEXT: UINT = MCHT_TITLE | MCHT_NEXT | 0x0003;
pub const MCHT_TITLEBTNPREV: UINT = MCHT_TITLE | MCHT_PREV | 0x0003;
pub const MCHT_CALENDARBK: UINT = MCHT_CALENDAR;
pub const MCHT_CALENDARDATE: UINT = MCHT_CALENDAR | 0x0001;
pub const MCHT_CALENDARDATENEXT: UINT = MCHT_CALENDARDATE | MCHT_NEXT;
pub const MCHT_CALENDARDATEPREV: UINT = MCHT_CALENDARDATE | MCHT_PREV;
pub const MCHT_CALENDARDAY: UINT = MCHT_CALENDAR | 0x0002;
pub const MCHT_CALENDARWEEKNUM: UINT = MCHT_CALENDAR | 0x0003;
pub const MCHT_CALENDARDATEMIN: UINT = MCHT_CALENDAR | 0x0004;
pub const MCHT_CALENDARDATEMAX: UINT = MCHT_CALENDAR | 0x0005;
pub const MCM_SETFIRSTDAYOFWEEK: UINT = MCM_FIRST + 15;
pub const MCM_GETFIRSTDAYOFWEEK: UINT = MCM_FIRST + 16;
pub const MCM_GETRANGE: UINT = MCM_FIRST + 17;
pub const MCM_SETRANGE: UINT = MCM_FIRST + 18;
pub const MCM_GETMONTHDELTA: UINT = MCM_FIRST + 19;
pub const MCM_SETMONTHDELTA: UINT = MCM_FIRST + 20;
pub const MCM_GETMAXTODAYWIDTH: UINT = MCM_FIRST + 21;
pub const MCM_SETUNICODEFORMAT: UINT = CCM_SETUNICODEFORMAT;
pub const MCM_GETUNICODEFORMAT: UINT = CCM_GETUNICODEFORMAT;
pub const MCMV_MONTH: DWORD = 0;
pub const MCMV_YEAR: DWORD = 1;
pub const MCMV_DECADE: DWORD = 2;
pub const MCMV_CENTURY: DWORD = 3;
pub const MCMV_MAX: DWORD = MCMV_CENTURY;
pub const MCM_GETCURRENTVIEW: UINT = MCM_FIRST + 22;
pub const MCM_GETCALENDARCOUNT: UINT = MCM_FIRST + 23;
pub const MCGIP_CALENDARCONTROL: DWORD = 0;
pub const MCGIP_NEXT: DWORD = 1;
pub const MCGIP_PREV: DWORD = 2;
pub const MCGIP_FOOTER: DWORD = 3;
pub const MCGIP_CALENDAR: DWORD = 4;
pub const MCGIP_CALENDARHEADER: DWORD = 5;
pub const MCGIP_CALENDARBODY: DWORD = 6;
pub const MCGIP_CALENDARROW: DWORD = 7;
pub const MCGIP_CALENDARCELL: DWORD = 8;
pub const MCGIF_DATE: DWORD = 0x00000001;
pub const MCGIF_RECT: DWORD = 0x00000002;
pub const MCGIF_NAME: DWORD = 0x00000004;
STRUCT!{struct MCGRIDINFO {
    cbSize: UINT,
    dwPart: DWORD,
    dwFlags: DWORD,
    iCalendar: c_int,
    iRow: c_int,
    iCol: c_int,
    bSelected: BOOL,
    stStart: SYSTEMTIME,
    stEnd: SYSTEMTIME,
    rc: RECT,
    pszName: PWSTR,
    cchName: size_t,
}}
pub type PMCGRIDINFO = *mut MCGRIDINFO;
pub const MCM_GETCALENDARGRIDINFO: UINT = MCM_FIRST + 24;
pub const MCM_GETCALID: UINT = MCM_FIRST + 27;
pub const MCM_SETCALID: UINT = MCM_FIRST + 28;
pub const MCM_SIZERECTTOMIN: UINT = MCM_FIRST + 29;
pub const MCM_SETCALENDARBORDER: UINT = MCM_FIRST + 30;
pub const MCM_GETCALENDARBORDER: UINT = MCM_FIRST + 31;
pub const MCM_SETCURRENTVIEW: UINT = MCM_FIRST + 32;
STRUCT!{struct NMSELCHANGE {
    nmhdr: NMHDR,
    stSelStart: SYSTEMTIME,
    stSelEnd: SYSTEMTIME,
}}
pub type LPNMSELCHANGE = *mut NMSELCHANGE;
pub const MCN_SELCHANGE: UINT = MCN_FIRST - 3;
STRUCT!{struct NMDAYSTATE {
    nmhdr: NMHDR,
    stStart: SYSTEMTIME,
    cDayState: c_int,
    prgDayState: LPMONTHDAYSTATE,
}}
pub type LPNMDAYSTATE = *mut NMDAYSTATE;
pub const MCN_GETDAYSTATE: UINT = MCN_FIRST - 1;
pub type NMSELECT = NMSELCHANGE;
pub type LPNMSELECT = *mut NMSELCHANGE;
pub const MCN_SELECT: UINT = MCN_FIRST;
STRUCT!{struct NMVIEWCHANGE {
    nmhdr: NMHDR,
    dwOldView: DWORD,
    dwNewView: DWORD,
}}
pub type LPNMVIEWCHANGE = *mut NMVIEWCHANGE;
pub const MCN_VIEWCHANGE: UINT = MCN_FIRST - 4;
pub const MCS_DAYSTATE: DWORD = 0x0001;
pub const MCS_MULTISELECT: DWORD = 0x0002;
pub const MCS_WEEKNUMBERS: DWORD = 0x0004;
pub const MCS_NOTODAYCIRCLE: DWORD = 0x0008;
pub const MCS_NOTODAY: DWORD = 0x0010;
pub const MCS_NOTRAILINGDATES: DWORD = 0x0040;
pub const MCS_SHORTDAYSOFWEEK: DWORD = 0x0080;
pub const MCS_NOSELCHANGEONNAV: DWORD = 0x0100;
pub const GMR_VISIBLE: DWORD = 0;
pub const GMR_DAYSTATE: DWORD = 1;
pub const DATETIMEPICK_CLASS: &'static str = "SysDateTimePick32";
STRUCT!{struct DATETIMEPICKERINFO {
    cbSize: UINT,
    rcCheck: RECT,
    stateCheck: DWORD,
    rcButton: RECT,
    stateButton: DWORD,
    hwndEdit: HWND,
    hwndUD: HWND,
    hwndDropDown: HWND,
}}
pub type LPDATETIMEPICKERINFO = *mut DATETIMEPICKERINFO;
pub const DTM_FIRST: UINT = 0x1000;
pub const DTM_GETSYSTEMTIME: UINT = DTM_FIRST + 1;
pub const DTM_SETSYSTEMTIME: UINT = DTM_FIRST + 2;
pub const DTM_GETRANGE: UINT = DTM_FIRST + 3;
pub const DTM_SETRANGE: UINT = DTM_FIRST + 4;
pub const DTM_SETFORMATA: UINT = DTM_FIRST + 5;
pub const DTM_SETFORMATW: UINT = DTM_FIRST + 50;
pub const DTM_SETMCCOLOR: UINT = DTM_FIRST + 6;
pub const DTM_GETMCCOLOR: UINT = DTM_FIRST + 7;
pub const DTM_GETMONTHCAL: UINT = DTM_FIRST + 8;
pub const DTM_SETMCFONT: UINT = DTM_FIRST + 9;
pub const DTM_GETMCFONT: UINT = DTM_FIRST + 10;
pub const DTM_SETMCSTYLE: UINT = DTM_FIRST + 11;
pub const DTM_GETMCSTYLE: UINT = DTM_FIRST + 12;
pub const DTM_CLOSEMONTHCAL: UINT = DTM_FIRST + 13;
pub const DTM_GETDATETIMEPICKERINFO: UINT = DTM_FIRST + 14;
pub const DTM_GETIDEALSIZE: UINT = DTM_FIRST + 15;
pub const DTS_UPDOWN: DWORD = 0x0001;
pub const DTS_SHOWNONE: DWORD = 0x0002;
pub const DTS_SHORTDATEFORMAT: DWORD = 0x0000;
pub const DTS_LONGDATEFORMAT: DWORD = 0x0004;
pub const DTS_SHORTDATECENTURYFORMAT: DWORD = 0x000C;
pub const DTS_TIMEFORMAT: DWORD = 0x0009;
pub const DTS_APPCANPARSE: DWORD = 0x0010;
pub const DTS_RIGHTALIGN: DWORD = 0x0020;
pub const DTN_DATETIMECHANGE: UINT = DTN_FIRST2 - 6;
STRUCT!{struct NMDATETIMECHANGE {
    nmhdr: NMHDR,
    dwFlags: DWORD,
    st: SYSTEMTIME,
}}
pub type LPNMDATETIMECHANGE = *mut NMDATETIMECHANGE;
pub const DTN_USERSTRINGA: UINT = DTN_FIRST2 - 5;
pub const DTN_USERSTRINGW: UINT = DTN_FIRST - 5;
STRUCT!{struct NMDATETIMESTRINGA {
    nmhdr: NMHDR,
    pszUserString: LPCSTR,
    st: SYSTEMTIME,
    dwFlags: DWORD,
}}
pub type LPNMDATETIMESTRINGA = *mut NMDATETIMESTRINGA;
STRUCT!{struct NMDATETIMESTRINGW {
    nmhdr: NMHDR,
    pszUserString: LPCWSTR,
    st: SYSTEMTIME,
    dwFlags: DWORD,
}}
pub type LPNMDATETIMESTRINGW = *mut NMDATETIMESTRINGW;
pub const DTN_WMKEYDOWNA: UINT = DTN_FIRST2 - 4;
pub const DTN_WMKEYDOWNW: UINT = DTN_FIRST - 4;
STRUCT!{struct NMDATETIMEWMKEYDOWNA {
    nmhdr: NMHDR,
    nVirtKey: c_int,
    pszFormat: LPCSTR,
    st: SYSTEMTIME,
}}
pub type LPNMDATETIMEWMKEYDOWNA = *mut NMDATETIMEWMKEYDOWNA;
STRUCT!{struct NMDATETIMEWMKEYDOWNW {
    nmhdr: NMHDR,
    nVirtKey: c_int,
    pszFormat: LPCWSTR,
    st: SYSTEMTIME,
}}
pub type LPNMDATETIMEWMKEYDOWNW = *mut NMDATETIMEWMKEYDOWNW;
pub const DTN_FORMATA: UINT = DTN_FIRST2 - 3;
pub const DTN_FORMATW: UINT = DTN_FIRST - 3;
STRUCT!{struct NMDATETIMEFORMATA {
    nmhdr: NMHDR,
    pszFormat: LPCSTR,
    st: SYSTEMTIME,
    pszDisplay: LPCSTR,
    szDisplay: [CHAR; 64],
}}
pub type LPNMDATETIMEFORMATA = *mut NMDATETIMEFORMATA;
STRUCT!{struct NMDATETIMEFORMATW {
    nmhdr: NMHDR,
    pszFormat: LPCWSTR,
    st: SYSTEMTIME,
    pszDisplay: LPCWSTR,
    szDisplay: [WCHAR; 64],
}}
pub type LPNMDATETIMEFORMATW = *mut NMDATETIMEFORMATW;
pub const DTN_FORMATQUERYA: UINT = DTN_FIRST2 - 2;
pub const DTN_FORMATQUERYW: UINT = DTN_FIRST - 2;
STRUCT!{struct NMDATETIMEFORMATQUERYA {
    nmhdr: NMHDR,
    pszFormat: LPCSTR,
    szMax: SIZE,
}}
pub type LPNMDATETIMEFORMATQUERYA = *mut NMDATETIMEFORMATQUERYA;
STRUCT!{struct NMDATETIMEFORMATQUERYW {
    nmhdr: NMHDR,
    pszFormat: LPCWSTR,
    szMax: SIZE,
}}
pub type LPNMDATETIMEFORMATQUERYW = *mut NMDATETIMEFORMATQUERYW;
pub const DTN_DROPDOWN: UINT = DTN_FIRST2 - 1;
pub const DTN_CLOSEUP: UINT = DTN_FIRST2;
pub const GDTR_MIN: WPARAM = 0x0001;
pub const GDTR_MAX: WPARAM = 0x0002;
pub const GDT_ERROR: LRESULT = -1;
pub const GDT_VALID: LRESULT = 0;
pub const GDT_NONE: LRESULT = 1;
pub const IPM_CLEARADDRESS: UINT = WM_USER + 100;
pub const IPM_SETADDRESS: UINT = WM_USER + 101;
pub const IPM_GETADDRESS: UINT = WM_USER + 102;
pub const IPM_SETRANGE: UINT = WM_USER + 103;
pub const IPM_SETFOCUS: UINT = WM_USER + 104;
pub const IPM_ISBLANK: UINT = WM_USER + 105;
pub const WC_IPADDRESS: &'static str = "SysIPAddress32";
pub const IPN_FIELDCHANGED: UINT = IPN_FIRST - 0;
STRUCT!{struct NMIPADDRESS {
    hdr: NMHDR,
    iField: c_int,
    iValue: c_int,
}}
pub type LPNMIPADDRESS = *mut NMIPADDRESS;
#[inline]
pub fn MAKEIPRANGE(low: BYTE, high: BYTE) -> LPARAM {
    (((high as WORD) << 8) + low as WORD) as LPARAM
}
#[inline]
pub fn MAKEIPADDRESS(b1: DWORD, b2: DWORD, b3: DWORD, b4: DWORD) -> LPARAM {
    ((b1 << 24) + (b2 << 16) + (b3 << 8) + b4) as LPARAM
}
#[inline]
pub fn FIRST_IPADDRESS(x: LPARAM) -> BYTE {
    ((x >> 24) & 0xff) as BYTE
}
#[inline]
pub fn SECOND_IPADDRESS(x: LPARAM) -> BYTE {
    ((x >> 16) & 0xff) as BYTE
}
#[inline]
pub fn THIRD_IPADDRESS(x: LPARAM) -> BYTE {
    ((x >> 8) & 0xff) as BYTE
}
#[inline]
pub fn FOURTH_IPADDRESS(x: LPARAM) -> BYTE {
    (x & 0xff) as BYTE
}
pub const WC_PAGESCROLLER: &'static str = "SysPager";
pub const PGS_VERT: DWORD = 0x00000000;
pub const PGS_HORZ: DWORD = 0x00000001;
pub const PGS_AUTOSCROLL: DWORD = 0x00000002;
pub const PGS_DRAGNDROP: DWORD = 0x00000004;
pub const PGF_INVISIBLE: DWORD = 0;
pub const PGF_NORMAL: DWORD = 1;
pub const PGF_GRAYED: DWORD = 2;
pub const PGF_DEPRESSED: DWORD = 4;
pub const PGF_HOT: DWORD = 8;
pub const PGB_TOPORLEFT: c_int = 0;
pub const PGB_BOTTOMORRIGHT: c_int = 1;
pub const PGM_SETCHILD: UINT = PGM_FIRST + 1;
pub const PGM_RECALCSIZE: UINT = PGM_FIRST + 2;
pub const PGM_FORWARDMOUSE: UINT = PGM_FIRST + 3;
pub const PGM_SETBKCOLOR: UINT = PGM_FIRST + 4;
pub const PGM_GETBKCOLOR: UINT = PGM_FIRST + 5;
pub const PGM_SETBORDER: UINT = PGM_FIRST + 6;
pub const PGM_GETBORDER: UINT = PGM_FIRST + 7;
pub const PGM_SETPOS: UINT = PGM_FIRST + 8;
pub const PGM_GETPOS: UINT = PGM_FIRST + 9;
pub const PGM_SETBUTTONSIZE: UINT = PGM_FIRST + 10;
pub const PGM_GETBUTTONSIZE: UINT = PGM_FIRST + 11;
pub const PGM_GETBUTTONSTATE: UINT = PGM_FIRST + 12;
pub const PGM_GETDROPTARGET: UINT = CCM_GETDROPTARGET;
pub const PGM_SETSCROLLINFO: UINT = PGM_FIRST + 13;
pub const PGN_SCROLL: UINT = PGN_FIRST - 1;
pub const PGF_SCROLLUP: c_int = 1;
pub const PGF_SCROLLDOWN: c_int = 2;
pub const PGF_SCROLLLEFT: c_int = 4;
pub const PGF_SCROLLRIGHT: c_int = 8;
pub const PGK_SHIFT: BOOL = 1;
pub const PGK_CONTROL: BOOL = 2;
pub const PGK_MENU: BOOL = 4;
STRUCT!{#[repr(packed)] struct NMPGSCROLL {
    hdr: NMHDR,
    fwKeys: WORD,
    rcParent: RECT,
    iDir: c_int,
    iXpos: c_int,
    iYpos: c_int,
    iScroll: c_int,
}}
pub type LPNMPGSCROLL = *mut NMPGSCROLL;
pub const PGN_CALCSIZE: UINT = PGN_FIRST - 2;
pub const PGF_CALCWIDTH: DWORD = 1;
pub const PGF_CALCHEIGHT: DWORD = 2;
STRUCT!{struct NMPGCALCSIZE {
    hdr: NMHDR,
    dwFlag: DWORD,
    iWidth: c_int,
    iHeight: c_int,
}}
pub type LPNMPGCALCSIZE = *mut NMPGCALCSIZE;
pub const PGN_HOTITEMCHANGE: UINT = PGN_FIRST - 3;
STRUCT!{struct NMPGHOTITEM {
    hdr: NMHDR,
    idOld: c_int,
    idNew: c_int,
    dwFlags: DWORD,
}}
pub type LPNMPGHOTITEM = *mut NMPGHOTITEM;
pub const WC_NATIVEFONTCTL: &'static str = "NativeFontCtl";
pub const NFS_EDIT: DWORD = 0x0001;
pub const NFS_STATIC: DWORD = 0x0002;
pub const NFS_LISTCOMBO: DWORD = 0x0004;
pub const NFS_BUTTON: DWORD = 0x0008;
pub const NFS_ALL: DWORD = 0x0010;
pub const NFS_USEFONTASSOC: DWORD = 0x0020;
pub const WC_BUTTONA: &'static str = "Button";
pub const BUTTON_IMAGELIST_ALIGN_LEFT: UINT = 0;
pub const BUTTON_IMAGELIST_ALIGN_RIGHT: UINT = 1;
pub const BUTTON_IMAGELIST_ALIGN_TOP: UINT = 2;
pub const BUTTON_IMAGELIST_ALIGN_BOTTOM: UINT = 3;
pub const BUTTON_IMAGELIST_ALIGN_CENTER: UINT = 4;
STRUCT!{struct BUTTON_IMAGELIST {
    himl: HIMAGELIST,
    margin: RECT,
    uAlign: UINT,
}}
pub type PBUTTON_IMAGELIST = *mut BUTTON_IMAGELIST;
pub const BCM_GETIDEALSIZE: UINT = BCM_FIRST + 0x0001;
pub const BCM_SETIMAGELIST: UINT = BCM_FIRST + 0x0002;
pub const BCM_GETIMAGELIST: UINT = BCM_FIRST + 0x0003;
pub const BCM_SETTEXTMARGIN: UINT = BCM_FIRST + 0x0004;
pub const BCM_GETTEXTMARGIN: UINT = BCM_FIRST + 0x0005;
STRUCT!{struct NMBCHOTITEM {
    hdr: NMHDR,
    dwFlags: DWORD,
}}
pub type LPNMBCHOTITEM = *mut NMBCHOTITEM;
pub const BCN_HOTITEMCHANGE: UINT = BCN_FIRST + 0x0001;
pub const BS_SPLITBUTTON: UINT = 0x0000000C;
pub const BS_DEFSPLITBUTTON: UINT = 0x0000000D;
pub const BS_COMMANDLINK: UINT = 0x0000000E;
pub const BS_DEFCOMMANDLINK: UINT = 0x0000000F;
pub const BCSIF_GLYPH: UINT = 0x0001;
pub const BCSIF_IMAGE: UINT = 0x0002;
pub const BCSIF_STYLE: UINT = 0x0004;
pub const BCSIF_SIZE: UINT = 0x0008;
pub const BCSS_NOSPLIT: UINT = 0x0001;
pub const BCSS_STRETCH: UINT = 0x0002;
pub const BCSS_ALIGNLEFT: UINT = 0x0004;
pub const BCSS_IMAGE: UINT = 0x0008;
STRUCT!{struct BUTTON_SPLITINFO {
    mask: UINT,
    himlGlyph: HIMAGELIST,
    uSplitStyle: UINT,
    size: SIZE,
}}
pub type PBUTTON_SPLITINFO = *mut BUTTON_SPLITINFO;
pub const BCM_SETDROPDOWNSTATE: UINT = BCM_FIRST + 0x0006;
pub const BCM_SETSPLITINFO: UINT = BCM_FIRST + 0x0007;
pub const BCM_GETSPLITINFO: UINT = BCM_FIRST + 0x0008;
pub const BCM_SETNOTE: UINT = BCM_FIRST + 0x0009;
pub const BCM_GETNOTE: UINT = BCM_FIRST + 0x000A;
pub const BCM_GETNOTELENGTH: UINT = BCM_FIRST + 0x000B;
pub const BCM_SETSHIELD: UINT = BCM_FIRST + 0x000C;
pub const BCCL_NOGLYPH: HIMAGELIST = -1isize as HIMAGELIST;
STRUCT!{struct NMBCDROPDOWN {
    hdr: NMHDR,
    rcButton: RECT,
}}
pub type LPNMBCDROPDOWN = *mut NMBCDROPDOWN;
pub const BCN_DROPDOWN: UINT = BCN_FIRST + 0x0002;
pub const WC_STATIC: &'static str = "Static";
pub const WC_EDIT: &'static str = "Edit";
pub const EM_SETCUEBANNER: UINT = ECM_FIRST + 1;
pub const EM_GETCUEBANNER: UINT = ECM_FIRST + 2;
STRUCT!{struct EDITBALLOONTIP {
    cbStruct: DWORD,
    pszTitle: LPCWSTR,
    pszText: LPCWSTR,
    ttiIcon: INT,
}}
pub type PEDITBALLOONTIP = *mut EDITBALLOONTIP;
pub const EM_SHOWBALLOONTIP: UINT = ECM_FIRST + 3;
pub const EM_HIDEBALLOONTIP: UINT = ECM_FIRST + 4;
pub const EM_SETHILITE: UINT = ECM_FIRST + 5;
pub const EM_GETHILITE: UINT = ECM_FIRST + 6;
pub const EM_NOSETFOCUS: UINT = ECM_FIRST + 7;
pub const EM_TAKEFOCUS: UINT = ECM_FIRST + 8;
pub const WC_LISTBOX: &'static str = "ListBox";
pub const WC_COMBOBOX: &'static str = "ComboBox";
pub const CB_SETMINVISIBLE: UINT = CBM_FIRST + 1;
pub const CB_GETMINVISIBLE: UINT = CBM_FIRST + 2;
pub const CB_SETCUEBANNER: UINT = CBM_FIRST + 3;
pub const CB_GETCUEBANNER: UINT = CBM_FIRST + 4;
pub const WC_SCROLLBAR: &'static str = "ScrollBar";
FN!{stdcall PFTASKDIALOGCALLBACK(
    hwnd: HWND,
    msg: UINT,
    wParam: WPARAM,
    lParam: LPARAM,
    lpRefData: LONG_PTR,
) -> HRESULT}
ENUM!{enum TASKDIALOG_FLAGS {
    TDF_ENABLE_HYPERLINKS = 0x0001,
    TDF_USE_HICON_MAIN = 0x0002,
    TDF_USE_HICON_FOOTER = 0x0004,
    TDF_ALLOW_DIALOG_CANCELLATION = 0x0008,
    TDF_USE_COMMAND_LINKS = 0x0010,
    TDF_USE_COMMAND_LINKS_NO_ICON = 0x0020,
    TDF_EXPAND_FOOTER_AREA = 0x0040,
    TDF_EXPANDED_BY_DEFAULT = 0x0080,
    TDF_VERIFICATION_FLAG_CHECKED = 0x0100,
    TDF_SHOW_PROGRESS_BAR = 0x0200,
    TDF_SHOW_MARQUEE_PROGRESS_BAR = 0x0400,
    TDF_CALLBACK_TIMER = 0x0800,
    TDF_POSITION_RELATIVE_TO_WINDOW = 0x1000,
    TDF_RTL_LAYOUT = 0x2000,
    TDF_NO_DEFAULT_RADIO_BUTTON = 0x4000,
    TDF_CAN_BE_MINIMIZED = 0x8000,
    TDF_NO_SET_FOREGROUND = 0x00010000,
    TDF_SIZE_TO_CONTENT = 0x01000000,
}}
ENUM!{enum TASKDIALOG_MESSAGES {
    TDM_NAVIGATE_PAGE = WM_USER + 101,
    TDM_CLICK_BUTTON = WM_USER + 102,
    TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER + 103,
    TDM_SET_PROGRESS_BAR_STATE = WM_USER + 104,
    TDM_SET_PROGRESS_BAR_RANGE = WM_USER + 105,
    TDM_SET_PROGRESS_BAR_POS = WM_USER + 106,
    TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER + 107,
    TDM_SET_ELEMENT_TEXT = WM_USER + 108,
    TDM_CLICK_RADIO_BUTTON = WM_USER + 110,
    TDM_ENABLE_BUTTON = WM_USER + 111,
    TDM_ENABLE_RADIO_BUTTON = WM_USER + 112,
    TDM_CLICK_VERIFICATION = WM_USER + 113,
    TDM_UPDATE_ELEMENT_TEXT = WM_USER + 114,
    TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER + 115,
    TDM_UPDATE_ICON = WM_USER + 116,
}}
ENUM!{enum TASKDIALOG_NOTIFICATIONS {
    TDN_CREATED = 0,
    TDN_NAVIGATED = 1,
    TDN_BUTTON_CLICKED = 2,
    TDN_HYPERLINK_CLICKED = 3,
    TDN_TIMER = 4,
    TDN_DESTROYED = 5,
    TDN_RADIO_BUTTON_CLICKED = 6,
    TDN_DIALOG_CONSTRUCTED = 7,
    TDN_VERIFICATION_CLICKED = 8,
    TDN_HELP = 9,
    TDN_EXPANDO_BUTTON_CLICKED = 10,
}}
STRUCT!{#[repr(packed)] struct TASKDIALOG_BUTTON {
    nButtonID: c_int,
    pszButtonText: PCWSTR,
}}
ENUM!{enum TASKDIALOG_ELEMENTS {
    TDE_CONTENT,
    TDE_EXPANDED_INFORMATION,
    TDE_FOOTER,
    TDE_MAIN_INSTRUCTION,
}}
ENUM!{enum TASKDIALOG_ICON_ELEMENTS {
    TDIE_ICON_MAIN,
    TDIE_ICON_FOOTER,
}}
pub const TD_WARNING_ICON: LPWSTR = MAKEINTRESOURCE!(-1i16);
pub const TD_ERROR_ICON: LPWSTR = MAKEINTRESOURCE!(-2i16);
pub const TD_INFORMATION_ICON: LPWSTR = MAKEINTRESOURCE!(-3i16);
pub const TD_SHIELD_ICON: LPWSTR = MAKEINTRESOURCE!(-4i16);
ENUM!{enum TASKDIALOG_COMMON_BUTTON_FLAGS {
    TDCBF_OK_BUTTON = 0x0001,
    TDCBF_YES_BUTTON = 0x0002,
    TDCBF_NO_BUTTON = 0x0004,
    TDCBF_CANCEL_BUTTON = 0x0008,
    TDCBF_RETRY_BUTTON = 0x0010,
    TDCBF_CLOSE_BUTTON = 0x0020,
}}
UNION!{#[repr(packed)] union TASKDIALOGCONFIG_u1 {
    [usize; 1],
    hMainIcon hMainIcon_mut: HICON,
    pszMainIcon pszMainIcon_mut: PCWSTR,
}}
UNION!{#[repr(packed)] union TASKDIALOGCONFIG_u2 {
    [usize; 1],
    hFooterIcon hFooterIcon_mut: HICON,
    pszFooterIcon pszFooterIcon_mut: PCWSTR,
}}
STRUCT!{#[repr(packed)] struct TASKDIALOGCONFIG {
    cbSize: UINT,
    hwndParent: HWND,
    hInstance: HINSTANCE,
    dwFlags: TASKDIALOG_FLAGS,
    dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
    pszWindowTitle: PCWSTR,
    u1: TASKDIALOGCONFIG_u1,
    pszMainInstruction: PCWSTR,
    pszContent: PCWSTR,
    cButtons: UINT,
    pButtons: *const TASKDIALOG_BUTTON,
    nDefaultButton: c_int,
    cRadioButtons: UINT,
    pRadioButtons: *const TASKDIALOG_BUTTON,
    nDefaultRadioButton: c_int,
    pszVerificationText: PCWSTR,
    pszExpandedInformation: PCWSTR,
    pszExpandedControlText: PCWSTR,
    pszCollapsedControlText: PCWSTR,
    u2: TASKDIALOGCONFIG_u2,
    pszFooter: PCWSTR,
    pfCallback: PFTASKDIALOGCALLBACK,
    lpCallbackData: LONG_PTR,
    cxWidth: UINT,
}}
extern "system" {
    pub fn TaskDialogIndirect(
        pTaskConfig: *const TASKDIALOGCONFIG,
        pnButton: *mut c_int,
        pnRadioButton: *mut c_int,
        pfVerificationFlagChecked: *mut BOOL,
    ) -> HRESULT;
    pub fn TaskDialog(
        hwndOwner: HWND,
        hInstance: HINSTANCE,
        pszWindowTitle: PCWSTR,
        pszMainInstruction: PCWSTR,
        pszContent: PCWSTR,
        dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
        pszIcon: PCWSTR,
        pnButton: *mut c_int,
    ) -> HRESULT;
    pub fn InitMUILanguage(
        uiLang: LANGID,
    );
    pub fn GetMUILanguage() -> LANGID;
    pub fn _TrackMouseEvent(
        lpEventTrack: LPTRACKMOUSEEVENT,
    ) -> BOOL;
}
pub const WSB_PROP_CYVSCROLL: UINT = 0x00000001;
pub const WSB_PROP_CXHSCROLL: UINT = 0x00000002;
pub const WSB_PROP_CYHSCROLL: UINT = 0x00000004;
pub const WSB_PROP_CXVSCROLL: UINT = 0x00000008;
pub const WSB_PROP_CXHTHUMB: UINT = 0x00000010;
pub const WSB_PROP_CYVTHUMB: UINT = 0x00000020;
pub const WSB_PROP_VBKGCOLOR: UINT = 0x00000040;
pub const WSB_PROP_HBKGCOLOR: UINT = 0x00000080;
pub const WSB_PROP_VSTYLE: UINT = 0x00000100;
pub const WSB_PROP_HSTYLE: UINT = 0x00000200;
pub const WSB_PROP_WINSTYLE: UINT = 0x00000400;
pub const WSB_PROP_PALETTE: UINT = 0x00000800;
pub const WSB_PROP_MASK: UINT = 0x00000FFF;
pub const FSB_FLAT_MODE: INT_PTR = 2;
pub const FSB_ENCARTA_MODE: INT_PTR = 1;
pub const FSB_REGULAR_MODE: INT_PTR = 0;
extern "system" {
    pub fn FlatSB_EnableScrollBar(
        hWnd: HWND,
        wSBflags: c_int,
        wArrows: UINT,
    ) -> BOOL;
    pub fn FlatSB_ShowScrollBar(
        hWnd: HWND,
        code: c_int,
        fShow: BOOL,
    ) -> BOOL;
    pub fn FlatSB_GetScrollRange(
        hWnd: HWND,
        code: c_int,
        lpMinPos: LPINT,
        lpMaxPos: LPINT,
    ) -> BOOL;
    pub fn FlatSB_GetScrollInfo(
        hwnd: HWND,
        code: c_int,
        lpsi: LPSCROLLINFO,
    ) -> BOOL;
    pub fn FlatSB_GetScrollPos(
        hWnd: HWND,
        code: c_int,
    ) -> c_int;
    pub fn FlatSB_GetScrollProp(hWnd: HWND,
        propIndex: c_int,
        pValue: LPINT,
    ) -> BOOL;
    #[cfg(target_pointer_width = "64")]
    pub fn FlatSB_GetScrollPropPtr(
        hWnd: HWND,
        propIndex: c_int,
        pValue: PINT_PTR,
    ) -> BOOL;
    pub fn FlatSB_SetScrollPos(
        hWnd: HWND,
        code: c_int,
        pos: c_int,
        fRedraw: BOOL,
    ) -> c_int;
    pub fn FlatSB_SetScrollInfo(
        hWnd: HWND,
        code: c_int,
        psi: LPSCROLLINFO,
        fRedraw: BOOL,
    ) -> c_int;
    pub fn FlatSB_SetScrollRange(
        hWnd: HWND,
        code: c_int,
        min: c_int,
        max: c_int,
        fRedraw: BOOL,
    ) -> c_int;
    pub fn FlatSB_SetScrollProp(
        hWnd: HWND,
        index: UINT,
        newValue: INT_PTR,
        fRedraw: BOOL,
    ) -> BOOL;
    pub fn InitializeFlatSB(
        hWnd: HWND,
    ) -> BOOL;
    pub fn UninitializeFlatSB(
        hWnd: HWND,
    ) -> HRESULT;
}
FN!{stdcall SUBCLASSPROC(
    hWnd: HWND,
    uMsg: UINT,
    wParam: WPARAM,
    lParam: LPARAM,
    uIdSubclass: UINT_PTR,
    dwRefData: DWORD_PTR,
) -> LRESULT}
extern "system" {
    pub fn SetWindowSubclass(
        hWnd: HWND,
        pfnSubclass: SUBCLASSPROC,
        uIdSubclass: UINT_PTR,
        dwRefData: DWORD_PTR,
    ) -> BOOL;
    pub fn GetWindowSubclass(
        hWnd: HWND,
        pfnSubclass: SUBCLASSPROC,
        uIdSubclass: UINT_PTR,
        pdwRefData: *mut DWORD_PTR,
    ) -> BOOL;
    pub fn RemoveWindowSubclass(
        hWnd: HWND,
        pfnSubclass: SUBCLASSPROC,
        uIdSubclass: UINT_PTR,
    ) -> BOOL;
    pub fn DefSubclassProc(
        hWnd: HWND,
        uMsg: UINT,
        wParam: WPARAM,
        lParam: LPARAM,
    ) -> LRESULT;
}
ENUM!{enum REGCLS {
    LIM_SMALL,
    LIM_LARGE,
}}
extern "system" {
    pub fn LoadIconMetric(
        hinst: HINSTANCE,
        pszName: PCWSTR,
        lims: c_int,
        phico: *mut HICON,
    ) -> HRESULT;
    pub fn LoadIconWithScaleDown(
        hinst: HINSTANCE,
        pszName: PCWSTR,
        cx: c_int,
        cy: c_int,
        phico: *mut HICON,
    ) -> HRESULT;
    pub fn DrawShadowText(
        hdc: HDC,
        pszText: LPCWSTR,
        cch: UINT,
        prc: *mut RECT,
        dwFlags: DWORD,
        crText: COLORREF,
        crShadow: COLORREF,
        ixOffset: c_int,
        iyOffset: c_int,
    ) -> c_int;
}