source: trunk/include/win/windef.h@ 8208

Last change on this file since 8208 was 8208, checked in by sandervl, 23 years ago

header updates

File size: 18.2 KB
Line 
1/*
2 * Basic types definitions
3 *
4 * Copyright 1996 Alexandre Julliard
5 */
6
7#ifndef __WINE_WINDEF_H
8#define __WINE_WINDEF_H
9
10#ifdef __WINE__
11# include "config.h"
12# undef UNICODE
13#endif /* __WINE__ */
14
15#define WINVER 0x0500
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21/* Misc. constants. */
22
23#ifdef FALSE
24#undef FALSE
25#endif
26#define FALSE 0
27
28#ifdef TRUE
29#undef TRUE
30#endif
31#define TRUE 1
32
33#ifdef NULL
34#undef NULL
35#endif
36#define NULL 0
37
38/* Macros to map Winelib names to the correct implementation name */
39/* depending on __WINE__ and UNICODE macros. */
40/* Note that Winelib is purely Win32. */
41
42#ifdef __WINE__
43#ifdef __WIN32OS2__
44# define WINELIB_NAME_AW(func) func
45#else
46# define WINELIB_NAME_AW(func) this_is_a_syntax_error this_is_a_syntax_error
47#endif
48#else /* __WINE__ */
49# ifdef UNICODE
50# define WINELIB_NAME_AW(func) func##W
51# else
52# define WINELIB_NAME_AW(func) func##A
53# endif /* UNICODE */
54#endif /* __WINE__ */
55
56#ifdef __WINE__
57# define DECL_WINELIB_TYPE_AW(type) /* nothing */
58#else /* __WINE__ */
59# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
60#endif /* __WINE__ */
61
62
63/* Calling conventions definitions */
64
65#ifndef __WIN32OS2__
66#ifdef __i386__
67# if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)
68# define __stdcall __attribute__((__stdcall__))
69# define __cdecl __attribute__((__cdecl__))
70# define __RESTORE_ES __asm__ __volatile__("pushl %ds\n\tpopl %es")
71# else
72# error You need gcc >= 2.7 to build Wine on a 386
73# endif /* __GNUC__ */
74#else /* __i386__ */
75# define __stdcall
76# define __cdecl
77# define __RESTORE_ES
78#endif /* __i386__ */
79#endif
80
81
82#include <odin.h>
83
84/* define needed macros as required */
85#ifndef CALLBACK
86 #define CALLBACK __stdcall
87#endif
88
89#ifndef WINAPI
90 #define WINAPI __stdcall
91#endif
92
93#ifndef APIPRIVATE
94 #define APIPRIVATE __stdcall
95#endif
96
97#ifndef PASCAL
98 #define PASCAL __stdcall
99#endif
100
101#ifndef pascal
102 #define pascal __stdcall
103#endif
104
105#ifndef _pascal
106 #define _pascal __stdcall
107#endif
108
109#ifndef _stdcall
110 #define _stdcall __stdcall
111#endif
112
113#ifndef _fastcall
114 #define _fastcall __stdcall
115#endif
116
117#ifndef __export
118 #define __export
119#endif
120
121#ifndef CDECL
122 #define CDECL __cdecl
123#endif
124
125#ifndef _CDECL
126 #define _CDECL __cdecl
127#endif
128
129#ifndef cdecl
130 #define cdecl __cdecl
131#endif
132
133#ifndef _cdecl
134 #define _cdecl __cdecl
135#endif
136
137#ifndef WINAPIV
138 #define WINAPIV __cdecl
139#endif
140
141#ifndef APIENTRY
142 #define APIENTRY WINAPI
143#endif
144
145#ifndef WIN32API
146 #define WIN32API WINAPI
147#endif
148
149
150#if (__IBMC__ < 400) && (__IBMCPP__ < 360)
151#ifndef __declspec
152 #define __declspec(x)
153#endif
154
155#ifndef dllimport
156 #define dllimport
157#endif
158
159#ifndef dllexport
160 #define dllexport
161#endif
162#endif // (__IBMC__ < 400) && (__IBMCPP__ < 360)
163
164#ifndef CONST
165 #define CONST const
166#endif
167
168/* Anonymous union/struct handling */
169
170#ifndef NONAMELESSSTRUCT
171#define DUMMYSTRUCTNAME
172#define DUMMYSTRUCTNAME1
173#define DUMMYSTRUCTNAME2
174#define DUMMYSTRUCTNAME3
175#define DUMMYSTRUCTNAME4
176#define DUMMYSTRUCTNAME5
177#else /* !defined(NONAMELESSSTRUCT) */
178#define DUMMYSTRUCTNAME s
179#define DUMMYSTRUCTNAME1 s1
180#define DUMMYSTRUCTNAME2 s2
181#define DUMMYSTRUCTNAME3 s3
182#define DUMMYSTRUCTNAME4 s4
183#define DUMMYSTRUCTNAME5 s5
184#endif /* !defined(NONAMELESSSTRUCT) */
185
186#ifndef NONAMELESSUNION
187#define DUMMYUNIONNAME
188#define DUMMYUNIONNAME1
189#define DUMMYUNIONNAME2
190#define DUMMYUNIONNAME3
191#define DUMMYUNIONNAME4
192#define DUMMYUNIONNAME5
193#define DUMMYUNIONNAME6
194#define DUMMYUNIONNAME7
195#define DUMMYUNIONNAME8
196#else /* !defined(NONAMELESSUNION) */
197#define DUMMYUNIONNAME u
198#define DUMMYUNIONNAME1 u1
199#define DUMMYUNIONNAME2 u2
200#define DUMMYUNIONNAME3 u3
201#define DUMMYUNIONNAME4 u4
202#define DUMMYUNIONNAME5 u5
203#define DUMMYUNIONNAME6 u6
204#define DUMMYUNIONNAME7 u7
205#define DUMMYUNIONNAME8 u8
206#endif /* !defined(NONAMELESSUNION) */
207
208
209/* Standard data types. These are the same for emulator and library. */
210
211typedef void VOID;
212typedef short INT16;
213typedef unsigned short UINT16;
214typedef int INT;
215typedef unsigned int UINT;
216typedef UINT * UINT_PTR;
217typedef unsigned short WORD;
218typedef unsigned long DWORD;
219typedef unsigned long ULONG;
220typedef unsigned char BYTE;
221typedef long LONG;
222typedef short SHORT;
223typedef unsigned short USHORT;
224typedef char CHAR;
225typedef unsigned char UCHAR;
226/* Some systems might have wchar_t, but we really need 16 bit characters */
227typedef unsigned short WCHAR;
228typedef unsigned short BOOL16;
229typedef unsigned long BOOL;
230typedef double DATE;
231typedef long LONG_PTR;
232typedef unsigned long ULONG_PTR;
233typedef double DOUBLE;
234#if (__IBMC__ < 360) && (__IBMCPP__ < 360)
235typedef double LONGLONG;
236typedef double ULONGLONG;
237typedef double ULONGULONG;
238typedef double DWORDLONG;
239#else
240#include <inttypes.h>
241typedef int64_t LONGLONG;
242typedef uint64_t ULONGLONG;
243typedef uint64_t ULONGULONG;
244typedef uint64_t DWORDLONG;
245#endif
246
247/* FIXME: Wine does not compile with strict on, therefore strict
248 * handles are presently only usable on machines where sizeof(UINT) ==
249 * sizeof(void*). HANDLEs are supposed to be void* but a large amount
250 * of WINE code operates on HANDLES as if they are UINTs. So to WINE
251 * they exist as UINTs but to the Winelib user who turns on strict,
252 * they exist as void*. If there is a size difference between UINT and
253 * void* then things get ugly. */
254#ifdef STRICT
255typedef UINT16 HANDLE16;
256typedef VOID* HANDLE;
257#else
258typedef UINT16 HANDLE16;
259typedef ULONG HANDLE;
260#endif
261
262typedef HANDLE16 *LPHANDLE16;
263typedef HANDLE *LPHANDLE;
264
265/* Integer types. These are the same for emulator and library. */
266typedef UINT16 WPARAM16;
267typedef UINT WPARAM;
268typedef LONG LPARAM;
269typedef LONG HRESULT;
270typedef LONG LRESULT;
271typedef WORD ATOM;
272typedef WORD CATCHBUF[9];
273typedef WORD *LPCATCHBUF;
274typedef DWORD REGSAM;
275typedef HANDLE HHOOK;
276typedef HANDLE HKEY;
277typedef HANDLE HMONITOR;
278typedef DWORD LCID;
279typedef WORD LANGID;
280typedef DWORD LCTYPE;
281typedef float FLOAT;
282#ifdef __WIN32OS2__
283#if (__IBMC__ < 400) && (__IBMCPP__ < 360) && !defined(__WATCOMC__)
284typedef double __int64;
285#endif
286#else
287typedef long long __int64;
288#endif
289
290/* Pointers types. These are the same for emulator and library. */
291/* winnt types */
292typedef VOID *PVOID;
293typedef const void *PCVOID;
294typedef CHAR *PCHAR;
295typedef UCHAR *PUCHAR;
296typedef BYTE *PBYTE;
297typedef ULONG *PULONG;
298typedef LONG *PLONG;
299typedef DWORD *PDWORD;
300/* common win32 types */
301#ifdef __WINE__
302typedef CHAR *LPTSTR;
303typedef const CHAR *LPCTSTR;
304#endif
305typedef CHAR *LPSTR;
306typedef CHAR *PSTR;
307typedef const CHAR *LPCSTR;
308typedef const CHAR *PCSTR;
309typedef WCHAR *LPWSTR;
310typedef WCHAR *PWSTR;
311typedef const WCHAR *LPCWSTR;
312typedef const WCHAR *PCWSTR;
313typedef BYTE *LPBYTE;
314typedef WORD *LPWORD;
315typedef DWORD *LPDWORD;
316typedef LONG *LPLONG;
317typedef VOID *LPVOID;
318typedef const VOID *LPCVOID;
319typedef INT16 *LPINT16;
320typedef UINT16 *LPUINT16;
321typedef INT *PINT;
322typedef INT *LPINT;
323typedef UINT *PUINT;
324typedef UINT *LPUINT;
325typedef HKEY *LPHKEY;
326typedef HKEY *PHKEY;
327typedef FLOAT *PFLOAT;
328typedef FLOAT *LPFLOAT;
329typedef BOOL *PBOOL;
330typedef BOOL *LPBOOL;
331
332/* Special case: a segmented pointer is just a pointer in the user's code. */
333
334#ifdef __WINE__
335typedef DWORD SEGPTR;
336#else
337typedef void* SEGPTR;
338#endif /* __WINE__ */
339
340/* Handle types that exist both in Win16 and Win32. */
341
342#ifdef STRICT
343#define DECLARE_HANDLE(a) \
344 typedef HANDLE16 a##16; \
345 typedef a##16 *P##a##16; \
346 typedef a##16 *NP##a##16; \
347 typedef a##16 *LP##a##16; \
348 typedef struct a##__ { int unused; } *a; \
349 typedef a *P##a; \
350 typedef a *LP##a
351#else /*STRICT*/
352#define DECLARE_HANDLE(a) \
353 typedef HANDLE16 a##16; \
354 typedef a##16 *P##a##16; \
355 typedef a##16 *NP##a##16; \
356 typedef a##16 *LP##a##16; \
357 typedef HANDLE a; \
358 typedef a *P##a; \
359 typedef a *LP##a
360#endif /*STRICT*/
361
362DECLARE_HANDLE(HACMDRIVERID);
363DECLARE_HANDLE(HACMDRIVER);
364DECLARE_HANDLE(HACMOBJ);
365DECLARE_HANDLE(HACMSTREAM);
366DECLARE_HANDLE(HMETAFILEPICT);
367
368DECLARE_HANDLE(HACCEL);
369DECLARE_HANDLE(HBITMAP);
370DECLARE_HANDLE(HBRUSH);
371DECLARE_HANDLE(HCOLORSPACE);
372DECLARE_HANDLE(HCURSOR);
373DECLARE_HANDLE(HDC);
374DECLARE_HANDLE(HGLRC); // OpenGL
375DECLARE_HANDLE(HDROP);
376DECLARE_HANDLE(HDRVR);
377DECLARE_HANDLE(HDWP);
378DECLARE_HANDLE(HENHMETAFILE);
379DECLARE_HANDLE(HFILE);
380DECLARE_HANDLE(HFONT);
381DECLARE_HANDLE(HICON);
382DECLARE_HANDLE(HINSTANCE);
383DECLARE_HANDLE(HMENU);
384DECLARE_HANDLE(HMETAFILE);
385DECLARE_HANDLE(HMIDI);
386DECLARE_HANDLE(HMIDIIN);
387DECLARE_HANDLE(HMIDIOUT);
388DECLARE_HANDLE(HMIDISTRM);
389DECLARE_HANDLE(HMIXER);
390DECLARE_HANDLE(HMIXEROBJ);
391DECLARE_HANDLE(HMMIO);
392DECLARE_HANDLE(HPALETTE);
393DECLARE_HANDLE(HPEN);
394DECLARE_HANDLE(HQUEUE);
395DECLARE_HANDLE(HRGN);
396DECLARE_HANDLE(HRSRC);
397DECLARE_HANDLE(HTASK);
398DECLARE_HANDLE(HWAVE);
399DECLARE_HANDLE(HWAVEIN);
400DECLARE_HANDLE(HWAVEOUT);
401DECLARE_HANDLE(HWINSTA);
402DECLARE_HANDLE(HDESK);
403DECLARE_HANDLE(HWND);
404DECLARE_HANDLE(HKL);
405DECLARE_HANDLE(HIC);
406DECLARE_HANDLE(HRASCONN);
407DECLARE_HANDLE(HPRINTER);
408#undef DECLARE_HANDLE
409
410/* Handle types that must remain interchangeable even with strict on */
411
412typedef HINSTANCE16 HMODULE16;
413typedef HINSTANCE HMODULE;
414typedef HANDLE16 HGDIOBJ16;
415typedef HANDLE16 HGLOBAL16;
416typedef HANDLE16 HLOCAL16;
417typedef HANDLE HGDIOBJ;
418typedef HANDLE HGLOBAL;
419typedef HANDLE HLOCAL;
420
421/* Callback function pointers types */
422
423typedef BOOL16 (* CALLBACK DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
424typedef BOOL (* CALLBACK DLGPROC)(HWND,UINT,WPARAM,LPARAM);
425typedef LRESULT (* CALLBACK DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
426typedef LRESULT (* CALLBACK DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
427typedef INT16 (* CALLBACK EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);
428typedef INT (* CALLBACK EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
429typedef INT (* CALLBACK EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
430DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
431typedef LRESULT (* CALLBACK FARPROC16)();
432typedef LRESULT (* CALLBACK FARPROC)();
433typedef INT16 (* CALLBACK PROC16)();
434typedef INT (* CALLBACK PROC)();
435typedef INT16 (* CALLBACK GOBJENUMPROC16)(SEGPTR,LPARAM);
436typedef INT (* CALLBACK GOBJENUMPROC)(LPVOID,LPARAM);
437typedef BOOL16 (* CALLBACK GRAYSTRINGPROC16)(HDC16,LPARAM,INT16);
438typedef BOOL (* CALLBACK GRAYSTRINGPROC)(HDC,LPARAM,INT);
439typedef LRESULT (* CALLBACK HOOKPROC16)(INT16,WPARAM16,LPARAM);
440typedef LRESULT (* CALLBACK HOOKPROC)(INT,WPARAM,LPARAM);
441typedef VOID (* CALLBACK LINEDDAPROC16)(INT16,INT16,LPARAM);
442typedef VOID (* CALLBACK LINEDDAPROC)(INT,INT,LPARAM);
443typedef BOOL16 (* CALLBACK PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16);
444typedef BOOL (* CALLBACK PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
445typedef BOOL (* CALLBACK PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
446DECL_WINELIB_TYPE_AW(PROPENUMPROC)
447typedef BOOL (* CALLBACK PROPENUMPROCEXA)(HWND,LPCSTR,HANDLE,LPARAM);
448typedef BOOL (* CALLBACK PROPENUMPROCEXW)(HWND,LPCWSTR,HANDLE,LPARAM);
449DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
450typedef VOID (* CALLBACK TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);
451typedef VOID (* CALLBACK TIMERPROC)(HWND,UINT,UINT,DWORD);
452typedef LRESULT (* CALLBACK WNDENUMPROC16)(HWND16,LPARAM);
453//typedef LRESULT (* CALLBACK WNDENUMPROC)(HWND,LPARAM);
454typedef BOOL (* CALLBACK WNDENUMPROC)(HWND,LPARAM);
455typedef LRESULT (* CALLBACK WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
456typedef LRESULT (* CALLBACK WNDPROC)(HWND,UINT,WPARAM,LPARAM);
457
458/* TCHAR data types definitions for Winelib. */
459/* These types are _not_ defined for the emulator, because they */
460/* depend on the UNICODE macro that only exists in user's code. */
461
462#ifndef __WINE__
463# ifdef UNICODE
464typedef WCHAR TCHAR;
465typedef LPWSTR LPTSTR;
466typedef LPCWSTR LPCTSTR;
467#define __TEXT(string) L##string /*probably wrong */
468# else /* UNICODE */
469typedef CHAR TCHAR;
470typedef LPSTR LPTSTR;
471typedef LPCSTR LPCTSTR;
472#define __TEXT(string) string
473# endif /* UNICODE */
474#endif /* __WINE__ */
475#define TEXT(quote) __TEXT(quote)
476
477/* Data types specific to the library. These do _not_ exist in the emulator. */
478
479
480
481/* Define some empty macros for compatibility with Windows code. */
482
483#ifndef __WINE__
484#define NEAR
485#define FAR
486#define near
487#define far
488#define _near
489#define _far
490#define IN
491#define OUT
492#define OPTIONAL
493#endif /* __WINE__ */
494
495/* Macro for structure packing. */
496
497#ifdef __GNUC__
498#define WINE_PACKED __attribute__ ((packed))
499#define WINE_UNUSED __attribute__ ((unused))
500#else
501#define WINE_PACKED /* nothing */
502#define WINE_UNUSED /* nothing */
503#endif
504
505/* Macros to split words and longs. */
506
507#define LOBYTE(w) ((BYTE)(WORD)(w))
508#define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))
509
510#define LOWORD(l) ((WORD)(DWORD)(l))
511#define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
512
513#define SLOWORD(l) ((INT16)(LONG)(l))
514#define SHIWORD(l) ((INT16)((LONG)(l) >> 16))
515
516#define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
517#define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
518#define MAKELPARAM(low,high) ((LPARAM)MAKELONG(low,high))
519#define MAKEWPARAM(low,high) ((WPARAM)MAKELONG(low,high))
520#define MAKELRESULT(low,high) ((LRESULT)MAKELONG(low,high))
521#define MAKEINTATOM(atom) ((LPCSTR)MAKELONG((atom),0))
522
523#define SELECTOROF(ptr) (HIWORD(ptr))
524#define OFFSETOF(ptr) (LOWORD(ptr))
525
526/* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
527/* Note: These macros are semantically broken, at least for wrc. wrc
528 spits out data in the platform's current binary format, *not* in
529 little-endian format. These macros are used throughout the resource
530 code to load and store data to the resources. Since it is unlikely
531 that we'll ever be dealing with little-endian resource data, the
532 byte-swapping nature of these macros has been disabled. Rather than
533 remove the use of these macros from the resource loading code, the
534 macros have simply been disabled. In the future, someone may want
535 to reactivate these macros for other purposes. In that case, the
536 resource code will have to be modified to use different macros. */
537
538#if 1
539#define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))
540#define GET_WORD(ptr) (*(WORD *)(ptr))
541#define PUT_DWORD(ptr,dw) (*(DWORD *)(ptr) = (dw))
542#define GET_DWORD(ptr) (*(DWORD *)(ptr))
543#else
544#define PUT_WORD(ptr,w) (*(BYTE *)(ptr) = LOBYTE(w), \
545 *((BYTE *)(ptr) + 1) = HIBYTE(w))
546#define GET_WORD(ptr) ((WORD)(*(BYTE *)(ptr) | \
547 (WORD)(*((BYTE *)(ptr)+1) << 8)))
548#define PUT_DWORD(ptr,dw) (PUT_WORD((ptr),LOWORD(dw)), \
549 PUT_WORD((WORD *)(ptr)+1,HIWORD(dw)))
550#define GET_DWORD(ptr) ((DWORD)(GET_WORD(ptr) | \
551 ((DWORD)GET_WORD((WORD *)(ptr)+1) << 16)))
552#endif /* 1 */
553
554/* MIN and MAX macros */
555
556#ifdef MAX
557#undef MAX
558#endif
559#define MAX(a,b) (((a) > (b)) ? (a) : (b))
560
561#ifdef MIN
562#undef MIN
563#endif
564#define MIN(a,b) (((a) < (b)) ? (a) : (b))
565
566#ifdef __max /* watcom stdlib.h defines this */
567#undef __max
568#endif
569#define __max(a,b) MAX(a,b)
570
571#ifdef __min /* watcom stdlib.h defines this */
572#undef __min
573#endif
574#define __min(a,b) MIN(a,b)
575#ifndef RC_INVOKED
576#include <stdlib.h>
577#endif
578
579#define _MAX_PATH 260
580#define MAX_PATH 260
581#define _MAX_DRIVE 3
582#define _MAX_DIR 256
583#if !defined(__WIN32OS2__) && !defined(_MAX_FNAME)
584#define _MAX_FNAME 255
585#endif
586#define _MAX_EXT 256
587
588#define HFILE_ERROR16 ((HFILE16)-1)
589#define HFILE_ERROR ((HFILE)-1)
590
591/* Winelib run-time flag */
592
593#ifdef __WINE__
594extern int __winelib;
595#endif /* __WINE__ */
596
597/* The SIZE structure */
598
599typedef struct
600{
601 INT16 cx;
602 INT16 cy;
603} SIZE16, *PSIZE16, *LPSIZE16;
604
605typedef struct tagSIZE
606{
607 INT cx;
608 INT cy;
609} SIZE, *PSIZE, *LPSIZE;
610
611
612typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
613
614#define CONV_SIZE16TO32(s16,s32) \
615 ((s32)->cx = (INT)(s16)->cx, (s32)->cy = (INT)(s16)->cy)
616#define CONV_SIZE32TO16(s32,s16) \
617 ((s16)->cx = (INT16)(s32)->cx, (s16)->cy = (INT16)(s32)->cy)
618
619/* The POINT structure */
620
621typedef struct
622{
623 INT16 x;
624 INT16 y;
625} POINT16, *PPOINT16, *LPPOINT16;
626
627typedef struct tagPOINT
628{
629 LONG x;
630 LONG y;
631} POINT, *PPOINT, *LPPOINT;
632
633typedef struct _POINTL
634{
635 LONG x;
636 LONG y;
637} POINTL;
638
639#define CONV_POINT16TO32(p16,p32) \
640 ((p32)->x = (INT)(p16)->x, (p32)->y = (INT)(p16)->y)
641#define CONV_POINT32TO16(p32,p16) \
642 ((p16)->x = (INT16)(p32)->x, (p16)->y = (INT16)(p32)->y)
643
644#define MAKEPOINT(l) (*((POINT *)&(l)))
645
646#define MAKEPOINT16(l) (*((POINT16 *)&(l)))
647
648/* The POINTS structure */
649
650typedef struct tagPOINTS
651{
652 SHORT x;
653 SHORT y;
654} POINTS, *PPOINTS, *LPPOINTS;
655
656
657#define MAKEPOINTS(l) (*((POINTS *)&(l)))
658
659
660/* The RECT structure */
661
662typedef struct
663{
664 INT16 left;
665 INT16 top;
666 INT16 right;
667 INT16 bottom;
668} RECT16, *LPRECT16;
669
670typedef struct tagRECT
671{
672 INT left;
673 INT top;
674 INT right;
675 INT bottom;
676} RECT, *PRECT, *LPRECT;
677typedef const RECT *LPCRECT;
678
679
680typedef struct tagRECTL
681{
682 LONG left;
683 LONG top;
684 LONG right;
685 LONG bottom;
686} RECTL, *PRECTL, *LPRECTL;
687
688typedef const RECTL *LPCRECTL;
689
690#define CONV_RECT16TO32(r16,r32) \
691 ((r32)->left = (INT)(r16)->left, (r32)->top = (INT)(r16)->top, \
692 (r32)->right = (INT)(r16)->right, (r32)->bottom = (INT)(r16)->bottom)
693#define CONV_RECT32TO16(r32,r16) \
694 ((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \
695 (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)
696
697/*
698 * 8.9.99 DJR DECIMAL support
699 */
700typedef struct tagDEC
701{
702 USHORT wReserved;
703 union
704 {
705 struct
706 {
707 BYTE scale;
708 BYTE sign;
709 } a;
710 USHORT signscale;
711 } b;
712 ULONG Hi32;
713 union
714 {
715 struct
716 {
717 ULONG Lo32;
718 ULONG Mid32;
719 } c;
720 ULONGLONG Lo64;
721 } d;
722} DECIMAL;
723
724#include <winbase.h>
725
726#ifdef __cplusplus
727}
728#endif
729
730#endif /* __WINE_WINDEF_H */
Note: See TracBrowser for help on using the repository browser.