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

Last change on this file since 2524 was 2524, checked in by sandervl, 26 years ago

header changes

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