Change type of mode argument to GETVDMPOINTER32W from DWORD to Word
[wine.git] / include / wintypes.h
blobe2445b404a73217252fc1ea4da7a4bbda569be05
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 SCODE;
110 typedef long LONG_PTR;
111 typedef unsigned long ULONG_PTR;
112 typedef double DOUBLE;
113 typedef double LONGLONG;
114 typedef double ULONGLONG;
116 /* Integer types. These are the same for emulator and library. */
118 typedef UINT16 HANDLE16;
119 typedef UINT32 HANDLE32;
120 typedef UINT16 *LPHANDLE16;
121 typedef UINT32 *LPHANDLE32;
122 typedef UINT16 WPARAM16;
123 typedef UINT32 WPARAM32;
124 typedef LONG LPARAM;
125 typedef LONG HRESULT;
126 typedef LONG LRESULT;
127 typedef WORD ATOM;
128 typedef WORD CATCHBUF[9];
129 typedef WORD *LPCATCHBUF;
130 typedef DWORD ACCESS_MASK;
131 typedef ACCESS_MASK REGSAM;
132 typedef HANDLE32 HHOOK;
133 typedef HANDLE32 HKEY;
134 typedef HANDLE32 HMONITOR;
135 typedef DWORD LCID;
136 typedef WORD LANGID;
137 typedef DWORD LCTYPE;
138 typedef float FLOAT;
139 typedef long long __int64;
141 /* Pointers types. These are the same for emulator and library. */
142 /* winnt types */
143 typedef void *PVOID;
144 typedef const void *PCVOID;
145 typedef CHAR *PCHAR;
146 typedef UCHAR *PUCHAR;
147 typedef BYTE *PBYTE;
148 typedef ULONG *PULONG;
149 typedef LONG *PLONG;
150 typedef DWORD *PDWORD;
151 /* common win32 types */
152 typedef CHAR *LPSTR;
153 typedef CHAR *PSTR;
154 typedef const CHAR *LPCSTR;
155 typedef const CHAR *PCSTR;
156 typedef WCHAR *LPWSTR;
157 typedef WCHAR *PWSTR;
158 typedef const WCHAR *LPCWSTR;
159 typedef const WCHAR *PCWSTR;
160 typedef BYTE *LPBYTE;
161 typedef WORD *LPWORD;
162 typedef DWORD *LPDWORD;
163 typedef LONG *LPLONG;
164 typedef VOID *LPVOID;
165 typedef const VOID *LPCVOID;
166 typedef INT16 *LPINT16;
167 typedef UINT16 *LPUINT16;
168 typedef INT32 *PINT32;
169 typedef INT32 *LPINT32;
170 typedef UINT32 *PUINT32;
171 typedef UINT32 *LPUINT32;
172 typedef HKEY *LPHKEY;
173 typedef HKEY *PHKEY;
174 typedef FLOAT *PFLOAT;
175 typedef FLOAT *LPFLOAT;
176 typedef BOOL32 *PBOOL32;
177 typedef BOOL32 *LPBOOL32;
179 /* Special case: a segmented pointer is just a pointer in the user's code. */
181 #ifdef __WINE__
182 typedef DWORD SEGPTR;
183 #else
184 typedef void* SEGPTR;
185 #endif /* __WINE__ */
187 /* Handle types that exist both in Win16 and Win32. */
189 #define DECLARE_HANDLE(a) typedef HANDLE16 a##16; typedef HANDLE32 a##32
190 DECLARE_HANDLE(HACCEL);
191 DECLARE_HANDLE(HBITMAP);
192 DECLARE_HANDLE(HBRUSH);
193 DECLARE_HANDLE(HCOLORSPACE);
194 DECLARE_HANDLE(HCURSOR);
195 DECLARE_HANDLE(HDC);
196 DECLARE_HANDLE(HDROP);
197 DECLARE_HANDLE(HDRVR);
198 DECLARE_HANDLE(HDWP);
199 DECLARE_HANDLE(HENHMETAFILE);
200 DECLARE_HANDLE(HFILE);
201 DECLARE_HANDLE(HFONT);
202 DECLARE_HANDLE(HGDIOBJ);
203 DECLARE_HANDLE(HGLOBAL);
204 DECLARE_HANDLE(HICON);
205 DECLARE_HANDLE(HINSTANCE);
206 DECLARE_HANDLE(HLOCAL);
207 DECLARE_HANDLE(HMENU);
208 DECLARE_HANDLE(HMETAFILE);
209 DECLARE_HANDLE(HMIDI);
210 DECLARE_HANDLE(HMIDIIN);
211 DECLARE_HANDLE(HMIDIOUT);
212 DECLARE_HANDLE(HMIDISTRM);
213 DECLARE_HANDLE(HMIXER);
214 DECLARE_HANDLE(HMIXEROBJ);
215 DECLARE_HANDLE(HMMIO);
216 DECLARE_HANDLE(HMODULE);
217 DECLARE_HANDLE(HPALETTE);
218 DECLARE_HANDLE(HPEN);
219 DECLARE_HANDLE(HQUEUE);
220 DECLARE_HANDLE(HRGN);
221 DECLARE_HANDLE(HRSRC);
222 DECLARE_HANDLE(HTASK);
223 DECLARE_HANDLE(HWAVE);
224 DECLARE_HANDLE(HWAVEIN);
225 DECLARE_HANDLE(HWAVEOUT);
226 DECLARE_HANDLE(HWINSTA);
227 DECLARE_HANDLE(HDESK);
228 DECLARE_HANDLE(HWND);
229 DECLARE_HANDLE(HKL);
230 DECLARE_HANDLE(HIC);
231 DECLARE_HANDLE(HRASCONN);
232 #undef DECLARE_HANDLE
234 /* Callback function pointers types */
236 typedef BOOL32 (CALLBACK* DATEFMT_ENUMPROC32A)(LPSTR);
237 typedef BOOL32 (CALLBACK* DATEFMT_ENUMPROC32W)(LPWSTR);
238 DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROC)
239 typedef BOOL16 (CALLBACK *DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
240 typedef BOOL32 (CALLBACK *DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM);
241 DECL_WINELIB_TYPE(DLGPROC)
242 typedef LRESULT (CALLBACK *DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
243 typedef LRESULT (CALLBACK *DRIVERPROC32)(DWORD,HDRVR32,UINT32,LPARAM,LPARAM);
244 DECL_WINELIB_TYPE(DRIVERPROC)
245 typedef INT16 (CALLBACK *EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);
246 typedef INT32 (CALLBACK *EDITWORDBREAKPROC32A)(LPSTR,INT32,INT32,INT32);
247 typedef INT32 (CALLBACK *EDITWORDBREAKPROC32W)(LPWSTR,INT32,INT32,INT32);
248 DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
249 typedef LRESULT (CALLBACK *FARPROC16)();
250 typedef LRESULT (CALLBACK *FARPROC32)();
251 DECL_WINELIB_TYPE(FARPROC)
252 typedef INT16 (CALLBACK *PROC16)();
253 typedef INT32 (CALLBACK *PROC32)();
254 DECL_WINELIB_TYPE(PROC)
255 typedef INT16 (CALLBACK *GOBJENUMPROC16)(SEGPTR,LPARAM);
256 typedef INT32 (CALLBACK *GOBJENUMPROC32)(LPVOID,LPARAM);
257 DECL_WINELIB_TYPE(GOBJENUMPROC)
258 typedef BOOL16 (CALLBACK *GRAYSTRINGPROC16)(HDC16,LPARAM,INT16);
259 typedef BOOL32 (CALLBACK *GRAYSTRINGPROC32)(HDC32,LPARAM,INT32);
260 DECL_WINELIB_TYPE(GRAYSTRINGPROC)
261 typedef LRESULT (CALLBACK *HOOKPROC16)(INT16,WPARAM16,LPARAM);
262 typedef LRESULT (CALLBACK *HOOKPROC32)(INT32,WPARAM32,LPARAM);
263 DECL_WINELIB_TYPE(HOOKPROC)
264 typedef VOID (CALLBACK *LINEDDAPROC16)(INT16,INT16,LPARAM);
265 typedef VOID (CALLBACK *LINEDDAPROC32)(INT32,INT32,LPARAM);
266 DECL_WINELIB_TYPE(LINEDDAPROC)
267 typedef BOOL16 (CALLBACK *PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16);
268 typedef BOOL32 (CALLBACK *PROPENUMPROC32A)(HWND32,LPCSTR,HANDLE32);
269 typedef BOOL32 (CALLBACK *PROPENUMPROC32W)(HWND32,LPCWSTR,HANDLE32);
270 DECL_WINELIB_TYPE_AW(PROPENUMPROC)
271 typedef BOOL32 (CALLBACK *PROPENUMPROCEX32A)(HWND32,LPCSTR,HANDLE32,LPARAM);
272 typedef BOOL32 (CALLBACK *PROPENUMPROCEX32W)(HWND32,LPCWSTR,HANDLE32,LPARAM);
273 DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
274 typedef BOOL32 (CALLBACK* TIMEFMT_ENUMPROC32A)(LPSTR);
275 typedef BOOL32 (CALLBACK* TIMEFMT_ENUMPROC32W)(LPWSTR);
276 DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)
277 typedef VOID (CALLBACK *TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);
278 typedef VOID (CALLBACK *TIMERPROC32)(HWND32,UINT32,UINT32,DWORD);
279 DECL_WINELIB_TYPE(TIMERPROC)
280 typedef LRESULT (CALLBACK *WNDENUMPROC16)(HWND16,LPARAM);
281 typedef LRESULT (CALLBACK *WNDENUMPROC32)(HWND32,LPARAM);
282 DECL_WINELIB_TYPE(WNDENUMPROC)
283 typedef LRESULT (CALLBACK *WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
284 typedef LRESULT (CALLBACK *WNDPROC32)(HWND32,UINT32,WPARAM32,LPARAM);
285 DECL_WINELIB_TYPE(WNDPROC)
287 /* TCHAR data types definitions for Winelib. */
288 /* These types are _not_ defined for the emulator, because they */
289 /* depend on the UNICODE macro that only exists in user's code. */
291 #ifndef __WINE__
292 # ifdef UNICODE
293 typedef WCHAR TCHAR;
294 typedef LPWSTR LPTSTR;
295 typedef LPCWSTR LPCTSTR;
296 #define __TEXT(string) L##string /*probably wrong */
297 # else /* UNICODE */
298 typedef CHAR TCHAR;
299 typedef LPSTR LPTSTR;
300 typedef LPCSTR LPCTSTR;
301 #define __TEXT(string) string
302 # endif /* UNICODE */
303 #endif /* __WINE__ */
304 #define TEXT(quote) __TEXT(quote)
306 /* Data types specific to the library. These do _not_ exist in the emulator. */
308 DECL_WINELIB_TYPE(INT)
309 DECL_WINELIB_TYPE(LPINT)
310 DECL_WINELIB_TYPE(PUINT)
311 DECL_WINELIB_TYPE(LPUINT)
312 DECL_WINELIB_TYPE(UINT)
313 DECL_WINELIB_TYPE(BOOL)
314 DECL_WINELIB_TYPE(LPBOOL)
315 DECL_WINELIB_TYPE(WPARAM)
317 DECL_WINELIB_TYPE(HACCEL)
318 DECL_WINELIB_TYPE(HANDLE)
319 DECL_WINELIB_TYPE(LPHANDLE)
320 DECL_WINELIB_TYPE(HBITMAP)
321 DECL_WINELIB_TYPE(HBRUSH)
322 DECL_WINELIB_TYPE(HCOLORSPACE)
323 DECL_WINELIB_TYPE(HCURSOR)
324 DECL_WINELIB_TYPE(HDC)
325 DECL_WINELIB_TYPE(HDROP)
326 DECL_WINELIB_TYPE(HDRVR)
327 DECL_WINELIB_TYPE(HDWP)
328 DECL_WINELIB_TYPE(HENHMETAFILE)
329 DECL_WINELIB_TYPE(HFILE)
330 DECL_WINELIB_TYPE(HFONT)
331 DECL_WINELIB_TYPE(HGDIOBJ)
332 DECL_WINELIB_TYPE(HGLOBAL)
333 DECL_WINELIB_TYPE(HIC)
334 DECL_WINELIB_TYPE(HICON)
335 DECL_WINELIB_TYPE(HINSTANCE)
336 DECL_WINELIB_TYPE(HLOCAL)
337 DECL_WINELIB_TYPE(HMENU)
338 DECL_WINELIB_TYPE(HMETAFILE)
339 DECL_WINELIB_TYPE(HMIDI)
340 DECL_WINELIB_TYPE(HMIDIIN)
341 DECL_WINELIB_TYPE(HMIDIOUT)
342 DECL_WINELIB_TYPE(HMMIO)
343 DECL_WINELIB_TYPE(HMODULE)
344 DECL_WINELIB_TYPE(HPALETTE)
345 DECL_WINELIB_TYPE(HPEN)
346 DECL_WINELIB_TYPE(HQUEUE)
347 DECL_WINELIB_TYPE(HRGN)
348 DECL_WINELIB_TYPE(HRSRC)
349 DECL_WINELIB_TYPE(HTASK)
350 DECL_WINELIB_TYPE(HWAVE)
351 DECL_WINELIB_TYPE(HWAVEIN)
352 DECL_WINELIB_TYPE(HWAVEOUT)
353 DECL_WINELIB_TYPE(HWND)
355 /* Define some empty macros for compatibility with Windows code. */
357 #ifndef __WINE__
358 #define NEAR
359 #define FAR
360 #define _far
361 #define _near
362 #define IN
363 #define OUT
364 #define OPTIONAL
365 #endif /* __WINE__ */
367 /* Macro for structure packing. */
369 #ifdef __GNUC__
370 #define WINE_PACKED __attribute__ ((packed))
371 #else
372 #define WINE_PACKED /* nothing */
373 #endif
375 /* Macros to split words and longs. */
377 #define LOBYTE(w) ((BYTE)(WORD)(w))
378 #define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))
380 #define LOWORD(l) ((WORD)(DWORD)(l))
381 #define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
383 #define SLOWORD(l) ((INT16)(LONG)(l))
384 #define SHIWORD(l) ((INT16)((LONG)(l) >> 16))
386 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
387 #define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
388 #define MAKELPARAM(low,high) ((LPARAM)MAKELONG(low,high))
389 #define MAKEWPARAM(low,high) ((WPARAM32)MAKELONG(low,high))
390 #define MAKELRESULT(low,high) ((LRESULT)MAKELONG(low,high))
391 #define MAKEINTATOM(atom) ((LPCSTR)MAKELONG((atom),0))
393 #define SELECTOROF(ptr) (HIWORD(ptr))
394 #define OFFSETOF(ptr) (LOWORD(ptr))
396 /* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
397 /* Note: These macros are semantically broken, at least for wrc. wrc
398 spits out data in the platform's current binary format, *not* in
399 little-endian format. These macros are used throughout the resource
400 code to load and store data to the resources. Since it is unlikely
401 that we'll ever be dealing with little-endian resource data, the
402 byte-swapping nature of these macros has been disabled. Rather than
403 remove the use of these macros from the resource loading code, the
404 macros have simply been disabled. In the future, someone may want
405 to reactivate these macros for other purposes. In that case, the
406 resource code will have to be modified to use different macros. */
408 #if 1
409 #define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))
410 #define GET_WORD(ptr) (*(WORD *)(ptr))
411 #define PUT_DWORD(ptr,dw) (*(DWORD *)(ptr) = (dw))
412 #define GET_DWORD(ptr) (*(DWORD *)(ptr))
413 #else
414 #define PUT_WORD(ptr,w) (*(BYTE *)(ptr) = LOBYTE(w), \
415 *((BYTE *)(ptr) + 1) = HIBYTE(w))
416 #define GET_WORD(ptr) ((WORD)(*(BYTE *)(ptr) | \
417 (WORD)(*((BYTE *)(ptr)+1) << 8)))
418 #define PUT_DWORD(ptr,dw) (PUT_WORD((ptr),LOWORD(dw)), \
419 PUT_WORD((WORD *)(ptr)+1,HIWORD(dw)))
420 #define GET_DWORD(ptr) ((DWORD)(GET_WORD(ptr) | \
421 ((DWORD)GET_WORD((WORD *)(ptr)+1) << 16)))
422 #endif /* 1 */
424 /* MIN and MAX macros */
426 #ifdef MAX
427 #undef MAX
428 #endif
429 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
431 #ifdef MIN
432 #undef MIN
433 #endif
434 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
436 #define __max(a,b) MAX(a,b)
437 #define __min(a,b) MIN(a,b)
438 #define max(a,b) MAX(a,b)
439 #define min(a,b) MIN(a,b)
441 #define _MAX_PATH 260
442 #define _MAX_DRIVE 3
443 #define _MAX_DIR 256
444 #define _MAX_FNAME 255
445 #define _MAX_EXT 256
447 /* Winelib run-time flag */
449 #ifdef __WINE__
450 extern int __winelib;
451 #endif /* __WINE__ */
453 /* The SIZE structure */
455 typedef struct
457 INT16 cx;
458 INT16 cy;
459 } SIZE16, *PSIZE16, *LPSIZE16;
461 typedef struct tagSIZE
463 INT32 cx;
464 INT32 cy;
465 } SIZE32, *PSIZE32, *LPSIZE32;
467 DECL_WINELIB_TYPE(SIZE)
468 DECL_WINELIB_TYPE(PSIZE)
469 DECL_WINELIB_TYPE(LPSIZE)
471 typedef SIZE32 SIZEL, *PSIZEL, *LPSIZEL;
473 #define CONV_SIZE16TO32(s16,s32) \
474 ((s32)->cx = (INT32)(s16)->cx, (s32)->cy = (INT32)(s16)->cy)
475 #define CONV_SIZE32TO16(s32,s16) \
476 ((s16)->cx = (INT16)(s32)->cx, (s16)->cy = (INT16)(s32)->cy)
478 /* The POINT structure */
480 typedef struct
482 INT16 x;
483 INT16 y;
484 } POINT16, *PPOINT16, *LPPOINT16;
486 typedef struct tagPOINT
488 LONG x;
489 LONG y;
490 } POINT32, *PPOINT32, *LPPOINT32;
492 DECL_WINELIB_TYPE(POINT)
493 DECL_WINELIB_TYPE(PPOINT)
494 DECL_WINELIB_TYPE(LPPOINT)
496 #define CONV_POINT16TO32(p16,p32) \
497 ((p32)->x = (INT32)(p16)->x, (p32)->y = (INT32)(p16)->y)
498 #define CONV_POINT32TO16(p32,p16) \
499 ((p16)->x = (INT16)(p32)->x, (p16)->y = (INT16)(p32)->y)
501 #define MAKEPOINT16(l) (*((POINT16 *)&(l)))
502 #define MAKEPOINT WINELIB_NAME(MAKEPOINT)
504 /* The POINTS structure */
506 typedef struct tagPOINTS
508 SHORT x;
509 SHORT y;
510 } POINTS32, *PPOINTS32, *LPPOINTS32;
512 DECL_WINELIB_TYPE(POINTS)
513 DECL_WINELIB_TYPE(PPOINTS)
514 DECL_WINELIB_TYPE(LPPOINTS)
516 #define MAKEPOINTS(l) (*((POINTS *)&(l)))
519 /* The RECT structure */
521 typedef struct
523 INT16 left;
524 INT16 top;
525 INT16 right;
526 INT16 bottom;
527 } RECT16, *LPRECT16;
529 typedef struct tagRECT
531 INT32 left;
532 INT32 top;
533 INT32 right;
534 INT32 bottom;
535 } RECT32, *PRECT32, *LPRECT32;
537 DECL_WINELIB_TYPE(RECT)
538 DECL_WINELIB_TYPE(PRECT)
539 DECL_WINELIB_TYPE(LPRECT)
541 typedef struct tagRECTL
543 LONG left;
544 LONG top;
545 LONG right;
546 LONG bottom;
547 } RECTL, *PRECTL, *LPRECTL;
549 typedef const RECTL *LPCRECTL;
551 #define CONV_RECT16TO32(r16,r32) \
552 ((r32)->left = (INT32)(r16)->left, (r32)->top = (INT32)(r16)->top, \
553 (r32)->right = (INT32)(r16)->right, (r32)->bottom = (INT32)(r16)->bottom)
554 #define CONV_RECT32TO16(r32,r16) \
555 ((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \
556 (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)
558 #ifdef __cplusplus
560 #endif
562 #endif /* __WINE_WINTYPES_H */