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

Last change on this file since 4114 was 4075, checked in by sandervl, 25 years ago

updates for watcom

File size: 17.0 KB
Line 
1/* $Id: windef.h,v 1.24 2000-08-23 18:05:56 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
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) && !defined(__WATCOMC__)
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(HGLRC); // OpenGL
319DECLARE_HANDLE(HDROP);
320DECLARE_HANDLE(HDRVR);
321DECLARE_HANDLE(HDWP);
322DECLARE_HANDLE(HENHMETAFILE);
323DECLARE_HANDLE(HFILE);
324DECLARE_HANDLE(HFONT);
325DECLARE_HANDLE(HICON);
326DECLARE_HANDLE(HINSTANCE);
327DECLARE_HANDLE(HMENU);
328DECLARE_HANDLE(HMETAFILE);
329DECLARE_HANDLE(HMIDI);
330DECLARE_HANDLE(HMIDIIN);
331DECLARE_HANDLE(HMIDIOUT);
332DECLARE_HANDLE(HMIDISTRM);
333DECLARE_HANDLE(HMIXER);
334DECLARE_HANDLE(HMIXEROBJ);
335DECLARE_HANDLE(HMMIO);
336DECLARE_HANDLE(HPALETTE);
337DECLARE_HANDLE(HPEN);
338DECLARE_HANDLE(HQUEUE);
339DECLARE_HANDLE(HRGN);
340DECLARE_HANDLE(HRSRC);
341DECLARE_HANDLE(HTASK);
342DECLARE_HANDLE(HWAVE);
343DECLARE_HANDLE(HWAVEIN);
344DECLARE_HANDLE(HWAVEOUT);
345DECLARE_HANDLE(HWINSTA);
346DECLARE_HANDLE(HDESK);
347DECLARE_HANDLE(HWND);
348DECLARE_HANDLE(HKL);
349DECLARE_HANDLE(HIC);
350DECLARE_HANDLE(HRASCONN);
351DECLARE_HANDLE(HPRINTER);
352#undef DECLARE_HANDLE
353
354/* Handle types that must remain interchangeable even with strict on */
355
356typedef HINSTANCE16 HMODULE16;
357typedef HINSTANCE HMODULE;
358typedef HANDLE16 HGDIOBJ16;
359typedef HANDLE16 HGLOBAL16;
360typedef HANDLE16 HLOCAL16;
361typedef HANDLE HGDIOBJ;
362typedef HANDLE HGLOBAL;
363typedef HANDLE HLOCAL;
364
365/* Callback function pointers types */
366
367typedef BOOL (* CALLBACK DATEFMT_ENUMPROCA)(LPSTR);
368typedef BOOL (* CALLBACK DATEFMT_ENUMPROCW)(LPWSTR);
369DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROC)
370typedef BOOL16 (* CALLBACK DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
371typedef BOOL (* CALLBACK DLGPROC)(HWND,UINT,WPARAM,LPARAM);
372typedef LRESULT (* CALLBACK DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
373typedef LRESULT (* CALLBACK DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
374typedef INT16 (* CALLBACK EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);
375typedef INT (* CALLBACK EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
376typedef INT (* CALLBACK EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
377DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
378typedef LRESULT (* CALLBACK FARPROC16)();
379typedef LRESULT (* CALLBACK FARPROC)();
380typedef INT16 (* CALLBACK PROC16)();
381typedef INT (* CALLBACK PROC)();
382typedef INT16 (* CALLBACK GOBJENUMPROC16)(SEGPTR,LPARAM);
383typedef INT (* CALLBACK GOBJENUMPROC)(LPVOID,LPARAM);
384typedef BOOL16 (* CALLBACK GRAYSTRINGPROC16)(HDC16,LPARAM,INT16);
385typedef BOOL (* CALLBACK GRAYSTRINGPROC)(HDC,LPARAM,INT);
386typedef LRESULT (* CALLBACK HOOKPROC16)(INT16,WPARAM16,LPARAM);
387typedef LRESULT (* CALLBACK HOOKPROC)(INT,WPARAM,LPARAM);
388typedef VOID (* CALLBACK LINEDDAPROC16)(INT16,INT16,LPARAM);
389typedef VOID (* CALLBACK LINEDDAPROC)(INT,INT,LPARAM);
390typedef BOOL16 (* CALLBACK PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16);
391typedef BOOL (* CALLBACK PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
392typedef BOOL (* CALLBACK PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
393DECL_WINELIB_TYPE_AW(PROPENUMPROC)
394typedef BOOL (* CALLBACK PROPENUMPROCEXA)(HWND,LPCSTR,HANDLE,LPARAM);
395typedef BOOL (* CALLBACK PROPENUMPROCEXW)(HWND,LPCWSTR,HANDLE,LPARAM);
396DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
397typedef BOOL (* CALLBACK TIMEFMT_ENUMPROCA)(LPSTR);
398typedef BOOL (* CALLBACK TIMEFMT_ENUMPROCW)(LPWSTR);
399DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)
400typedef VOID (* CALLBACK TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);
401typedef VOID (* CALLBACK TIMERPROC)(HWND,UINT,UINT,DWORD);
402typedef LRESULT (* CALLBACK WNDENUMPROC16)(HWND16,LPARAM);
403//typedef LRESULT (* CALLBACK WNDENUMPROC)(HWND,LPARAM);
404typedef BOOL (* CALLBACK WNDENUMPROC)(HWND,LPARAM);
405typedef LRESULT (* CALLBACK WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
406typedef LRESULT (* CALLBACK WNDPROC)(HWND,UINT,WPARAM,LPARAM);
407
408/* TCHAR data types definitions for Winelib. */
409/* These types are _not_ defined for the emulator, because they */
410/* depend on the UNICODE macro that only exists in user's code. */
411
412#ifndef __WINE__
413# ifdef UNICODE
414typedef WCHAR TCHAR;
415typedef LPWSTR LPTSTR;
416typedef LPCWSTR LPCTSTR;
417#define __TEXT(string) L##string /*probably wrong */
418# else /* UNICODE */
419typedef CHAR TCHAR;
420typedef LPSTR LPTSTR;
421typedef LPCSTR LPCTSTR;
422#define __TEXT(string) string
423# endif /* UNICODE */
424#endif /* __WINE__ */
425#define TEXT(quote) __TEXT(quote)
426
427/* Data types specific to the library. These do _not_ exist in the emulator. */
428
429
430
431/* Define some empty macros for compatibility with Windows code. */
432
433#ifndef __WINE__
434#define NEAR
435#define FAR
436#define near
437#define far
438#define _near
439#define _far
440#define IN
441#define OUT
442#define OPTIONAL
443#endif /* __WINE__ */
444
445/* Macro for structure packing. */
446
447#ifdef __GNUC__
448#define WINE_PACKED __attribute__ ((packed))
449#define WINE_UNUSED __attribute__ ((unused))
450#else
451#define WINE_PACKED /* nothing */
452#define WINE_UNUSED /* nothing */
453#endif
454
455/* Macros to split words and longs. */
456
457#define LOBYTE(w) ((BYTE)(WORD)(w))
458#define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))
459
460#define LOWORD(l) ((WORD)(DWORD)(l))
461#define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
462
463#define SLOWORD(l) ((INT16)(LONG)(l))
464#define SHIWORD(l) ((INT16)((LONG)(l) >> 16))
465
466#define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
467#define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
468#define MAKELPARAM(low,high) ((LPARAM)MAKELONG(low,high))
469#define MAKEWPARAM(low,high) ((WPARAM)MAKELONG(low,high))
470#define MAKELRESULT(low,high) ((LRESULT)MAKELONG(low,high))
471#define MAKEINTATOM(atom) ((LPCSTR)MAKELONG((atom),0))
472
473#define SELECTOROF(ptr) (HIWORD(ptr))
474#define OFFSETOF(ptr) (LOWORD(ptr))
475
476/* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
477/* Note: These macros are semantically broken, at least for wrc. wrc
478 spits out data in the platform's current binary format, *not* in
479 little-endian format. These macros are used throughout the resource
480 code to load and store data to the resources. Since it is unlikely
481 that we'll ever be dealing with little-endian resource data, the
482 byte-swapping nature of these macros has been disabled. Rather than
483 remove the use of these macros from the resource loading code, the
484 macros have simply been disabled. In the future, someone may want
485 to reactivate these macros for other purposes. In that case, the
486 resource code will have to be modified to use different macros. */
487
488#if 1
489#define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))
490#define GET_WORD(ptr) (*(WORD *)(ptr))
491#define PUT_DWORD(ptr,dw) (*(DWORD *)(ptr) = (dw))
492#define GET_DWORD(ptr) (*(DWORD *)(ptr))
493#else
494#define PUT_WORD(ptr,w) (*(BYTE *)(ptr) = LOBYTE(w), \
495 *((BYTE *)(ptr) + 1) = HIBYTE(w))
496#define GET_WORD(ptr) ((WORD)(*(BYTE *)(ptr) | \
497 (WORD)(*((BYTE *)(ptr)+1) << 8)))
498#define PUT_DWORD(ptr,dw) (PUT_WORD((ptr),LOWORD(dw)), \
499 PUT_WORD((WORD *)(ptr)+1,HIWORD(dw)))
500#define GET_DWORD(ptr) ((DWORD)(GET_WORD(ptr) | \
501 ((DWORD)GET_WORD((WORD *)(ptr)+1) << 16)))
502#endif /* 1 */
503
504/* MIN and MAX macros */
505
506#ifdef MAX
507#undef MAX
508#endif
509#define MAX(a,b) (((a) > (b)) ? (a) : (b))
510
511#ifdef MIN
512#undef MIN
513#endif
514#define MIN(a,b) (((a) < (b)) ? (a) : (b))
515
516#define __max(a,b) MAX(a,b)
517#define __min(a,b) MIN(a,b)
518#ifndef RC_INVOKED
519#include <stdlib.h>
520#endif
521
522#define _MAX_PATH 260
523#define MAX_PATH 260
524#define _MAX_DRIVE 3
525#define _MAX_DIR 256
526#if !defined(__WIN32OS2__) && !defined(_MAX_FNAME)
527#define _MAX_FNAME 255
528#endif
529#define _MAX_EXT 256
530
531#define HFILE_ERROR16 ((HFILE16)-1)
532#define HFILE_ERROR ((HFILE)-1)
533
534/* Winelib run-time flag */
535
536#ifdef __WINE__
537extern int __winelib;
538#endif /* __WINE__ */
539
540/* The SIZE structure */
541
542typedef struct
543{
544 INT16 cx;
545 INT16 cy;
546} SIZE16, *PSIZE16, *LPSIZE16;
547
548typedef struct tagSIZE
549{
550 INT cx;
551 INT cy;
552} SIZE, *PSIZE, *LPSIZE;
553
554
555typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
556
557#define CONV_SIZE16TO32(s16,s32) \
558 ((s32)->cx = (INT)(s16)->cx, (s32)->cy = (INT)(s16)->cy)
559#define CONV_SIZE32TO16(s32,s16) \
560 ((s16)->cx = (INT16)(s32)->cx, (s16)->cy = (INT16)(s32)->cy)
561
562/* The POINT structure */
563
564typedef struct
565{
566 INT16 x;
567 INT16 y;
568} POINT16, *PPOINT16, *LPPOINT16;
569
570typedef struct tagPOINT
571{
572 LONG x;
573 LONG y;
574} POINT, *PPOINT, *LPPOINT;
575
576typedef struct _POINTL
577{
578 LONG x;
579 LONG y;
580} POINTL;
581
582#define CONV_POINT16TO32(p16,p32) \
583 ((p32)->x = (INT)(p16)->x, (p32)->y = (INT)(p16)->y)
584#define CONV_POINT32TO16(p32,p16) \
585 ((p16)->x = (INT16)(p32)->x, (p16)->y = (INT16)(p32)->y)
586
587#define MAKEPOINT(l) (*((POINT *)&(l)))
588
589#define MAKEPOINT16(l) (*((POINT16 *)&(l)))
590
591/* The POINTS structure */
592
593typedef struct tagPOINTS
594{
595 SHORT x;
596 SHORT y;
597} POINTS, *PPOINTS, *LPPOINTS;
598
599
600#define MAKEPOINTS(l) (*((POINTS *)&(l)))
601
602
603/* The RECT structure */
604
605typedef struct
606{
607 INT16 left;
608 INT16 top;
609 INT16 right;
610 INT16 bottom;
611} RECT16, *LPRECT16;
612
613typedef struct tagRECT
614{
615 INT left;
616 INT top;
617 INT right;
618 INT bottom;
619} RECT, *PRECT, *LPRECT;
620typedef const RECT *LPCRECT;
621
622
623typedef struct tagRECTL
624{
625 LONG left;
626 LONG top;
627 LONG right;
628 LONG bottom;
629} RECTL, *PRECTL, *LPRECTL;
630
631typedef const RECTL *LPCRECTL;
632
633#define CONV_RECT16TO32(r16,r32) \
634 ((r32)->left = (INT)(r16)->left, (r32)->top = (INT)(r16)->top, \
635 (r32)->right = (INT)(r16)->right, (r32)->bottom = (INT)(r16)->bottom)
636#define CONV_RECT32TO16(r32,r16) \
637 ((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \
638 (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)
639
640/*
641 * 8.9.99 DJR DECIMAL support
642 */
643typedef struct tagDEC
644{
645 USHORT wReserved;
646 union
647 {
648 struct
649 {
650 BYTE scale;
651 BYTE sign;
652 } a;
653 USHORT signscale;
654 } b;
655 ULONG Hi32;
656 union
657 {
658 struct
659 {
660 ULONG Lo32;
661 ULONG Mid32;
662 } c;
663 ULONGLONG Lo64;
664 } d;
665} DECIMAL;
666
667#ifdef __cplusplus
668}
669#endif
670
671#endif /* __WINE_WINDEF_H */
Note: See TracBrowser for help on using the repository browser.