4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * windef.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 Windows headers * 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: \***********************************************************************/ c2b7a98c21 2011-02-23 kinaba: module win32.windef; c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: public import win32.winnt; 4e2933c620 2015-04-21 kinaba: private import win32.w32api; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const size_t MAX_PATH = 260; 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: ushort MAKEWORD(ubyte a, ubyte b) { 9b639cf2d6 2015-05-05 kinaba: return cast(ushort) ((b << 8) | a); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: ushort MAKEWORD(ushort a, ushort b) { 9b639cf2d6 2015-05-05 kinaba: assert((a & 0xFF00) == 0); 9b639cf2d6 2015-05-05 kinaba: assert((b & 0xFF00) == 0); 9b639cf2d6 2015-05-05 kinaba: return MAKEWORD(cast(ubyte)a, cast(ubyte)b); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: uint MAKELONG(ushort a, ushort b) { 9b639cf2d6 2015-05-05 kinaba: return cast(uint) ((b << 16) | a); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: uint MAKELONG(uint a, uint b) { 9b639cf2d6 2015-05-05 kinaba: assert((a & 0xFFFF0000) == 0); 9b639cf2d6 2015-05-05 kinaba: assert((b & 0xFFFF0000) == 0); 9b639cf2d6 2015-05-05 kinaba: return MAKELONG(cast(ushort)a, cast(ushort)b); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: ushort LOWORD(ulong l) { 9b639cf2d6 2015-05-05 kinaba: return cast(ushort) l; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: ushort HIWORD(ulong l) { 9b639cf2d6 2015-05-05 kinaba: return cast(ushort) (l >>> 16); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: ubyte LOBYTE(ushort w) { 9b639cf2d6 2015-05-05 kinaba: return cast(ubyte) w; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: ubyte HIBYTE(ushort w) { 9b639cf2d6 2015-05-05 kinaba: return cast(ubyte) (w >>> 8); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: template max(T) { 9b639cf2d6 2015-05-05 kinaba: T max(T a, T b) { 9b639cf2d6 2015-05-05 kinaba: return a > b ? a : b; 9b639cf2d6 2015-05-05 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: template min(T) { 9b639cf2d6 2015-05-05 kinaba: T min(T a, T b) { 9b639cf2d6 2015-05-05 kinaba: return a < b ? a : b; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: } 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum void* NULL = null; 9b639cf2d6 2015-05-05 kinaba: alias ubyte BYTE; 9b639cf2d6 2015-05-05 kinaba: alias ubyte* PBYTE, LPBYTE; 9b639cf2d6 2015-05-05 kinaba: alias ushort USHORT, WORD, ATOM; 9b639cf2d6 2015-05-05 kinaba: alias ushort* PUSHORT, PWORD, LPWORD; 9b639cf2d6 2015-05-05 kinaba: alias uint ULONG, DWORD, UINT, COLORREF; 9b639cf2d6 2015-05-05 kinaba: alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT; 9b639cf2d6 2015-05-05 kinaba: alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; 9b639cf2d6 2015-05-05 kinaba: alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; 9b639cf2d6 2015-05-05 kinaba: alias float FLOAT; 9b639cf2d6 2015-05-05 kinaba: alias float* PFLOAT; 9b639cf2d6 2015-05-05 kinaba: alias const(void)* PCVOID, LPCVOID; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias UINT_PTR WPARAM; 4e2933c620 2015-04-21 kinaba: alias LONG_PTR LPARAM, LRESULT; 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HGLOBAL"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HLOCAL"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("GLOBALHANDLE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("LOCALHANDLE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HGDIOBJ"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HACCEL"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HCOLORSPACE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HDC"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HGLRC"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HDESK"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HENHMETAFILE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HFONT", HGDIOBJ); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HICON"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HINSTANCE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HKEY"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HMENU"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HMETAFILE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HMODULE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HMONITOR"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HPALETTE"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HPEN", HGDIOBJ); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HRGN", HGDIOBJ); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HRSRC"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HSTR"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HTASK"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HWND"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HWINSTA"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HKL"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HCURSOR"); 9b639cf2d6 2015-05-05 kinaba: alias HKEY* PHKEY; 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: static if (_WIN32_WINNT >= 0x500) { 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HTERMINAL"); 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("HWINEVENTHOOK"); 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 9b639cf2d6 2015-05-05 kinaba: alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; c2b7a98c21 2011-02-23 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct RECT { 9b639cf2d6 2015-05-05 kinaba: LONG left; 9b639cf2d6 2015-05-05 kinaba: LONG top; 9b639cf2d6 2015-05-05 kinaba: LONG right; 9b639cf2d6 2015-05-05 kinaba: LONG bottom; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias RECT RECTL; 9b639cf2d6 2015-05-05 kinaba: alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; 9b639cf2d6 2015-05-05 kinaba: alias const(RECT)* LPCRECT, LPCRECTL; c2b7a98c21 2011-02-23 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct POINT { 9b639cf2d6 2015-05-05 kinaba: LONG x; 9b639cf2d6 2015-05-05 kinaba: LONG y; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias POINT POINTL; 9b639cf2d6 2015-05-05 kinaba: alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; c2b7a98c21 2011-02-23 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct SIZE { 9b639cf2d6 2015-05-05 kinaba: LONG cx; 9b639cf2d6 2015-05-05 kinaba: LONG cy; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SIZE SIZEL; 9b639cf2d6 2015-05-05 kinaba: alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; c2b7a98c21 2011-02-23 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct POINTS { 9b639cf2d6 2015-05-05 kinaba: SHORT x; 9b639cf2d6 2015-05-05 kinaba: SHORT y; 4e2933c620 2015-04-21 kinaba: } 9b639cf2d6 2015-05-05 kinaba: alias POINTS* PPOINTS, LPPOINTS; c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum : BOOL { 9b639cf2d6 2015-05-05 kinaba: FALSE = 0, 9b639cf2d6 2015-05-05 kinaba: TRUE = 1 4e2933c620 2015-04-21 kinaba: }