Don't hang on the last child if it's not wanted.
[wine/gsoc_dplay.git] / include / wintypes.h
blob80913310f7e056036c84c54ab765d0ec76afa007
1 /*
2 * Basic types definitions
4 * Copyright 1996 Alexandre Julliard
5 */
7 /* Misc. constants. */
9 #ifdef FALSE
10 #undef FALSE
11 #endif
12 #define FALSE 0
14 #ifdef TRUE
15 #undef TRUE
16 #endif
17 #define TRUE 1
19 #ifdef NULL
20 #undef NULL
21 #endif
22 #define NULL 0
24 #ifndef __WINE_WINTYPES_H
25 #define __WINE_WINTYPES_H
27 #ifdef __WINE__
28 # include "config.h"
29 # undef UNICODE
30 #endif /* __WINE__ */
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
36 /* Macros to map Winelib names to the correct implementation name */
37 /* depending on __WINE__ and UNICODE macros. */
38 /* Note that Winelib is purely Win32. */
40 #ifdef __WINE__
41 # define WINELIB_NAME(func) this_is_a_syntax_error this_is_a_syntax_error
42 # define WINELIB_NAME_AW(func) this_is_a_syntax_error this_is_a_syntax_error
43 #else /* __WINE__ */
44 # define WINELIB_NAME(func) func##32
45 # ifdef UNICODE
46 # define WINELIB_NAME_AW(func) func##32W
47 # else
48 # define WINELIB_NAME_AW(func) func##32A
49 # endif /* UNICODE */
50 #endif /* __WINE__ */
52 #ifdef __WINE__
53 # define DECL_WINELIB_TYPE(type) /* nothing */
54 # define DECL_WINELIB_TYPE_AW(type) /* nothing */
55 #else /* __WINE__ */
56 # define DECL_WINELIB_TYPE(type) typedef WINELIB_NAME(type) type;
57 # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
58 #endif /* __WINE__ */
61 /* Calling conventions definitions */
63 #ifdef __i386__
64 # if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)
65 # define __stdcall __attribute__((__stdcall__))
66 # define __cdecl __attribute__((__cdecl__))
67 # define __RESTORE_ES __asm__ __volatile__("pushl %ds\n\tpopl %es")
68 # else
69 # error You need gcc >= 2.7 to build Wine on a 386
70 # endif /* __GNUC__ */
71 #else /* __i386__ */
72 # define __stdcall
73 # define __cdecl
74 # define __RESTORE_ES
75 #endif /* __i386__ */
77 #define CALLBACK __stdcall
78 #define WINAPI __stdcall
79 #define APIPRIVATE __stdcall
80 #define PASCAL __stdcall
81 #define _pascal __stdcall
82 #define __export __stdcall
83 #define WINAPIV __cdecl
84 #define APIENTRY WINAPI
86 #define CONST const
88 /* Standard data types. These are the same for emulator and library. */
90 typedef void VOID;
91 typedef short INT16;
92 typedef unsigned short UINT16;
93 typedef int INT32;
94 typedef unsigned int UINT32;
95 typedef unsigned short WORD;
96 typedef unsigned long DWORD;
97 typedef unsigned long ULONG;
98 typedef unsigned char BYTE;
99 typedef long LONG;
100 typedef short SHORT;
101 typedef unsigned short USHORT;
102 typedef char CHAR;
103 typedef unsigned char UCHAR;
104 /* Some systems might have wchar_t, but we really need 16 bit characters */
105 typedef unsigned short WCHAR;
106 typedef unsigned short BOOL16;
107 typedef int BOOL32;
108 typedef double DATE;
109 typedef long LONG_PTR;
110 typedef unsigned long ULONG_PTR;
111 typedef double DOUBLE;
112 typedef double LONGLONG;
113 typedef double ULONGLONG;
115 /* Integer types. These are the same for emulator and library. */
117 typedef UINT16 HANDLE16;
118 typedef UINT32 HANDLE32;
119 typedef UINT16 *LPHANDLE16;
120 typedef UINT32 *LPHANDLE32;
121 typedef UINT16 WPARAM16;
122 typedef UINT32 WPARAM32;
123 typedef LONG LPARAM;
124 typedef LONG HRESULT;
125 typedef LONG LRESULT;
126 typedef WORD ATOM;
127 typedef WORD CATCHBUF[9];
128 typedef WORD *LPCATCHBUF;
129 typedef DWORD ACCESS_MASK;
130 typedef ACCESS_MASK REGSAM;
131 typedef HANDLE32 HHOOK;
132 typedef HANDLE32 HKEY;
133 typedef HANDLE32 HMONITOR;
134 typedef DWORD LCID;
135 typedef WORD LANGID;
136 typedef DWORD LCTYPE;
137 typedef float FLOAT;
138 typedef long long __int64;
140 /* Pointers types. These are the same for emulator and library. */
141 /* winnt types */
142 typedef void *PVOID;
143 typedef const void *PCVOID;
144 typedef CHAR *PCHAR;
145 typedef UCHAR *PUCHAR;
146 typedef BYTE *PBYTE;
147 typedef ULONG *PULONG;
148 typedef LONG *PLONG;
149 typedef DWORD *PDWORD;
150 /* common win32 types */
151 typedef CHAR *LPSTR;
152 typedef CHAR *PSTR;
153 typedef const CHAR *LPCSTR;
154 typedef const CHAR *PCSTR;
155 typedef WCHAR *LPWSTR;
156 typedef WCHAR *PWSTR;
157 typedef const WCHAR *LPCWSTR;
158 typedef const WCHAR *PCWSTR;
159 typedef BYTE *LPBYTE;
160 typedef WORD *LPWORD;
161 typedef DWORD *LPDWORD;
162 typedef LONG *LPLONG;
163 typedef VOID *LPVOID;
164 typedef const VOID *LPCVOID;
165 typedef INT16 *LPINT16;
166 typedef UINT16 *LPUINT16;
167 typedef INT32 *PINT32;
168 typedef INT32 *LPINT32;
169 typedef UINT32 *PUINT32;
170 typedef UINT32 *LPUINT32;
171 typedef HKEY *LPHKEY;
172 typedef HKEY *PHKEY;
173 typedef FLOAT *PFLOAT;
174 typedef FLOAT *LPFLOAT;
175 typedef BOOL32 *PBOOL32;
176 typedef BOOL32 *LPBOOL32;
178 /* Special case: a segmented pointer is just a pointer in the user's code. */
180 #ifdef __WINE__
181 typedef DWORD SEGPTR;
182 #else
183 typedef void* SEGPTR;
184 #endif /* __WINE__ */
186 /* Handle types that exist both in Win16 and Win32. */
188 #define DECLARE_HANDLE(a) typedef HANDLE16 a##16; typedef HANDLE32 a##32
189 DECLARE_HANDLE(HACCEL);
190 DECLARE_HANDLE(HBITMAP);
191 DECLARE_HANDLE(HBRUSH);
192 DECLARE_HANDLE(HCOLORSPACE);
193 DECLARE_HANDLE(HCURSOR);
194 DECLARE_HANDLE(HDC);
195 DECLARE_HANDLE(HDROP);
196 DECLARE_HANDLE(HDRVR);
197 DECLARE_HANDLE(HDWP);
198 DECLARE_HANDLE(HENHMETAFILE);
199 DECLARE_HANDLE(HFILE);
200 DECLARE_HANDLE(HFONT);
201 DECLARE_HANDLE(HGDIOBJ);
202 DECLARE_HANDLE(HGLOBAL);
203 DECLARE_HANDLE(HICON);
204 DECLARE_HANDLE(HINSTANCE);
205 DECLARE_HANDLE(HLOCAL);
206 DECLARE_HANDLE(HMENU);
207 DECLARE_HANDLE(HMETAFILE);
208 DECLARE_HANDLE(HMIDI);
209 DECLARE_HANDLE(HMIDIIN);
210 DECLARE_HANDLE(HMIDIOUT);
211 DECLARE_HANDLE(HMIDISTRM);
212 DECLARE_HANDLE(HMIXER);
213 DECLARE_HANDLE(HMIXEROBJ);
214 DECLARE_HANDLE(HMMIO);
215 DECLARE_HANDLE(HMODULE);
216 DECLARE_HANDLE(HPALETTE);
217 DECLARE_HANDLE(HPEN);
218 DECLARE_HANDLE(HQUEUE);
219 DECLARE_HANDLE(HRGN);
220 DECLARE_HANDLE(HRSRC);
221 DECLARE_HANDLE(HTASK);
222 DECLARE_HANDLE(HWAVE);
223 DECLARE_HANDLE(HWAVEIN);
224 DECLARE_HANDLE(HWAVEOUT);
225 DECLARE_HANDLE(HWINSTA);
226 DECLARE_HANDLE(HDESK);
227 DECLARE_HANDLE(HWND);
228 DECLARE_HANDLE(HKL);
229 DECLARE_HANDLE(HIC);
230 DECLARE_HANDLE(HRASCONN);
231 #undef DECLARE_HANDLE
233 /* Callback function pointers types */
235 typedef BOOL32 (CALLBACK* DATEFMT_ENUMPROC32A)(LPSTR);
236 typedef BOOL32 (CALLBACK* DATEFMT_ENUMPROC32W)(LPWSTR);
237 DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROC)
238 typedef BOOL16 (CALLBACK *DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
239 typedef BOOL32 (CALLBACK *DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM);
240 DECL_WINELIB_TYPE(DLGPROC)
241 typedef LRESULT (CALLBACK *DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
242 typedef LRESULT (CALLBACK *DRIVERPROC32)(DWORD,HDRVR32,UINT32,LPARAM,LPARAM);
243 DECL_WINELIB_TYPE(DRIVERPROC)
244 typedef INT16 (CALLBACK *EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);
245 typedef INT32 (CALLBACK *EDITWORDBREAKPROC32A)(LPSTR,INT32,INT32,INT32);
246 typedef INT32 (CALLBACK *EDITWORDBREAKPROC32W)(LPWSTR,INT32,INT32,INT32);
247 DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
248 typedef LRESULT (CALLBACK *FARPROC16)();
249 typedef LRESULT (CALLBACK *FARPROC32)();
250 DECL_WINELIB_TYPE(FARPROC)
251 typedef INT16 (CALLBACK *PROC16)();
252 typedef INT32 (CALLBACK *PROC32)();
253 DECL_WINELIB_TYPE(PROC)
254 typedef INT16 (CALLBACK *GOBJENUMPROC16)(SEGPTR,LPARAM);
255 typedef INT32 (CALLBACK *GOBJENUMPROC32)(LPVOID,LPARAM);
256 DECL_WINELIB_TYPE(GOBJENUMPROC)
257 typedef BOOL16 (CALLBACK *GRAYSTRINGPROC16)(HDC16,LPARAM,INT16);
258 typedef BOOL32 (CALLBACK *GRAYSTRINGPROC32)(HDC32,LPARAM,INT32);
259 DECL_WINELIB_TYPE(GRAYSTRINGPROC)
260 typedef LRESULT (CALLBACK *HOOKPROC16)(INT16,WPARAM16,LPARAM);
261 typedef LRESULT (CALLBACK *HOOKPROC32)(INT32,WPARAM32,LPARAM);
262 DECL_WINELIB_TYPE(HOOKPROC)
263 typedef VOID (CALLBACK *LINEDDAPROC16)(INT16,INT16,LPARAM);
264 typedef VOID (CALLBACK *LINEDDAPROC32)(INT32,INT32,LPARAM);
265 DECL_WINELIB_TYPE(LINEDDAPROC)
266 typedef BOOL16 (CALLBACK *PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16);
267 typedef BOOL32 (CALLBACK *PROPENUMPROC32A)(HWND32,LPCSTR,HANDLE32);
268 typedef BOOL32 (CALLBACK *PROPENUMPROC32W)(HWND32,LPCWSTR,HANDLE32);
269 DECL_WINELIB_TYPE_AW(PROPENUMPROC)
270 typedef BOOL32 (CALLBACK *PROPENUMPROCEX32A)(HWND32,LPCSTR,HANDLE32,LPARAM);
271 typedef BOOL32 (CALLBACK *PROPENUMPROCEX32W)(HWND32,LPCWSTR,HANDLE32,LPARAM);
272 DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
273 typedef BOOL32 (CALLBACK* TIMEFMT_ENUMPROC32A)(LPSTR);
274 typedef BOOL32 (CALLBACK* TIMEFMT_ENUMPROC32W)(LPWSTR);
275 DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)
276 typedef VOID (CALLBACK *TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);
277 typedef VOID (CALLBACK *TIMERPROC32)(HWND32,UINT32,UINT32,DWORD);
278 DECL_WINELIB_TYPE(TIMERPROC)
279 typedef LRESULT (CALLBACK *WNDENUMPROC16)(HWND16,LPARAM);
280 typedef LRESULT (CALLBACK *WNDENUMPROC32)(HWND32,LPARAM);
281 DECL_WINELIB_TYPE(WNDENUMPROC)
282 typedef LRESULT (CALLBACK *WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
283 typedef LRESULT (CALLBACK *WNDPROC32)(HWND32,UINT32,WPARAM32,LPARAM);
284 DECL_WINELIB_TYPE(WNDPROC)
286 /* TCHAR data types definitions for Winelib. */
287 /* These types are _not_ defined for the emulator, because they */
288 /* depend on the UNICODE macro that only exists in user's code. */
290 #ifndef __WINE__
291 # ifdef UNICODE
292 typedef WCHAR TCHAR;
293 typedef LPWSTR LPTSTR;
294 typedef LPCWSTR LPCTSTR;
295 #define __TEXT(string) L##string /*probably wrong */
296 # else /* UNICODE */
297 typedef CHAR TCHAR;
298 typedef LPSTR LPTSTR;
299 typedef LPCSTR LPCTSTR;
300 #define __TEXT(string) string
301 # endif /* UNICODE */
302 #endif /* __WINE__ */
303 #define TEXT(quote) __TEXT(quote)
305 /* Data types specific to the library. These do _not_ exist in the emulator. */
307 DECL_WINELIB_TYPE(INT)
308 DECL_WINELIB_TYPE(LPINT)
309 DECL_WINELIB_TYPE(PUINT)
310 DECL_WINELIB_TYPE(LPUINT)
311 DECL_WINELIB_TYPE(UINT)
312 DECL_WINELIB_TYPE(BOOL)
313 DECL_WINELIB_TYPE(LPBOOL)
314 DECL_WINELIB_TYPE(WPARAM)
316 DECL_WINELIB_TYPE(HACCEL)
317 DECL_WINELIB_TYPE(HANDLE)
318 DECL_WINELIB_TYPE(LPHANDLE)
319 DECL_WINELIB_TYPE(HBITMAP)
320 DECL_WINELIB_TYPE(HBRUSH)
321 DECL_WINELIB_TYPE(HCOLORSPACE)
322 DECL_WINELIB_TYPE(HCURSOR)
323 DECL_WINELIB_TYPE(HDC)
324 DECL_WINELIB_TYPE(HDROP)
325 DECL_WINELIB_TYPE(HDRVR)
326 DECL_WINELIB_TYPE(HDWP)
327 DECL_WINELIB_TYPE(HENHMETAFILE)
328 DECL_WINELIB_TYPE(HFILE)
329 DECL_WINELIB_TYPE(HFONT)
330 DECL_WINELIB_TYPE(HGDIOBJ)
331 DECL_WINELIB_TYPE(HGLOBAL)
332 DECL_WINELIB_TYPE(HIC)
333 DECL_WINELIB_TYPE(HICON)
334 DECL_WINELIB_TYPE(HINSTANCE)
335 DECL_WINELIB_TYPE(HLOCAL)
336 DECL_WINELIB_TYPE(HMENU)
337 DECL_WINELIB_TYPE(HMETAFILE)
338 DECL_WINELIB_TYPE(HMIDI)
339 DECL_WINELIB_TYPE(HMIDIIN)
340 DECL_WINELIB_TYPE(HMIDIOUT)
341 DECL_WINELIB_TYPE(HMMIO)
342 DECL_WINELIB_TYPE(HMODULE)
343 DECL_WINELIB_TYPE(HPALETTE)
344 DECL_WINELIB_TYPE(HPEN)
345 DECL_WINELIB_TYPE(HQUEUE)
346 DECL_WINELIB_TYPE(HRGN)
347 DECL_WINELIB_TYPE(HRSRC)
348 DECL_WINELIB_TYPE(HTASK)
349 DECL_WINELIB_TYPE(HWAVE)
350 DECL_WINELIB_TYPE(HWAVEIN)
351 DECL_WINELIB_TYPE(HWAVEOUT)
352 DECL_WINELIB_TYPE(HWND)
354 /* Define some empty macros for compatibility with Windows code. */
356 #ifndef __WINE__
357 #define NEAR
358 #define FAR
359 #define _far
360 #define _near
361 #define IN
362 #define OUT
363 #define OPTIONAL
364 #endif /* __WINE__ */
366 /* Macro for structure packing. */
368 #ifdef __GNUC__
369 #define WINE_PACKED __attribute__ ((packed))
370 #else
371 #define WINE_PACKED /* nothing */
372 #endif
374 /* Macros to split words and longs. */
376 #define LOBYTE(w) ((BYTE)(WORD)(w))
377 #define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))
379 #define LOWORD(l) ((WORD)(DWORD)(l))
380 #define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
382 #define SLOWORD(l) ((INT16)(LONG)(l))
383 #define SHIWORD(l) ((INT16)((LONG)(l) >> 16))
385 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
386 #define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
387 #define MAKELPARAM(low,high) ((LPARAM)MAKELONG(low,high))
388 #define MAKEWPARAM(low,high) ((WPARAM32)MAKELONG(low,high))
389 #define MAKELRESULT(low,high) ((LRESULT)MAKELONG(low,high))
390 #define MAKEINTATOM(atom) ((LPCSTR)MAKELONG((atom),0))
392 #define SELECTOROF(ptr) (HIWORD(ptr))
393 #define OFFSETOF(ptr) (LOWORD(ptr))
395 /* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
396 /* Note: These macros are semantically broken, at least for wrc. wrc
397 spits out data in the platform's current binary format, *not* in
398 little-endian format. These macros are used throughout the resource
399 code to load and store data to the resources. Since it is unlikely
400 that we'll ever be dealing with little-endian resource data, the
401 byte-swapping nature of these macros has been disabled. Rather than
402 remove the use of these macros from the resource loading code, the
403 macros have simply been disabled. In the future, someone may want
404 to reactivate these macros for other purposes. In that case, the
405 resource code will have to be modified to use different macros. */
407 #if 1
408 #define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))
409 #define GET_WORD(ptr) (*(WORD *)(ptr))
410 #define PUT_DWORD(ptr,dw) (*(DWORD *)(ptr) = (dw))
411 #define GET_DWORD(ptr) (*(DWORD *)(ptr))
412 #else
413 #define PUT_WORD(ptr,w) (*(BYTE *)(ptr) = LOBYTE(w), \
414 *((BYTE *)(ptr) + 1) = HIBYTE(w))
415 #define GET_WORD(ptr) ((WORD)(*(BYTE *)(ptr) | \
416 (WORD)(*((BYTE *)(ptr)+1) << 8)))
417 #define PUT_DWORD(ptr,dw) (PUT_WORD((ptr),LOWORD(dw)), \
418 PUT_WORD((WORD *)(ptr)+1,HIWORD(dw)))
419 #define GET_DWORD(ptr) ((DWORD)(GET_WORD(ptr) | \
420 ((DWORD)GET_WORD((WORD *)(ptr)+1) << 16)))
421 #endif /* 1 */
423 /* MIN and MAX macros */
425 #ifdef MAX
426 #undef MAX
427 #endif
428 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
430 #ifdef MIN
431 #undef MIN
432 #endif
433 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
435 #define __max(a,b) MAX(a,b)
436 #define __min(a,b) MIN(a,b)
437 #define max(a,b) MAX(a,b)
438 #define min(a,b) MIN(a,b)
440 #define _MAX_PATH 260
441 #define _MAX_DRIVE 3
442 #define _MAX_DIR 256
443 #define _MAX_FNAME 255
444 #define _MAX_EXT 256
446 /* Winelib run-time flag */
448 #ifdef __WINE__
449 extern int __winelib;
450 #endif /* __WINE__ */
452 /* The SIZE structure */
454 typedef struct
456 INT16 cx;
457 INT16 cy;
458 } SIZE16, *PSIZE16, *LPSIZE16;
460 typedef struct tagSIZE
462 INT32 cx;
463 INT32 cy;
464 } SIZE32, *PSIZE32, *LPSIZE32;
466 DECL_WINELIB_TYPE(SIZE)
467 DECL_WINELIB_TYPE(PSIZE)
468 DECL_WINELIB_TYPE(LPSIZE)
470 typedef SIZE32 SIZEL, *PSIZEL, *LPSIZEL;
472 #define CONV_SIZE16TO32(s16,s32) \
473 ((s32)->cx = (INT32)(s16)->cx, (s32)->cy = (INT32)(s16)->cy)
474 #define CONV_SIZE32TO16(s32,s16) \
475 ((s16)->cx = (INT16)(s32)->cx, (s16)->cy = (INT16)(s32)->cy)
477 /* The POINT structure */
479 typedef struct
481 INT16 x;
482 INT16 y;
483 } POINT16, *PPOINT16, *LPPOINT16;
485 typedef struct tagPOINT
487 LONG x;
488 LONG y;
489 } POINT32, *PPOINT32, *LPPOINT32;
491 DECL_WINELIB_TYPE(POINT)
492 DECL_WINELIB_TYPE(PPOINT)
493 DECL_WINELIB_TYPE(LPPOINT)
495 #define CONV_POINT16TO32(p16,p32) \
496 ((p32)->x = (INT32)(p16)->x, (p32)->y = (INT32)(p16)->y)
497 #define CONV_POINT32TO16(p32,p16) \
498 ((p16)->x = (INT16)(p32)->x, (p16)->y = (INT16)(p32)->y)
500 #define MAKEPOINT16(l) (*((POINT16 *)&(l)))
501 #define MAKEPOINT WINELIB_NAME(MAKEPOINT)
503 /* The POINTS structure */
505 typedef struct tagPOINTS
507 SHORT x;
508 SHORT y;
509 } POINTS32, *PPOINTS32, *LPPOINTS32;
511 DECL_WINELIB_TYPE(POINTS)
512 DECL_WINELIB_TYPE(PPOINTS)
513 DECL_WINELIB_TYPE(LPPOINTS)
515 #define MAKEPOINTS(l) (*((POINTS *)&(l)))
518 /* The RECT structure */
520 typedef struct
522 INT16 left;
523 INT16 top;
524 INT16 right;
525 INT16 bottom;
526 } RECT16, *LPRECT16;
528 typedef struct tagRECT
530 INT32 left;
531 INT32 top;
532 INT32 right;
533 INT32 bottom;
534 } RECT32, *PRECT32, *LPRECT32;
536 DECL_WINELIB_TYPE(RECT)
537 DECL_WINELIB_TYPE(PRECT)
538 DECL_WINELIB_TYPE(LPRECT)
540 typedef struct tagRECTL
542 LONG left;
543 LONG top;
544 LONG right;
545 LONG bottom;
546 } RECTL, *PRECTL, *LPRECTL;
548 typedef const RECTL *LPCRECTL;
550 #define CONV_RECT16TO32(r16,r32) \
551 ((r32)->left = (INT32)(r16)->left, (r32)->top = (INT32)(r16)->top, \
552 (r32)->right = (INT32)(r16)->right, (r32)->bottom = (INT32)(r16)->bottom)
553 #define CONV_RECT32TO16(r32,r16) \
554 ((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \
555 (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)
557 #ifdef __cplusplus
559 #endif
561 #endif /* __WINE_WINTYPES_H */