4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * w32api.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW API for MS-Windows 3.12 * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.w32api; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const __W32API_VERSION = 3.12; 4e2933c620 2015-04-21 kinaba: const __W32API_MAJOR_VERSION = 3; 4e2933c620 2015-04-21 kinaba: const __W32API_MINOR_VERSION = 12; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* These version identifiers are used to specify the minimum version of 4e2933c620 2015-04-21 kinaba: * Windows that an application will support. 4e2933c620 2015-04-21 kinaba: * 4e2933c620 2015-04-21 kinaba: * The programmer should set two version identifiers: one for the 4e2933c620 2015-04-21 kinaba: * minimum Windows NT version and one for the minimum Windows 9x 4e2933c620 2015-04-21 kinaba: * version. If no Windows NT version is specified, Windows NT 4 is 4e2933c620 2015-04-21 kinaba: * assumed. If no Windows 9x version is specified, Windows 95 is 4e2933c620 2015-04-21 kinaba: * assumed, unless WindowsNTonly, WindowsXP, Windows2003 or WindowsVista 4e2933c620 2015-04-21 kinaba: * is specified, implying that the application supports only the NT line of 4e2933c620 2015-04-21 kinaba: * versions. 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* For Windows XP and later, assume no Windows 9x support. 4e2933c620 2015-04-21 kinaba: * API features new to Windows Vista are not yet included in this 4e2933c620 2015-04-21 kinaba: * translation or in MinGW, but this is here ready to start adding them. 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: version (WindowsVista) { 4e2933c620 2015-04-21 kinaba: const uint 4e2933c620 2015-04-21 kinaba: _WIN32_WINNT = 0x600, 4e2933c620 2015-04-21 kinaba: _WIN32_WINDOWS = uint.max; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: } else version (Windows2003) { 4e2933c620 2015-04-21 kinaba: const uint 4e2933c620 2015-04-21 kinaba: _WIN32_WINNT = 0x502, 4e2933c620 2015-04-21 kinaba: _WIN32_WINDOWS = uint.max; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: } else version (WindowsXP) { 4e2933c620 2015-04-21 kinaba: const uint 4e2933c620 2015-04-21 kinaba: _WIN32_WINNT = 0x501, 4e2933c620 2015-04-21 kinaba: _WIN32_WINDOWS = uint.max; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: /* for earlier Windows versions, separate version identifiers into 4e2933c620 2015-04-21 kinaba: * the NT and 9x lines 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: version (Windows2000) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_WINNT = 0x500; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_WINNT = 0x400; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (WindowsNTonly) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_WINDOWS = uint.max; 4e2933c620 2015-04-21 kinaba: } else version (WindowsME) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_WINDOWS = 0x500; 4e2933c620 2015-04-21 kinaba: } else version (Windows98) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_WINDOWS = 0x410; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_WINDOWS = 0x400; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // Just a bit of syntactic sugar for the static ifs 4e2933c620 2015-04-21 kinaba: const uint WINVER = _WIN32_WINDOWS < _WIN32_WINNT ? 4e2933c620 2015-04-21 kinaba: _WIN32_WINDOWS : _WIN32_WINNT; 4e2933c620 2015-04-21 kinaba: const bool _WIN32_WINNT_ONLY = _WIN32_WINDOWS == uint.max; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (IE7) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x700; 4e2933c620 2015-04-21 kinaba: } else version (IE602) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x603; 4e2933c620 2015-04-21 kinaba: } else version (IE601) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x601; 4e2933c620 2015-04-21 kinaba: } else version (IE6) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x600; 4e2933c620 2015-04-21 kinaba: } else version (IE56) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x560; 4e2933c620 2015-04-21 kinaba: } else version (IE501) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x501; 4e2933c620 2015-04-21 kinaba: } else version (IE5) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x500; 4e2933c620 2015-04-21 kinaba: } else version (IE401) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x401; 4e2933c620 2015-04-21 kinaba: } else version (IE4) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x400; 4e2933c620 2015-04-21 kinaba: } else version (IE3) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x300; 4e2933c620 2015-04-21 kinaba: } else static if (WINVER >= 0x410) { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0x400; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: const uint _WIN32_IE = 0; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: debug (WindowsUnitTest) { 4e2933c620 2015-04-21 kinaba: unittest { 4e2933c620 2015-04-21 kinaba: printf("Windows NT version: %03x\n", _WIN32_WINNT); 4e2933c620 2015-04-21 kinaba: printf("Windows 9x version: %03x\n", _WIN32_WINDOWS); 4e2933c620 2015-04-21 kinaba: printf("IE version: %03x\n", _WIN32_IE); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: }