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