Release 951226
[wine.git] / include / wintypes.h
blob30ecb94bc7b7554bfccccca5ef30ab2e0cebfc5c
1 #ifndef __WINE_WINTYPES_H
2 #define __WINE_WINTYPES_H
4 #ifdef WINELIB
5 # ifdef WINELIB16
6 # undef WINELIB32
7 # else
8 # ifndef WINELIB32
9 # define WINELIB32
10 # endif
11 # endif
12 #else
13 # ifdef WINELIB32
14 # undef WINELIB16
15 # define WINELIB
16 # endif
17 # ifdef WINELIB16
18 # define WINELIB
19 # endif
20 #endif
22 typedef unsigned short WORD;
23 typedef unsigned long DWORD;
24 typedef unsigned short BOOL;
25 typedef unsigned char BYTE;
26 typedef long LONG;
27 #ifdef WINELIB32
28 typedef int INT;
29 typedef unsigned int UINT;
30 typedef short SHORT;
31 typedef LONG WPARAM;
32 typedef void* HANDLE;
33 typedef void* NPVOID;
34 typedef void* SEGPTR;
35 #define UIFMT "%u"
36 #define NPFMT "%p"
37 #define SPFMT "%p"
38 #else
39 typedef short INT;
40 typedef unsigned short UINT;
41 typedef UINT WPARAM;
42 typedef WORD HANDLE;
43 typedef WORD NPVOID;
44 typedef DWORD SEGPTR;
45 #define UIFMT "%hu"
46 #define NPFMT "%04x"
47 #define SPFMT "%08lx"
48 #endif
49 typedef LONG LPARAM;
50 typedef LONG LRESULT;
51 typedef DWORD HHOOK;
52 typedef char *LPSTR;
53 typedef const char *LPCSTR;
54 typedef LPCSTR LPCTSTR;
55 typedef char *NPSTR;
56 typedef INT *LPINT;
57 typedef UINT *LPUINT;
58 typedef WORD *LPWORD;
59 typedef DWORD *LPDWORD;
60 typedef LONG *LPLONG;
61 typedef void *LPVOID;
62 typedef const void *LPCVOID;
63 typedef WORD CATCHBUF[9];
64 typedef WORD *LPCATCHBUF;
66 #define DECLARE_HANDLE(a) typedef HANDLE a;
68 DECLARE_HANDLE(HBITMAP);
69 DECLARE_HANDLE(HBRUSH);
70 DECLARE_HANDLE(HCLASS);
71 DECLARE_HANDLE(HCURSOR);
72 DECLARE_HANDLE(HDC);
73 DECLARE_HANDLE(HDROP);
74 DECLARE_HANDLE(HDRVR);
75 DECLARE_HANDLE(HDWP);
76 DECLARE_HANDLE(HFONT);
77 DECLARE_HANDLE(HGLOBAL);
78 DECLARE_HANDLE(HICON);
79 DECLARE_HANDLE(HINSTANCE);
80 DECLARE_HANDLE(HLOCAL);
81 DECLARE_HANDLE(HMENU);
82 DECLARE_HANDLE(HMETAFILE);
83 DECLARE_HANDLE(HMODULE);
84 DECLARE_HANDLE(HPALETTE);
85 DECLARE_HANDLE(HPEN);
86 DECLARE_HANDLE(HQUEUE);
87 DECLARE_HANDLE(HRGN);
88 DECLARE_HANDLE(HRSRC);
89 DECLARE_HANDLE(HTASK);
90 DECLARE_HANDLE(HWND);
91 DECLARE_HANDLE(LOCALHANDLE);
93 #ifdef WINELIB
94 typedef long (*FARPROC)();
95 typedef LRESULT (*WNDPROC)(HWND,UINT,WPARAM,LPARAM);
96 #else
97 typedef SEGPTR FARPROC;
98 typedef SEGPTR WNDPROC;
99 #endif
100 typedef FARPROC DLGPROC;
101 typedef FARPROC HOOKPROC;
103 #define TRUE 1
104 #define FALSE 0
105 #define CW_USEDEFAULT ((INT)0x8000)
106 #define FAR
107 #define NEAR
108 #define PASCAL
109 #define VOID void
110 #define WINAPI PASCAL
111 #define CALLBACK PASCAL
113 #undef NULL
114 #define NULL 0
116 #ifdef WINELIB
117 #define WINE_PACKED
118 #else
119 #define WINE_PACKED __attribute__ ((packed))
120 #endif
122 #define LOBYTE(w) ((BYTE)(UINT)(w))
123 #define HIBYTE(w) ((BYTE)((UINT)(w) >> 8))
125 #define LOWORD(l) ((WORD)(DWORD)(l))
126 #define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
128 #define SLOWORD(l) ((INT)(LONG)(l))
129 #define SHIWORD(l) ((INT)((LONG)(l) >> 16))
131 #define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \
132 (((DWORD)((WORD)(high))) << 16)))
134 #define SELECTOROF(ptr) (HIWORD(ptr))
135 #define OFFSETOF(ptr) (LOWORD(ptr))
137 #ifndef MAX
138 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
139 #endif
141 #ifndef MIN
142 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
143 #endif
145 #ifndef DONT_DEFINE_min_AND_max
146 #ifndef min
147 #define min(a,b) MIN(a,b)
148 #endif
149 #ifndef max
150 #define max(a,b) MAX(a,b)
151 #endif
152 #endif
154 #endif /* __WINE_WINTYPES_H */