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