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: * * 9b639cf2d6 2015-05-05 kinaba: * Translated from MinGW API for MS-Windows 4.0 * 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: 9b639cf2d6 2015-05-05 kinaba: enum __W32API_VERSION = 3.17; 9b639cf2d6 2015-05-05 kinaba: enum __W32API_MAJOR_VERSION = 3; 9b639cf2d6 2015-05-05 kinaba: enum __W32API_MINOR_VERSION = 17; 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: /* These version identifiers are used to specify the minimum version of Windows that an 9b639cf2d6 2015-05-05 kinaba: * application will support. 4e2933c620 2015-04-21 kinaba: * 9b639cf2d6 2015-05-05 kinaba: * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since 9b639cf2d6 2015-05-05 kinaba: * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been 9b639cf2d6 2015-05-05 kinaba: * removed in order to simplify the bindings. 4e2933c620 2015-04-21 kinaba: */ 9b639cf2d6 2015-05-05 kinaba: version (Windows10) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x604; 9b639cf2d6 2015-05-05 kinaba: } else version (Windows8_1) { // also Windows2012R2 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x603; 9b639cf2d6 2015-05-05 kinaba: } else version (Windows8) { // also Windows2012 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x602; 9b639cf2d6 2015-05-05 kinaba: } else version (Windows7) { // also Windows2008R2 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x601; 9b639cf2d6 2015-05-05 kinaba: } else version (WindowsVista) { // also Windows2008 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x600; 9b639cf2d6 2015-05-05 kinaba: } else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x502; 4e2933c620 2015-04-21 kinaba: } else version (WindowsXP) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x501; 9b639cf2d6 2015-05-05 kinaba: } else version (Windows2000) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x500; 9b639cf2d6 2015-05-05 kinaba: } else { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_WINNT = 0x501; 9b639cf2d6 2015-05-05 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: version (IE10) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0xA00; 9b639cf2d6 2015-05-05 kinaba: } else version (IE9) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x900; 9b639cf2d6 2015-05-05 kinaba: } else version (IE8) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x800; 9b639cf2d6 2015-05-05 kinaba: } else version (IE7) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x700; 9b639cf2d6 2015-05-05 kinaba: } else version (IE602) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x603; 9b639cf2d6 2015-05-05 kinaba: } else version (IE601) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x601; 9b639cf2d6 2015-05-05 kinaba: } else version (IE6) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x600; 9b639cf2d6 2015-05-05 kinaba: } else version (IE56) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x560; 9b639cf2d6 2015-05-05 kinaba: } else version (IE501) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x501; 9b639cf2d6 2015-05-05 kinaba: } else version (IE5) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x500; 9b639cf2d6 2015-05-05 kinaba: } else version (IE401) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x401; 9b639cf2d6 2015-05-05 kinaba: } else version (IE4) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x400; 9b639cf2d6 2015-05-05 kinaba: } else version (IE3) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x300; 9b639cf2d6 2015-05-05 kinaba: } else static if (_WIN32_WINNT >= 0x410) { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0x400; 4e2933c620 2015-04-21 kinaba: } else { 9b639cf2d6 2015-05-05 kinaba: enum uint _WIN32_IE = 0; 9b639cf2d6 2015-05-05 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: debug (WindowsUnitTest) { 9b639cf2d6 2015-05-05 kinaba: unittest { 9b639cf2d6 2015-05-05 kinaba: printf("Windows NT version: %03x\n", _WIN32_WINNT); 9b639cf2d6 2015-05-05 kinaba: printf("IE version: %03x\n", _WIN32_IE); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: version (Unicode) { 9b639cf2d6 2015-05-05 kinaba: enum bool _WIN32_UNICODE = true; 9b639cf2d6 2015-05-05 kinaba: package template DECLARE_AW(string name) { 9b639cf2d6 2015-05-05 kinaba: mixin("alias " ~ name ~ "W " ~ name ~ ";"); 9b639cf2d6 2015-05-05 kinaba: } 4e2933c620 2015-04-21 kinaba: } else { 9b639cf2d6 2015-05-05 kinaba: enum bool _WIN32_UNICODE = false; 9b639cf2d6 2015-05-05 kinaba: package template DECLARE_AW(string name) { 9b639cf2d6 2015-05-05 kinaba: mixin("alias " ~ name ~ "A " ~ name ~ ";"); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: }