1 
2 /***********************************************************************\
3 *                                windef.d                               *
4 *                                                                       *
5 *                       Windows API header module                       *
6 *                                                                       *
7 *                 Translated from MinGW Windows headers                 *
8 *                           by Stewart Gordon                           *
9 *                                                                       *
10 *                       Placed into public domain                       *
11 \***********************************************************************/
12 module win32.windef;
13 
14 public import win32.winnt;
15 private import win32.w32api;
16 
17 const size_t MAX_PATH = 260;
18 
19 ushort MAKEWORD(ubyte a, ubyte b)
20 {
21     return cast(ushort) ((b << 8) | a);
22 }
23 
24 
25 uint MAKELONG(ushort a, ushort b)
26 {
27     return cast(uint) ((b << 16) | a);
28 }
29 
30 
31 ushort LOWORD(uint l)
32 {
33     return cast(ushort) l;
34 }
35 
36 
37 ushort HIWORD(uint l)
38 {
39     return cast(ushort) (l >>> 16);
40 }
41 
42 
43 ubyte LOBYTE(ushort w)
44 {
45     return cast(ubyte) w;
46 }
47 
48 
49 ubyte HIBYTE(ushort w)
50 {
51     return cast(ubyte) (w >>> 8);
52 }
53 
54 
55 template max(T) {
56     T max(T a, T b)
57     {
58         return a > b ? a : b;
59     }
60 }
61 
62 template min(T) {
63     T min(T a, T b)
64     {
65         return a < b ? a : b;
66     }
67 }
68 
69 enum NULL = null;
70 //~ alias null NULL;
71 //~ const void  *NULL = null;
72 alias ubyte  BYTE;
73 alias ubyte *PBYTE, LPBYTE;
74 alias ushort USHORT, WORD, ATOM;
75 alias ushort*PUSHORT, PWORD, LPWORD;
76 alias uint   ULONG, DWORD, UINT, COLORREF;
77 alias uint  *PULONG, PDWORD, LPDWORD, PUINT, LPUINT;
78 alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
79 alias int*PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
80 alias float FLOAT;
81 alias float*PFLOAT;
82 alias CPtr!(void) PCVOID, LPCVOID;
83 
84 alias UINT_PTR WPARAM;
85 alias LONG_PTR LPARAM, LRESULT;
86 
87 alias HANDLE HGLOBAL, HLOCAL, GLOBALHANDLE, LOCALHANDLE, HGDIOBJ, HACCEL,
88              HBITMAP, HBRUSH, HCOLORSPACE, HDC, HGLRC, HDESK, HENHMETAFILE, HFONT,
89              HICON, HINSTANCE, HKEY, HMENU, HMETAFILE, HMODULE, HMONITOR, HPALETTE, HPEN,
90              HRGN, HRSRC, HSTR, HTASK, HWND, HWINSTA, HKL, HCURSOR;
91 alias HANDLE*PHKEY;
92 
93 static
94 
95 if (WINVER >= 0x500)
96 {
97     alias HANDLE HTERMINAL, HWINEVENTHOOK;
98 }
99 
100 alias extern (Windows) int function() FARPROC, NEARPROC, PROC;
101 
102 struct RECT
103 {
104     LONG left;
105     LONG top;
106     LONG right;
107     LONG bottom;
108 }
109 alias RECT RECTL;
110 alias RECT*PRECT, LPRECT, PRECTL, LPRECTL;
111 alias CPtr!(RECT) LPCRECT, LPCRECTL;
112 
113 struct POINT
114 {
115     LONG x;
116     LONG y;
117     alias x e1;
118     alias y e2;
119 }
120 alias POINT POINTL;
121 alias POINT*PPOINT, LPPOINT, PPOINTL, LPPOINTL;
122 
123 struct SIZE
124 {
125     LONG cx;
126     LONG cy;
127 }
128 alias SIZE SIZEL;
129 alias SIZE*PSIZE, LPSIZE, PSIZEL, LPSIZEL;
130 
131 struct POINTS
132 {
133     SHORT x;
134     SHORT y;
135 }
136 alias POINTS*PPOINTS, LPPOINTS;
137 
138 enum : BOOL {
139     FALSE = 0,
140     TRUE  = 1
141 }