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