1/** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_windef.d) 9 */ 10module core.sys.windows.windef; 11version (Windows): 12@system: 13 14public import core.sys.windows.winnt; 15import core.sys.windows.w32api; 16 17enum size_t MAX_PATH = 260; 18 19pure nothrow @nogc { 20 ushort MAKEWORD(ubyte a, ubyte b) { 21 return cast(ushort) ((b << 8) | a); 22 } 23 24 ushort MAKEWORD(ushort a, ushort b) { 25 assert((a & 0xFF00) == 0); 26 assert((b & 0xFF00) == 0); 27 return MAKEWORD(cast(ubyte)a, cast(ubyte)b); 28 } 29 30 uint MAKELONG(ushort a, ushort b) { 31 return cast(uint) ((b << 16) | a); 32 } 33 34 uint MAKELONG(uint a, uint b) { 35 assert((a & 0xFFFF0000) == 0); 36 assert((b & 0xFFFF0000) == 0); 37 return MAKELONG(cast(ushort)a, cast(ushort)b); 38 } 39 40 ushort LOWORD(ulong l) { 41 return cast(ushort) l; 42 } 43 44 ushort HIWORD(ulong l) { 45 return cast(ushort) (l >>> 16); 46 } 47 48 ubyte LOBYTE(ushort w) { 49 return cast(ubyte) w; 50 } 51 52 ubyte HIBYTE(ushort w) { 53 return cast(ubyte) (w >>> 8); 54 } 55} 56 57enum NULL = null; 58static assert (is(typeof({ 59 void test(int* p) {} 60 test(NULL); 61}))); 62 63alias ubyte BYTE; 64alias ubyte* PBYTE, LPBYTE; 65alias ushort USHORT, WORD, ATOM; 66alias ushort* PUSHORT, PWORD, LPWORD; 67alias uint ULONG, DWORD, UINT, COLORREF; 68alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT, LPCOLORREF; 69alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; 70alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; 71alias float FLOAT; 72alias float* PFLOAT; 73alias const(void)* PCVOID, LPCVOID; 74 75alias UINT_PTR WPARAM; 76alias LONG_PTR LPARAM, LRESULT; 77 78mixin DECLARE_HANDLE!("HHOOK"); 79mixin DECLARE_HANDLE!("HGLOBAL"); 80mixin DECLARE_HANDLE!("HLOCAL"); 81mixin DECLARE_HANDLE!("GLOBALHANDLE"); 82mixin DECLARE_HANDLE!("LOCALHANDLE"); 83mixin DECLARE_HANDLE!("HGDIOBJ"); 84mixin DECLARE_HANDLE!("HACCEL"); 85mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ); 86mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ); 87mixin DECLARE_HANDLE!("HCOLORSPACE"); 88mixin DECLARE_HANDLE!("HDC"); 89mixin DECLARE_HANDLE!("HGLRC"); 90mixin DECLARE_HANDLE!("HDESK"); 91mixin DECLARE_HANDLE!("HENHMETAFILE"); 92mixin DECLARE_HANDLE!("HFONT", HGDIOBJ); 93mixin DECLARE_HANDLE!("HICON"); 94mixin DECLARE_HANDLE!("HINSTANCE"); 95mixin DECLARE_HANDLE!("HKEY"); 96mixin DECLARE_HANDLE!("HMENU"); 97mixin DECLARE_HANDLE!("HMETAFILE"); 98mixin DECLARE_HANDLE!("HMODULE"); 99mixin DECLARE_HANDLE!("HMONITOR"); 100mixin DECLARE_HANDLE!("HPALETTE"); 101mixin DECLARE_HANDLE!("HPEN", HGDIOBJ); 102mixin DECLARE_HANDLE!("HRGN", HGDIOBJ); 103mixin DECLARE_HANDLE!("HRSRC"); 104mixin DECLARE_HANDLE!("HSTR"); 105mixin DECLARE_HANDLE!("HTASK"); 106mixin DECLARE_HANDLE!("HWND"); 107mixin DECLARE_HANDLE!("HWINSTA"); 108mixin DECLARE_HANDLE!("HKL"); 109mixin DECLARE_HANDLE!("HCURSOR"); 110alias HKEY* PHKEY; 111 112static if (_WIN32_WINNT >= 0x500) { 113 mixin DECLARE_HANDLE!("HTERMINAL"); 114 mixin DECLARE_HANDLE!("HWINEVENTHOOK"); 115} 116 117alias extern (Windows) INT_PTR function() nothrow FARPROC, NEARPROC, PROC; 118 119struct RECT { 120 LONG left; 121 LONG top; 122 LONG right; 123 LONG bottom; 124} 125alias RECT RECTL; 126alias RECT* PRECT, NPRECT, LPRECT, PRECTL, LPRECTL; 127alias const(RECT)* LPCRECT, LPCRECTL; 128 129struct POINT { 130 LONG x; 131 LONG y; 132} 133alias POINT POINTL; 134alias POINT* PPOINT, NPPOINT, LPPOINT, PPOINTL, LPPOINTL; 135 136struct SIZE { 137 LONG cx; 138 LONG cy; 139} 140alias SIZE SIZEL; 141alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; 142 143struct POINTS { 144 SHORT x; 145 SHORT y; 146} 147alias POINTS* PPOINTS, LPPOINTS; 148 149enum : BOOL { 150 FALSE = 0, 151 TRUE = 1 152} 153