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