Import w32api version 2.5 include files
[reactos.git] / reactos / w32api / include / windef.h
1 #ifndef _WINDEF_H
2 #define _WINDEF_H
3 #if __GNUC__ >=3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #ifndef WINVER
12 #define WINVER 0x0400
13 /*
14 * If you need Win32 API features newer the Win95 and WinNT then you must
15 * define WINVER before including windows.h or any other method of including
16 * the windef.h header.
17 */
18 #endif
19 #ifndef _WIN32_WINNT
20 #define _WIN32_WINNT WINVER
21 /*
22 * There may be the need to define _WIN32_WINNT to a value different from
23 * the value of WINVER. I don't have any example of why you would do that.
24 * However, if you must then define _WIN32_WINNT to the value required before
25 * including windows.h or any other method of including the windef.h header.
26 */
27 #endif
28 #ifndef WIN32
29 #define WIN32
30 #endif
31 #ifndef _WIN32
32 #define _WIN32
33 #endif
34 #define FAR
35 #define far
36 #define NEAR
37 #define near
38 #ifndef CONST
39 #define CONST const
40 #endif
41 #undef MAX_PATH
42 #define MAX_PATH 260
43
44 #ifndef NULL
45 #ifdef __cplusplus
46 #define NULL 0
47 #else
48 #define NULL ((void*)0)
49 #endif
50 #endif
51 #ifndef FALSE
52 #define FALSE 0
53 #endif
54 #ifndef TRUE
55 #define TRUE 1
56 #endif
57 #define IN
58 #define OUT
59 #ifndef OPTIONAL
60 #define OPTIONAL
61 #endif
62
63 #ifdef __GNUC__
64 #define PACKED __attribute__((packed))
65 #ifndef _fastcall
66 #define _fastcall __attribute__((fastcall))
67 #endif
68 #ifndef __fastcall
69 #define __fastcall __attribute__((fastcall))
70 #endif
71 #ifndef _stdcall
72 #define _stdcall __attribute__((stdcall))
73 #endif
74 #ifndef __stdcall
75 #define __stdcall __attribute__((stdcall))
76 #endif
77 #ifndef _cdecl
78 #define _cdecl __attribute__((cdecl))
79 #endif
80 #ifndef __cdecl
81 #define __cdecl __attribute__((cdecl))
82 #endif
83 #ifndef __declspec
84 #define __declspec(e) __attribute__((e))
85 #endif
86 #ifndef _declspec
87 #define _declspec(e) __attribute__((e))
88 #endif
89 #elif defined(__WATCOMC__)
90 #define PACKED
91 #else
92 #define PACKED
93 #define _cdecl
94 #define __cdecl
95 #endif
96
97 #undef pascal
98 #undef _pascal
99 #undef __pascal
100 #define pascal __stdcall
101 #define _pascal __stdcall
102 #define __pascal __stdcall
103 #define PASCAL _pascal
104 #define CDECL _cdecl
105 #define STDCALL __stdcall
106 #define FASTCALL __fastcall
107 #define WINAPI __stdcall
108 #define WINAPIV __cdecl
109 #define APIENTRY __stdcall
110 #define CALLBACK __stdcall
111 #define APIPRIVATE __stdcall
112
113 #define DECLSPEC_IMPORT __declspec(dllimport)
114 #define DECLSPEC_EXPORT __declspec(dllexport)
115 #ifdef __GNUC__
116 #define DECLSPEC_NORETURN __declspec(noreturn)
117 #define DECLARE_STDCALL_P( type ) __stdcall type
118 #elif defined(__WATCOMC__)
119 #define DECLSPEC_NORETURN
120 #define DECLARE_STDCALL_P( type ) type __stdcall
121 #endif /* __GNUC__/__WATCOMC__ */
122 #define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
123 #define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
124 #define LOWORD(l) ((WORD)((DWORD)(l)))
125 #define HIWORD(l) ((WORD)(((DWORD)(l)>>16)&0xFFFF))
126 #define LOBYTE(w) ((BYTE)(w))
127 #define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF))
128
129 #ifndef __WATCOMC__
130 #ifndef _export
131 #define _export
132 #endif
133 #ifndef __export
134 #define __export
135 #endif
136 #endif
137
138 #ifndef NOMINMAX
139 #ifndef max
140 #define max(a,b) ((a)>(b)?(a):(b))
141 #endif
142 #ifndef min
143 #define min(a,b) ((a)<(b)?(a):(b))
144 #endif
145 #endif
146
147 #define UNREFERENCED_PARAMETER(P) {(P)=(P);}
148 #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);}
149 #define DBG_UNREFERENCED_PARAMETER(P)
150 #define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
151
152 #ifdef __GNUC__
153 #ifndef NONAMELESSUNION
154 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
155 #define _ANONYMOUS_UNION __extension__
156 #define _ANONYMOUS_STRUCT __extension__
157 #else
158 #if defined(__cplusplus)
159 #define _ANONYMOUS_UNION __extension__
160 #endif /* __cplusplus */
161 #endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
162 #endif /* NONAMELESSUNION */
163 #elif defined(__WATCOMC__)
164 #define _ANONYMOUS_UNION
165 #define _ANONYMOUS_STRUCT
166 #endif /* __GNUC__/__WATCOMC__ */
167
168 #ifndef _ANONYMOUS_UNION
169 #define _ANONYMOUS_UNION
170 #define _UNION_NAME(x) x
171 #define DUMMYUNIONNAME u
172 #define DUMMYUNIONNAME2 u2
173 #define DUMMYUNIONNAME3 u3
174 #define DUMMYUNIONNAME4 u4
175 #define DUMMYUNIONNAME5 u5
176 #define DUMMYUNIONNAME6 u6
177 #define DUMMYUNIONNAME7 u7
178 #define DUMMYUNIONNAME8 u8
179 #else
180 #define _UNION_NAME(x)
181 #define DUMMYUNIONNAME
182 #define DUMMYUNIONNAME2
183 #define DUMMYUNIONNAME3
184 #define DUMMYUNIONNAME4
185 #define DUMMYUNIONNAME5
186 #define DUMMYUNIONNAME6
187 #define DUMMYUNIONNAME7
188 #define DUMMYUNIONNAME8
189 #endif
190 #ifndef _ANONYMOUS_STRUCT
191 #define _ANONYMOUS_STRUCT
192 #define _STRUCT_NAME(x) x
193 #define DUMMYSTRUCTNAME s
194 #define DUMMYSTRUCTNAME2 s2
195 #define DUMMYSTRUCTNAME3 s3
196 #else
197 #define _STRUCT_NAME(x)
198 #define DUMMYSTRUCTNAME
199 #define DUMMYSTRUCTNAME2
200 #define DUMMYSTRUCTNAME3
201 #endif
202
203 #ifndef NO_STRICT
204 #ifndef STRICT
205 #define STRICT 1
206 #endif
207 #endif
208
209 /* FIXME: This will make some code compile. The programs will most
210 likely crash when an exception is raised, but at least they will
211 compile. */
212 #if defined (__GNUC__) && defined (__SEH_NOOP)
213 #define __try
214 #define __except(x) if (0) /* don't execute handler */
215 #define __finally
216
217 #define _try __try
218 #define _except __except
219 #define _finally __finally
220 #endif
221
222 typedef unsigned long DWORD;
223 typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
224 /* FIXME: Is there a good solution to this? */
225 #ifndef XFree86Server
226 #ifndef __OBJC__
227 typedef WINBOOL BOOL;
228 #else
229 #define BOOL WINBOOL
230 #endif
231 typedef unsigned char BYTE;
232 #endif /* ndef XFree86Server */
233 typedef BOOL *PBOOL,*LPBOOL;
234 typedef unsigned short WORD;
235 typedef float FLOAT;
236 typedef FLOAT *PFLOAT;
237 typedef BYTE *PBYTE,*LPBYTE;
238 typedef int *PINT,*LPINT;
239 typedef WORD *PWORD,*LPWORD;
240 typedef long *LPLONG;
241 typedef DWORD *PDWORD,*LPDWORD;
242 typedef CONST void *PCVOID,*LPCVOID;
243 typedef int INT;
244 typedef unsigned int UINT,*PUINT,*LPUINT;
245
246 #include <winnt.h>
247
248 typedef UINT_PTR WPARAM;
249 typedef LONG_PTR LPARAM;
250 typedef LONG_PTR LRESULT;
251 #ifndef _HRESULT_DEFINED
252 typedef LONG HRESULT;
253 #define _HRESULT_DEFINED
254 #endif
255 #ifndef XFree86Server
256 typedef WORD ATOM;
257 #endif /* XFree86Server */
258 typedef HANDLE HGLOBAL;
259 typedef HANDLE HLOCAL;
260 typedef HANDLE GLOBALHANDLE;
261 typedef HANDLE LOCALHANDLE;
262 typedef void *HGDIOBJ;
263 DECLARE_HANDLE(HACCEL);
264 DECLARE_HANDLE(HBITMAP);
265 DECLARE_HANDLE(HBRUSH);
266 DECLARE_HANDLE(HCOLORSPACE);
267 DECLARE_HANDLE(HDC);
268 DECLARE_HANDLE(HGLRC);
269 DECLARE_HANDLE(HDESK);
270 DECLARE_HANDLE(HENHMETAFILE);
271 DECLARE_HANDLE(HFONT);
272 DECLARE_HANDLE(HICON);
273 DECLARE_HANDLE(HKEY);
274 /* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */
275 /* #if (WINVER >= 0x0500) */
276 DECLARE_HANDLE(HMONITOR);
277 #define HMONITOR_DECLARED 1
278 DECLARE_HANDLE(HTERMINAL);
279 DECLARE_HANDLE(HWINEVENTHOOK);
280 /* #endif */
281 typedef HKEY *PHKEY;
282 DECLARE_HANDLE(HMENU);
283 DECLARE_HANDLE(HMETAFILE);
284 DECLARE_HANDLE(HINSTANCE);
285 typedef HINSTANCE HMODULE;
286 DECLARE_HANDLE(HPALETTE);
287 DECLARE_HANDLE(HPEN);
288 DECLARE_HANDLE(HRGN);
289 DECLARE_HANDLE(HRSRC);
290 DECLARE_HANDLE(HSTR);
291 DECLARE_HANDLE(HTASK);
292 DECLARE_HANDLE(HWND);
293 DECLARE_HANDLE(HWINSTA);
294 DECLARE_HANDLE(HKL);
295 typedef int HFILE;
296 typedef HICON HCURSOR;
297 typedef DWORD COLORREF;
298 typedef int (WINAPI *FARPROC)();
299 typedef int (WINAPI *NEARPROC)();
300 typedef int (WINAPI *PROC)();
301 typedef struct tagRECT {
302 LONG left;
303 LONG top;
304 LONG right;
305 LONG bottom;
306 } RECT,*PRECT,*LPRECT;
307 typedef const RECT *LPCRECT;
308 typedef struct tagRECTL {
309 LONG left;
310 LONG top;
311 LONG right;
312 LONG bottom;
313 } RECTL,*PRECTL,*LPRECTL;
314 typedef const RECTL *LPCRECTL;
315 typedef struct tagPOINT {
316 LONG x;
317 LONG y;
318 } POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
319 typedef struct tagSIZE {
320 LONG cx;
321 LONG cy;
322 } SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
323 typedef struct tagPOINTS {
324 SHORT x;
325 SHORT y;
326 } POINTS,*PPOINTS,*LPPOINTS;
327
328 #ifdef __cplusplus
329 }
330 #endif
331 #endif