#ifndef __MINIWIN_H__
#define __MINIWIN_H__
#pragma pack(1)
#define FAR
#define CONST const
#define VOID void
#define TRUE 1
#define FALSE 0
#ifndef NULL
#define NULL ((void*)0)
#endif
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define FILE_BEGIN 0
#define FILE_CURRENT 1
#define FILE_END 2
#define GetBValue(rgb) ((BYTE) ((rgb) >> 16))
#define GetGValue(rgb) ((BYTE) (((WORD) (rgb)) >> 8))
#define GetRValue(rgb) ((BYTE) (rgb))
#define RGB(r,g,b) ((DWORD)(((BYTE)(r)|((WORD)(g) << 8))|(((DWORD)(BYTE)(b)) << 16)))
#define HIBYTE(w) ((BYTE) (((WORD) (w) >> 8) & 0xFF))
#define HIWORD(l) ((WORD) (((DWORD) (l) >> 16) & 0xFFFF))
#define LOBYTE(w) (((BYTE) (w)) & 0xFF)
#define LOWORD(l) (((WORD) (l)) & 0xFFFF)
#define MAKELONG(a,b) ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16))
#define MAKEWORD(a,b) ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
#define MAKELPARAM(l,h) ((LPARAM) MAKELONG(l,h))
#define MAKELRESULT(l,h) ((LRESULT) MAKELONG(l,h))
#define MAKEWPARAM(l,h) ((WPARAM) MAKELONG(l,h))
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#define EndType(b) b ; typedef b *P##b ; typedef b CONST *PC##b ; \
typedef b FAR *LP##b ; typedef b CONST FAR *LPC##b
#define SimpleType(a,b) typedef a b ; typedef a *P##b ; typedef a CONST *PC##b ;\
typedef a FAR *LP##b ; typedef a CONST FAR *LPC##b
#define SimpleTypePtr(a,b) typedef a *P##b ; typedef a CONST *PC##b ;\
typedef a FAR *LP##b ; typedef a CONST FAR *LPC##b
SimpleType(char,CHAR);
SimpleType(unsigned char,UCHAR);
SimpleType(signed char,SCHAR);
SimpleType(short,SHORT);
SimpleType(unsigned short,USHORT);
SimpleType(signed short,SSHORT);
SimpleType(long,LONG);
SimpleType(unsigned long,ULONG);
SimpleType(signed long,SLONG);
SimpleType(float,FLOAT);
SimpleType(double,DOUBLE);
SimpleType(int,INT);
SimpleType(unsigned int,UINT);
SimpleType(signed int,SINT);
#ifdef _MSC_VER
SimpleType(__int64,LONGLONG);
SimpleType(unsigned __int64,ULONGLONG);
#else
SimpleType(long long,LONGLONG);
SimpleType(unsigned long long,ULONGLONG);
#endif
SimpleTypePtr(void,VOID);
SimpleTypePtr(CHAR,STR);
SimpleTypePtr(USHORT,WSTR);
#ifndef UNICODE
#define __TEXT(x) L##x
#define TEXT(x) __TEXT(x)
SimpleType(CHAR,TCHAR);
#else
#define __TEXT(x) x
#define TEXT(x) __TEXT(x)
SimpleType(USHORT,TCHAR);
#endif
SimpleTypePtr(TCHAR,TSTR);
#if ( 501 < __midl )
SimpleType(__int3264,INT_PTR);
SimpleType(unsigned __int3264,UINT_PTR);
SimpleType(INT_PTR,LONG_PTR);
SimpleType(UINT_PTR,ULONG_PTR);
#elif defined(_WIN64)
SimpleType(__int64,INT_PTR);
SimpleType(unsigned __int64,UINT_PTR);
SimpleType(INT_PTR,LONG_PTR);
SimpleType(UINT_PTR,ULONG_PTR);
SimpleType(__int64,__int3264);
#elif !defined(__midl) && defined(_X86_) && _MSC_VER >= 1300
SimpleType(__w64 int,INT_PTR);
SimpleType(__w64 unsigned int,UINT_PTR);
SimpleType(__w64 long,LONG_PTR);
SimpleType(__w64 unsigned long,ULONG_PTR);
SimpleType(int,__int3264);
#else
SimpleType(int,INT_PTR);
SimpleType(unsigned int,UINT_PTR);
SimpleType(long,LONG_PTR);
SimpleType(unsigned long,ULONG_PTR);
SimpleType(int,__int3264);
#endif
SimpleType(UCHAR,BYTE);
SimpleType(USHORT,WORD);
SimpleType(ULONG,DWORD);
SimpleType(INT,BOOL);
SimpleType(UCHAR,BOOLEAN);
SimpleType(UINT,WPARAM);
SimpleType(SLONG,LPARAM);
SimpleType(LPVOID,HANDLE);
SimpleType(ULONG,COLORREF);
SimpleType(ULONGLONG,DWORDLONG);
SimpleType(ULONG_PTR,DWORD_PTR);
#define INVALID_HANDLE_VALUE (HANDLE)(0xffffffff)
typedef struct {
LONG x;
LONG y;
} EndType(POINT);
typedef struct {
LONG cx;
LONG cy;
} EndType(SIZE);
typedef struct {
LONG left;
LONG top;
LONG right;
LONG bottom;
} EndType(RECT);
typedef struct {
FLOAT eM11;
FLOAT eM12;
FLOAT eM21;
FLOAT eM22;
FLOAT eDx;
FLOAT eDy;
} EndType(XFORM);
typedef struct {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} EndType(SYSTEMTIME);
typedef struct {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} EndType(FILETIME);
typedef struct {
DWORD bcSize;
WORD bcWidth;
WORD bcHeight;
WORD bcPlanes;
WORD bcBitCount;
} EndType(BITMAPCOREHEADER);
typedef struct {
BYTE rgbtBlue;
BYTE rgbtGreen;
BYTE rgbtRed;
} EndType(RGBTRIPLE);
typedef struct {
BITMAPCOREHEADER bmciHeader;
RGBTRIPLE bmciColors[1];
} EndType(BITMAPCOREINFO);
typedef struct {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} EndType(BITMAPFILEHEADER);
typedef struct {
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} EndType(BITMAPINFOHEADER);
#define BI_RGB 0
#define BI_RLE8 1
#define BI_RLE4 2
#define BI_BITFIELDS 3
typedef struct {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} EndType(RGBQUAD);
typedef struct {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} EndType(BITMAPINFO);
#define R2_BLACK 1
#define R2_COPYPEN 13
#define R2_MASKNOTPEN 3
#define R2_MASKPEN 9
#define R2_MASKPENNOT 5
#define R2_MERGENOTPEN 12
#define R2_MERGEPEN 15
#define R2_MERGEPENNOT 14
#define R2_NOP 11
#define R2_NOT 6
#define R2_NOTCOPYPEN 4
#define R2_NOTMASKPEN 8
#define R2_NOTMERGEPEN 2
#define R2_NOTXORPEN 10
#define R2_WHITE 16
#define R2_XORPEN 7
#define HEAP_ZERO_MEMORY 8
HANDLE WINAPI GetProcessHeap(void);
LPVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
LPVOID WINAPI HeapReAlloc(HANDLE,DWORD,LPVOID,DWORD);
BOOL WINAPI HeapFree(HANDLE,DWORD,LPVOID);
#pragma pack()
#endif