blob: f79b593c518ab5f78db9cc4f89c7c2c42c9e3563 [file] [log] [blame]
/**
* Windows API header module
*
* Translated from MinGW Windows headers
*
* Authors: Stewart Gordon
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC src/core/sys/windows/_windef.d)
*/
module core.sys.windows.windef;
version (Windows):
@system:
public import core.sys.windows.winnt;
import core.sys.windows.w32api;
enum size_t MAX_PATH = 260;
pure nothrow @nogc {
ushort MAKEWORD(ubyte a, ubyte b) {
return cast(ushort) ((b << 8) | a);
}
ushort MAKEWORD(ushort a, ushort b) {
assert((a & 0xFF00) == 0);
assert((b & 0xFF00) == 0);
return MAKEWORD(cast(ubyte)a, cast(ubyte)b);
}
uint MAKELONG(ushort a, ushort b) {
return cast(uint) ((b << 16) | a);
}
uint MAKELONG(uint a, uint b) {
assert((a & 0xFFFF0000) == 0);
assert((b & 0xFFFF0000) == 0);
return MAKELONG(cast(ushort)a, cast(ushort)b);
}
ushort LOWORD(ulong l) {
return cast(ushort) l;
}
ushort HIWORD(ulong l) {
return cast(ushort) (l >>> 16);
}
ubyte LOBYTE(ushort w) {
return cast(ubyte) w;
}
ubyte HIBYTE(ushort w) {
return cast(ubyte) (w >>> 8);
}
}
enum NULL = null;
static assert (is(typeof({
void test(int* p) {}
test(NULL);
})));
alias ubyte BYTE;
alias ubyte* PBYTE, LPBYTE;
alias ushort USHORT, WORD, ATOM;
alias ushort* PUSHORT, PWORD, LPWORD;
alias uint ULONG, DWORD, UINT, COLORREF;
alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT, LPCOLORREF;
alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
alias float FLOAT;
alias float* PFLOAT;
alias const(void)* PCVOID, LPCVOID;
alias UINT_PTR WPARAM;
alias LONG_PTR LPARAM, LRESULT;
mixin DECLARE_HANDLE!("HHOOK");
mixin DECLARE_HANDLE!("HGLOBAL");
mixin DECLARE_HANDLE!("HLOCAL");
mixin DECLARE_HANDLE!("GLOBALHANDLE");
mixin DECLARE_HANDLE!("LOCALHANDLE");
mixin DECLARE_HANDLE!("HGDIOBJ");
mixin DECLARE_HANDLE!("HACCEL");
mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ);
mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ);
mixin DECLARE_HANDLE!("HCOLORSPACE");
mixin DECLARE_HANDLE!("HDC");
mixin DECLARE_HANDLE!("HGLRC");
mixin DECLARE_HANDLE!("HDESK");
mixin DECLARE_HANDLE!("HENHMETAFILE");
mixin DECLARE_HANDLE!("HFONT", HGDIOBJ);
mixin DECLARE_HANDLE!("HICON");
mixin DECLARE_HANDLE!("HINSTANCE");
mixin DECLARE_HANDLE!("HKEY");
mixin DECLARE_HANDLE!("HMENU");
mixin DECLARE_HANDLE!("HMETAFILE");
mixin DECLARE_HANDLE!("HMODULE");
mixin DECLARE_HANDLE!("HMONITOR");
mixin DECLARE_HANDLE!("HPALETTE");
mixin DECLARE_HANDLE!("HPEN", HGDIOBJ);
mixin DECLARE_HANDLE!("HRGN", HGDIOBJ);
mixin DECLARE_HANDLE!("HRSRC");
mixin DECLARE_HANDLE!("HSTR");
mixin DECLARE_HANDLE!("HTASK");
mixin DECLARE_HANDLE!("HWND");
mixin DECLARE_HANDLE!("HWINSTA");
mixin DECLARE_HANDLE!("HKL");
mixin DECLARE_HANDLE!("HCURSOR");
alias HKEY* PHKEY;
static if (_WIN32_WINNT >= 0x500) {
mixin DECLARE_HANDLE!("HTERMINAL");
mixin DECLARE_HANDLE!("HWINEVENTHOOK");
}
alias extern (Windows) INT_PTR function() nothrow FARPROC, NEARPROC, PROC;
struct RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
}
alias RECT RECTL;
alias RECT* PRECT, NPRECT, LPRECT, PRECTL, LPRECTL;
alias const(RECT)* LPCRECT, LPCRECTL;
struct POINT {
LONG x;
LONG y;
}
alias POINT POINTL;
alias POINT* PPOINT, NPPOINT, LPPOINT, PPOINTL, LPPOINTL;
struct SIZE {
LONG cx;
LONG cy;
}
alias SIZE SIZEL;
alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL;
struct POINTS {
SHORT x;
SHORT y;
}
alias POINTS* PPOINTS, LPPOINTS;
enum : BOOL {
FALSE = 0,
TRUE = 1
}