#ifndef _WINDEF_H #define _WINDEF_H #if __GNUC__ >=3 #pragma GCC system_header #endif #ifdef __cplusplus extern "C" { #endif #ifndef WINVER #define WINVER 0x0400 /* * If you need Win32 API features newer the Win95 and WinNT then you must * define WINVER before including windows.h or any other method of including * the windef.h header. */ #endif #ifndef _WIN32_WINNT #define _WIN32_WINNT WINVER /* * There may be the need to define _WIN32_WINNT to a value different from * the value of WINVER. I don't have any example of why you would do that. * However, if you must then define _WIN32_WINNT to the value required before * including windows.h or any other method of including the windef.h header. */ #endif #ifndef WIN32 #define WIN32 #endif #ifndef _WIN32 #define _WIN32 #endif #define FAR #define far #define NEAR #define near #ifndef CONST #define CONST const #endif #undef MAX_PATH #define MAX_PATH 260 #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void*)0) #endif #endif #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif #define IN #define OUT #ifndef OPTIONAL #define OPTIONAL #endif #ifdef __GNUC__ #define PACKED __attribute__((packed)) #ifndef _fastcall #define _fastcall __attribute__((fastcall)) #endif #ifndef __fastcall #define __fastcall __attribute__((fastcall)) #endif #ifndef _stdcall #define _stdcall __attribute__((stdcall)) #endif #ifndef __stdcall #define __stdcall __attribute__((stdcall)) #endif #ifndef _cdecl #define _cdecl __attribute__((cdecl)) #endif #ifndef __cdecl #define __cdecl __attribute__((cdecl)) #endif #ifndef __declspec #define __declspec(e) __attribute__((e)) #endif #ifndef _declspec #define _declspec(e) __attribute__((e)) #endif #elif defined(__WATCOMC__) #define PACKED #else #define PACKED #define _cdecl #define __cdecl #endif #undef pascal #undef _pascal #undef __pascal #define pascal __stdcall #define _pascal __stdcall #define __pascal __stdcall #define PASCAL _pascal #define CDECL _cdecl #define STDCALL __stdcall #define FASTCALL __fastcall #define WINAPI __stdcall #define WINAPIV __cdecl #define APIENTRY __stdcall #define CALLBACK __stdcall #define APIPRIVATE __stdcall #define DECLSPEC_IMPORT __declspec(dllimport) #define DECLSPEC_EXPORT __declspec(dllexport) #ifdef __GNUC__ #define DECLSPEC_NORETURN __declspec(noreturn) #define DECLARE_STDCALL_P( type ) __stdcall type #elif defined(__WATCOMC__) #define DECLSPEC_NORETURN #define DECLARE_STDCALL_P( type ) type __stdcall #endif /* __GNUC__/__WATCOMC__ */ #define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8))) #define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16))) #define LOWORD(l) ((WORD)((DWORD)(l))) #define HIWORD(l) ((WORD)(((DWORD)(l)>>16)&0xFFFF)) #define LOBYTE(w) ((BYTE)(w)) #define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF)) #ifndef __WATCOMC__ #ifndef _export #define _export #endif #ifndef __export #define __export #endif #endif #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 #define UNREFERENCED_PARAMETER(P) {(P)=(P);} #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);} #define DBG_UNREFERENCED_PARAMETER(P) #define DBG_UNREFERENCED_LOCAL_VARIABLE(L) #ifdef __GNUC__ #ifndef NONAMELESSUNION #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) #define _ANONYMOUS_UNION __extension__ #define _ANONYMOUS_STRUCT __extension__ #else #if defined(__cplusplus) #define _ANONYMOUS_UNION __extension__ #endif /* __cplusplus */ #endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */ #endif /* NONAMELESSUNION */ #elif defined(__WATCOMC__) #define _ANONYMOUS_UNION #define _ANONYMOUS_STRUCT #endif /* __GNUC__/__WATCOMC__ */ #ifndef _ANONYMOUS_UNION #define _ANONYMOUS_UNION #define _UNION_NAME(x) x #define DUMMYUNIONNAME u #define DUMMYUNIONNAME2 u2 #define DUMMYUNIONNAME3 u3 #define DUMMYUNIONNAME4 u4 #define DUMMYUNIONNAME5 u5 #define DUMMYUNIONNAME6 u6 #define DUMMYUNIONNAME7 u7 #define DUMMYUNIONNAME8 u8 #else #define _UNION_NAME(x) #define DUMMYUNIONNAME #define DUMMYUNIONNAME2 #define DUMMYUNIONNAME3 #define DUMMYUNIONNAME4 #define DUMMYUNIONNAME5 #define DUMMYUNIONNAME6 #define DUMMYUNIONNAME7 #define DUMMYUNIONNAME8 #endif #ifndef _ANONYMOUS_STRUCT #define _ANONYMOUS_STRUCT #define _STRUCT_NAME(x) x #define DUMMYSTRUCTNAME s #define DUMMYSTRUCTNAME2 s2 #define DUMMYSTRUCTNAME3 s3 #else #define _STRUCT_NAME(x) #define DUMMYSTRUCTNAME #define DUMMYSTRUCTNAME2 #define DUMMYSTRUCTNAME3 #endif #ifndef NO_STRICT #ifndef STRICT #define STRICT 1 #endif #endif /* FIXME: This will make some code compile. The programs will most likely crash when an exception is raised, but at least they will compile. */ #if defined (__GNUC__) && defined (__SEH_NOOP) #define __try #define __except(x) if (0) /* don't execute handler */ #define __finally #define _try __try #define _except __except #define _finally __finally #endif typedef unsigned long DWORD; typedef int WINBOOL,*PWINBOOL,*LPWINBOOL; /* FIXME: Is there a good solution to this? */ #ifndef XFree86Server #ifndef __OBJC__ typedef WINBOOL BOOL; #else #define BOOL WINBOOL #endif typedef unsigned char BYTE; #endif /* ndef XFree86Server */ typedef BOOL *PBOOL,*LPBOOL; typedef unsigned short WORD; typedef float FLOAT; typedef FLOAT *PFLOAT; typedef BYTE *PBYTE,*LPBYTE; typedef int *PINT,*LPINT; typedef WORD *PWORD,*LPWORD; typedef long *LPLONG; typedef DWORD *PDWORD,*LPDWORD; typedef CONST void *PCVOID,*LPCVOID; typedef int INT; typedef unsigned int UINT,*PUINT,*LPUINT; #include typedef UINT_PTR WPARAM; typedef LONG_PTR LPARAM; typedef LONG_PTR LRESULT; #ifndef _HRESULT_DEFINED typedef LONG HRESULT; #define _HRESULT_DEFINED #endif #ifndef XFree86Server typedef WORD ATOM; #endif /* XFree86Server */ typedef HANDLE HGLOBAL; typedef HANDLE HLOCAL; typedef HANDLE GLOBALHANDLE; typedef HANDLE LOCALHANDLE; typedef void *HGDIOBJ; DECLARE_HANDLE(HACCEL); DECLARE_HANDLE(HBITMAP); DECLARE_HANDLE(HBRUSH); DECLARE_HANDLE(HCOLORSPACE); DECLARE_HANDLE(HDC); DECLARE_HANDLE(HGLRC); DECLARE_HANDLE(HDESK); DECLARE_HANDLE(HENHMETAFILE); DECLARE_HANDLE(HFONT); DECLARE_HANDLE(HICON); DECLARE_HANDLE(HKEY); /* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */ /* #if (WINVER >= 0x0500) */ DECLARE_HANDLE(HMONITOR); #define HMONITOR_DECLARED 1 DECLARE_HANDLE(HTERMINAL); DECLARE_HANDLE(HWINEVENTHOOK); /* #endif */ typedef HKEY *PHKEY; DECLARE_HANDLE(HMENU); DECLARE_HANDLE(HMETAFILE); DECLARE_HANDLE(HINSTANCE); typedef HINSTANCE HMODULE; DECLARE_HANDLE(HPALETTE); DECLARE_HANDLE(HPEN); DECLARE_HANDLE(HRGN); DECLARE_HANDLE(HRSRC); DECLARE_HANDLE(HSTR); DECLARE_HANDLE(HTASK); DECLARE_HANDLE(HWND); DECLARE_HANDLE(HWINSTA); DECLARE_HANDLE(HKL); typedef int HFILE; typedef HICON HCURSOR; typedef DWORD COLORREF; typedef int (WINAPI *FARPROC)(); typedef int (WINAPI *NEARPROC)(); typedef int (WINAPI *PROC)(); typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT,*PRECT,*LPRECT; typedef const RECT *LPCRECT; typedef struct tagRECTL { LONG left; LONG top; LONG right; LONG bottom; } RECTL,*PRECTL,*LPRECTL; typedef const RECTL *LPCRECTL; typedef struct tagPOINT { LONG x; LONG y; } POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL; typedef struct tagSIZE { LONG cx; LONG cy; } SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL; typedef struct tagPOINTS { SHORT x; SHORT y; } POINTS,*PPOINTS,*LPPOINTS; #ifdef __cplusplus } #endif #endif