|  | /* | 
|  | * Basic types definitions | 
|  | * | 
|  | * Copyright 1996 Alexandre Julliard | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|  | */ | 
|  |  | 
|  | #ifndef _WINDEF_ | 
|  | #define _WINDEF_ | 
|  |  | 
|  | #ifndef WINVER | 
|  | #define WINVER 0x0500 | 
|  | #endif | 
|  |  | 
|  | #ifndef NO_STRICT | 
|  | # ifndef STRICT | 
|  | #  define STRICT | 
|  | # endif /* STRICT */ | 
|  | #endif /* NO_STRICT */ | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | /* Calling conventions definitions */ | 
|  |  | 
|  | #if defined(__i386__) && !defined(_X86_) | 
|  | # define _X86_ | 
|  | #endif | 
|  |  | 
|  | #ifndef __stdcall | 
|  | # ifdef __i386__ | 
|  | #  ifdef __GNUC__ | 
|  | #   define __stdcall __attribute__((__stdcall__)) | 
|  | #  elif defined(_MSC_VER) | 
|  | /* Nothing needs to be done. __stdcall already exists */ | 
|  | #  else | 
|  | #   error You need to define __stdcall for your compiler | 
|  | #  endif | 
|  | # else  /* __i386__ */ | 
|  | #  define __stdcall | 
|  | # endif  /* __i386__ */ | 
|  | #endif /* __stdcall */ | 
|  |  | 
|  | #ifndef __cdecl | 
|  | # if defined(__i386__) && defined(__GNUC__) | 
|  | #  define __cdecl __attribute__((__cdecl__)) | 
|  | # elif !defined(_MSC_VER) | 
|  | #  define __cdecl | 
|  | # endif | 
|  | #endif /* __stdcall */ | 
|  |  | 
|  | #ifdef __WINESRC__ | 
|  | #define __ONLY_IN_WINELIB(x)	do_not_use_this_in_wine | 
|  | #else | 
|  | #define __ONLY_IN_WINELIB(x)	x | 
|  | #endif | 
|  |  | 
|  | #ifndef pascal | 
|  | #define pascal      __ONLY_IN_WINELIB(__stdcall) | 
|  | #endif | 
|  | #ifndef _pascal | 
|  | #define _pascal	    __ONLY_IN_WINELIB(__stdcall) | 
|  | #endif | 
|  | #ifndef _stdcall | 
|  | #define _stdcall    __ONLY_IN_WINELIB(__stdcall) | 
|  | #endif | 
|  | #ifndef _fastcall | 
|  | #define _fastcall   __ONLY_IN_WINELIB(__stdcall) | 
|  | #endif | 
|  | #ifndef __fastcall | 
|  | #define __fastcall  __ONLY_IN_WINELIB(__stdcall) | 
|  | #endif | 
|  | #ifndef __export | 
|  | #define __export    __ONLY_IN_WINELIB(__stdcall) | 
|  | #endif | 
|  | #ifndef cdecl | 
|  | #define cdecl       __ONLY_IN_WINELIB(__cdecl) | 
|  | #endif | 
|  | #ifndef _cdecl | 
|  | #define _cdecl      __ONLY_IN_WINELIB(__cdecl) | 
|  | #endif | 
|  |  | 
|  | #ifndef near | 
|  | #define near        __ONLY_IN_WINELIB() | 
|  | #endif | 
|  | #ifndef far | 
|  | #define far         __ONLY_IN_WINELIB() | 
|  | #endif | 
|  | #ifndef _near | 
|  | #define _near       __ONLY_IN_WINELIB() | 
|  | #endif | 
|  | #ifndef _far | 
|  | #define _far        __ONLY_IN_WINELIB() | 
|  | #endif | 
|  | #ifndef NEAR | 
|  | #define NEAR        __ONLY_IN_WINELIB() | 
|  | #endif | 
|  | #ifndef FAR | 
|  | #define FAR         __ONLY_IN_WINELIB() | 
|  | #endif | 
|  |  | 
|  | #ifndef _MSC_VER | 
|  | # ifndef _declspec | 
|  | #  define _declspec(x)    __ONLY_IN_WINELIB() | 
|  | # endif | 
|  | # ifndef __declspec | 
|  | #  define __declspec(x)   __ONLY_IN_WINELIB() | 
|  | # endif | 
|  | #endif | 
|  |  | 
|  | #define CALLBACK    __stdcall | 
|  | #define WINAPI      __stdcall | 
|  | #define APIPRIVATE  __stdcall | 
|  | #define PASCAL      __stdcall | 
|  | #define CDECL       __cdecl | 
|  | #define _CDECL      __cdecl | 
|  | #define WINAPIV     __cdecl | 
|  | #define APIENTRY    WINAPI | 
|  | #define CONST       const | 
|  |  | 
|  | /* Misc. constants. */ | 
|  |  | 
|  | #undef NULL | 
|  | #ifdef __cplusplus | 
|  | #define NULL  0 | 
|  | #else | 
|  | #define NULL  ((void*)0) | 
|  | #endif | 
|  |  | 
|  | #ifdef FALSE | 
|  | #undef FALSE | 
|  | #endif | 
|  | #define FALSE 0 | 
|  |  | 
|  | #ifdef TRUE | 
|  | #undef TRUE | 
|  | #endif | 
|  | #define TRUE  1 | 
|  |  | 
|  | #ifndef IN | 
|  | #define IN | 
|  | #endif | 
|  |  | 
|  | #ifndef OUT | 
|  | #define OUT | 
|  | #endif | 
|  |  | 
|  | #ifndef OPTIONAL | 
|  | #define OPTIONAL | 
|  | #endif | 
|  |  | 
|  | /* Standard data types */ | 
|  |  | 
|  | typedef void                                   *LPVOID; | 
|  | typedef const void                             *LPCVOID; | 
|  | typedef int             BOOL,       *PBOOL,    *LPBOOL; | 
|  | typedef unsigned char   BYTE,       *PBYTE,    *LPBYTE; | 
|  | typedef unsigned char   UCHAR,      *PUCHAR; | 
|  | typedef unsigned short  WORD,       *PWORD,    *LPWORD; | 
|  | typedef unsigned short  USHORT,     *PUSHORT; | 
|  | typedef int             INT,        *PINT,     *LPINT; | 
|  | typedef unsigned int    UINT,       *PUINT; | 
|  | typedef long                                   *LPLONG; | 
|  | typedef unsigned long   DWORD,      *PDWORD,   *LPDWORD; | 
|  | typedef unsigned long   ULONG,      *PULONG; | 
|  | typedef float           FLOAT,      *PFLOAT; | 
|  | typedef char                        *PSZ; | 
|  |  | 
|  | /* Macros to map Winelib names to the correct implementation name */ | 
|  | /* Note that Winelib is purely Win32.                             */ | 
|  |  | 
|  | #ifdef __WINESRC__ | 
|  | # define WINELIB_NAME_AW(func) \ | 
|  | func##_must_be_suffixed_with_W_or_A_in_this_context \ | 
|  | func##_must_be_suffixed_with_W_or_A_in_this_context | 
|  | #else  /* __WINESRC__ */ | 
|  | # ifdef UNICODE | 
|  | #  define WINELIB_NAME_AW(func) func##W | 
|  | # else | 
|  | #  define WINELIB_NAME_AW(func) func##A | 
|  | # endif  /* UNICODE */ | 
|  | #endif  /* __WINESRC__ */ | 
|  |  | 
|  | #ifdef __WINESRC__ | 
|  | # define DECL_WINELIB_TYPE_AW(type)  /* nothing */ | 
|  | #else   /* __WINESRC__ */ | 
|  | # define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type; | 
|  | #endif  /* __WINESRC__ */ | 
|  |  | 
|  | #include <winnt.h> | 
|  |  | 
|  | /* Polymorphic types */ | 
|  |  | 
|  | typedef UINT_PTR        WPARAM; | 
|  | typedef LONG_PTR        LPARAM; | 
|  | typedef LONG_PTR        LRESULT; | 
|  |  | 
|  | /* Integer types */ | 
|  |  | 
|  | typedef WORD            ATOM; | 
|  | typedef DWORD           COLORREF, *LPCOLORREF; | 
|  |  | 
|  |  | 
|  | /* Handle types */ | 
|  |  | 
|  | typedef int HFILE; | 
|  | DECLARE_HANDLE(HACCEL); | 
|  | DECLARE_HANDLE(HBITMAP); | 
|  | DECLARE_HANDLE(HBRUSH); | 
|  | DECLARE_HANDLE(HCOLORSPACE); | 
|  | DECLARE_HANDLE(HDC); | 
|  | DECLARE_HANDLE(HDESK); | 
|  | DECLARE_HANDLE(HENHMETAFILE); | 
|  | DECLARE_HANDLE(HFONT); | 
|  | DECLARE_HANDLE(HGLRC); | 
|  | DECLARE_HANDLE(HHOOK); | 
|  | DECLARE_HANDLE(HICON); | 
|  | DECLARE_HANDLE(HINSTANCE); | 
|  | DECLARE_HANDLE(HKEY); | 
|  | typedef HKEY *PHKEY; | 
|  | DECLARE_HANDLE(HKL); | 
|  | DECLARE_HANDLE(HMENU); | 
|  | DECLARE_HANDLE(HMETAFILE); | 
|  | DECLARE_HANDLE(HMONITOR); | 
|  | DECLARE_HANDLE(HPALETTE); | 
|  | DECLARE_HANDLE(HPEN); | 
|  | DECLARE_HANDLE(HRGN); | 
|  | DECLARE_HANDLE(HRSRC); | 
|  | DECLARE_HANDLE(HTASK); | 
|  | DECLARE_HANDLE(HWINEVENTHOOK); | 
|  | DECLARE_HANDLE(HWINSTA); | 
|  | DECLARE_HANDLE(HWND); | 
|  |  | 
|  | /* Handle types that must remain interchangeable even with strict on */ | 
|  |  | 
|  | typedef HINSTANCE HMODULE; | 
|  | typedef HANDLE HGDIOBJ; | 
|  | typedef HANDLE HGLOBAL; | 
|  | typedef HANDLE HLOCAL; | 
|  | typedef HANDLE GLOBALHANDLE; | 
|  | typedef HANDLE LOCALHANDLE; | 
|  | typedef HICON HCURSOR; | 
|  |  | 
|  | /* Callback function pointers types */ | 
|  |  | 
|  | typedef INT     (CALLBACK *FARPROC)(); | 
|  | typedef INT     (CALLBACK *PROC)(); | 
|  |  | 
|  |  | 
|  | /* Macros to split words and longs. */ | 
|  |  | 
|  | #define LOBYTE(w)              ((BYTE)(WORD)(w)) | 
|  | #define HIBYTE(w)              ((BYTE)((WORD)(w) >> 8)) | 
|  |  | 
|  | #define LOWORD(l)              ((WORD)(DWORD)(l)) | 
|  | #define HIWORD(l)              ((WORD)((DWORD)(l) >> 16)) | 
|  |  | 
|  | #define MAKEWORD(low,high)     ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8)) | 
|  | #define MAKELONG(low,high)     ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16))) | 
|  |  | 
|  | /* min and max macros */ | 
|  | #ifndef NOMINMAX | 
|  | #ifndef max | 
|  | #define max(a,b)   (((a) > (b)) ? (a) : (b)) | 
|  | #endif | 
|  | #ifndef min | 
|  | #define min(a,b)   (((a) < (b)) ? (a) : (b)) | 
|  | #endif | 
|  | #endif  /* NOMINMAX */ | 
|  |  | 
|  | #ifdef MAX_PATH /* Work-around for Mingw */ | 
|  | #undef MAX_PATH | 
|  | #endif /* MAX_PATH */ | 
|  |  | 
|  | #define MAX_PATH        260 | 
|  | #define HFILE_ERROR     ((HFILE)-1) | 
|  |  | 
|  | /* The SIZE structure */ | 
|  | typedef struct tagSIZE | 
|  | { | 
|  | LONG cx; | 
|  | LONG cy; | 
|  | } SIZE, *PSIZE, *LPSIZE; | 
|  |  | 
|  | typedef SIZE SIZEL, *PSIZEL, *LPSIZEL; | 
|  |  | 
|  | /* The POINT structure */ | 
|  | typedef struct tagPOINT | 
|  | { | 
|  | LONG  x; | 
|  | LONG  y; | 
|  | } POINT, *PPOINT, *LPPOINT; | 
|  |  | 
|  | typedef struct _POINTL | 
|  | { | 
|  | LONG x; | 
|  | LONG y; | 
|  | } POINTL, *PPOINTL; | 
|  |  | 
|  | /* The POINTS structure */ | 
|  |  | 
|  | typedef struct tagPOINTS | 
|  | { | 
|  | SHORT x; | 
|  | SHORT y; | 
|  | } POINTS, *PPOINTS, *LPPOINTS; | 
|  |  | 
|  | /* The RECT structure */ | 
|  | typedef struct tagRECT | 
|  | { | 
|  | LONG left; | 
|  | LONG top; | 
|  | LONG right; | 
|  | LONG bottom; | 
|  | } RECT, *PRECT, *LPRECT; | 
|  | typedef const RECT *LPCRECT; | 
|  |  | 
|  | typedef struct _RECTL | 
|  | { | 
|  | LONG left; | 
|  | LONG top; | 
|  | LONG right; | 
|  | LONG bottom; | 
|  | } RECTL, *PRECTL, *LPRECTL; | 
|  |  | 
|  | typedef const RECTL *LPCRECTL; | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif /* _WINDEF_ */ |