1
|
1 /***********************************************************************\
|
|
2 * w32api.d *
|
|
3 * *
|
|
4 * Windows API header module *
|
|
5 * *
|
|
6 * Translated from MinGW API for MS-Windows 3.12 *
|
|
7 * by Stewart Gordon *
|
|
8 * *
|
|
9 * Placed into public domain *
|
|
10 \***********************************************************************/
|
|
11 module win32.w32api;
|
|
12
|
|
13 const __W32API_VERSION = 3.12;
|
|
14 const __W32API_MAJOR_VERSION = 3;
|
|
15 const __W32API_MINOR_VERSION = 12;
|
|
16
|
|
17 /* These version identifiers are used to specify the minimum version of
|
|
18 * Windows that an application will support.
|
|
19 *
|
|
20 * The programmer should set two version identifiers: one for the
|
|
21 * minimum Windows NT version and one for the minimum Windows 9x
|
|
22 * version. If no Windows NT version is specified, Windows NT 4 is
|
|
23 * assumed. If no Windows 9x version is specified, Windows 95 is
|
|
24 * assumed, unless WindowsNTonly, WindowsXP, Windows2003 or WindowsVista
|
|
25 * is specified, implying that the application supports only the NT line of
|
|
26 * versions.
|
|
27 */
|
|
28
|
|
29 /* For Windows XP and later, assume no Windows 9x support.
|
|
30 * API features new to Windows Vista are not yet included in this
|
|
31 * translation or in MinGW, but this is here ready to start adding them.
|
|
32 */
|
|
33 version (WindowsVista) {
|
|
34 const uint
|
|
35 _WIN32_WINNT = 0x600,
|
|
36 _WIN32_WINDOWS = uint.max;
|
|
37
|
|
38 } else version (Windows2003) {
|
|
39 const uint
|
|
40 _WIN32_WINNT = 0x502,
|
|
41 _WIN32_WINDOWS = uint.max;
|
|
42
|
|
43 } else version (WindowsXP) {
|
|
44 const uint
|
|
45 _WIN32_WINNT = 0x501,
|
|
46 _WIN32_WINDOWS = uint.max;
|
|
47
|
|
48 } else {
|
|
49 /* for earlier Windows versions, separate version identifiers into
|
|
50 * the NT and 9x lines
|
|
51 */
|
|
52 version (Windows2000) {
|
|
53 const uint _WIN32_WINNT = 0x500;
|
|
54 } else {
|
|
55 const uint _WIN32_WINNT = 0x400;
|
|
56 }
|
|
57
|
|
58 version (WindowsNTonly) {
|
|
59 const uint _WIN32_WINDOWS = uint.max;
|
|
60 } else version (WindowsME) {
|
|
61 const uint _WIN32_WINDOWS = 0x500;
|
|
62 } else version (Windows98) {
|
|
63 const uint _WIN32_WINDOWS = 0x410;
|
|
64 } else {
|
|
65 const uint _WIN32_WINDOWS = 0x400;
|
|
66 }
|
|
67 }
|
|
68
|
|
69 // Just a bit of syntactic sugar for the static ifs
|
|
70 const uint WINVER = _WIN32_WINDOWS < _WIN32_WINNT ?
|
|
71 _WIN32_WINDOWS : _WIN32_WINNT;
|
|
72 const bool _WIN32_WINNT_ONLY = _WIN32_WINDOWS == uint.max;
|
|
73
|
|
74 version (IE7) {
|
|
75 const uint _WIN32_IE = 0x700;
|
|
76 } else version (IE602) {
|
|
77 const uint _WIN32_IE = 0x603;
|
|
78 } else version (IE601) {
|
|
79 const uint _WIN32_IE = 0x601;
|
|
80 } else version (IE6) {
|
|
81 const uint _WIN32_IE = 0x600;
|
|
82 } else version (IE56) {
|
|
83 const uint _WIN32_IE = 0x560;
|
|
84 } else version (IE501) {
|
|
85 const uint _WIN32_IE = 0x501;
|
|
86 } else version (IE5) {
|
|
87 const uint _WIN32_IE = 0x500;
|
|
88 } else version (IE401) {
|
|
89 const uint _WIN32_IE = 0x401;
|
|
90 } else version (IE4) {
|
|
91 const uint _WIN32_IE = 0x400;
|
|
92 } else version (IE3) {
|
|
93 const uint _WIN32_IE = 0x300;
|
|
94 } else static if (WINVER >= 0x410) {
|
|
95 const uint _WIN32_IE = 0x400;
|
|
96 } else {
|
|
97 const uint _WIN32_IE = 0;
|
|
98 }
|
|
99
|
|
100 debug (WindowsUnitTest) {
|
|
101 unittest {
|
|
102 printf("Windows NT version: %03x\n", _WIN32_WINNT);
|
|
103 printf("Windows 9x version: %03x\n", _WIN32_WINDOWS);
|
|
104 printf("IE version: %03x\n", _WIN32_IE);
|
|
105 }
|
|
106 }
|