File Annotation

Not logged in
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: }