Release 960309
[wine/multimedia.git] / include / wintypes.h
blob01df224faa6533fd65b87ae3dda8320971869588
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 typedef unsigned char CHAR;
28 /* Some systems might have wchar_t, but we really need 16 bit characters */
29 typedef unsigned short WCHAR;
31 #ifdef WINELIB32
32 typedef int INT;
33 typedef unsigned int UINT;
34 typedef short SHORT;
35 typedef LONG WPARAM;
36 typedef void* HANDLE;
37 typedef void* NPVOID;
38 typedef void* SEGPTR;
39 #define UIFMT "%u"
40 #define NPFMT "%p"
41 #define SPFMT "%p"
43 /* Should probably eventually be unsigned short, but not now */
44 typedef char TCHAR;
45 #else
46 typedef short INT;
47 typedef unsigned short UINT;
48 typedef UINT WPARAM;
49 typedef WORD HANDLE;
50 typedef WORD NPVOID;
51 typedef DWORD SEGPTR;
52 #define UIFMT "%hu"
53 #define NPFMT "%04x"
54 #define SPFMT "%08lx"
56 /* TCHAR is just char in Win16 */
57 typedef char TCHAR;
58 #endif
59 typedef LONG LPARAM;
60 typedef LONG LRESULT;
61 typedef INT HFILE;
62 typedef DWORD HHOOK;
63 typedef char *LPSTR;
64 typedef const char *LPCSTR;
65 typedef TCHAR *LPTSTR;
66 typedef const TCHAR *LPCTSTR;
67 typedef WCHAR *LPWSTR;
68 typedef const WCHAR *LPCWSTR;
69 typedef char *NPSTR;
70 typedef INT *LPINT;
71 typedef UINT *LPUINT;
72 typedef WORD *LPWORD;
73 typedef DWORD *LPDWORD;
74 typedef LONG *LPLONG;
75 typedef void *LPVOID;
76 typedef const void *LPCVOID;
77 typedef WORD CATCHBUF[9];
78 typedef WORD *LPCATCHBUF;
80 #define DECLARE_HANDLE(a) typedef HANDLE a;
82 DECLARE_HANDLE(HBITMAP);
83 DECLARE_HANDLE(HBRUSH);
84 DECLARE_HANDLE(HCLASS);
85 DECLARE_HANDLE(HCURSOR);
86 DECLARE_HANDLE(HDC);
87 DECLARE_HANDLE(HDROP);
88 DECLARE_HANDLE(HDRVR);
89 DECLARE_HANDLE(HDWP);
90 DECLARE_HANDLE(HFONT);
91 DECLARE_HANDLE(HGDIOBJ);
92 DECLARE_HANDLE(HGLOBAL);
93 DECLARE_HANDLE(HICON);
94 DECLARE_HANDLE(HINSTANCE);
95 DECLARE_HANDLE(HLOCAL);
96 DECLARE_HANDLE(HMENU);
97 DECLARE_HANDLE(HMETAFILE);
98 DECLARE_HANDLE(HMODULE);
99 DECLARE_HANDLE(HPALETTE);
100 DECLARE_HANDLE(HPEN);
101 DECLARE_HANDLE(HQUEUE);
102 DECLARE_HANDLE(HRGN);
103 DECLARE_HANDLE(HRSRC);
104 DECLARE_HANDLE(HTASK);
105 DECLARE_HANDLE(HWND);
106 DECLARE_HANDLE(LOCALHANDLE);
107 #ifdef WINELIB32
108 DECLARE_HANDLE(HKEY);
109 #else
110 typedef DWORD HKEY;
111 #endif
112 typedef HKEY* LPHKEY;
113 typedef HGLOBAL GLOBALHANDLE;
115 #ifdef WINELIB
116 typedef long (*FARPROC)();
117 typedef LRESULT (*WNDPROC)(HWND,UINT,WPARAM,LPARAM);
118 typedef LRESULT (*WNDENUMPROC)(HWND,LPARAM);
119 /*typedef int (*FONTENUMPROC)(const LOGFONT*,const TEXTMETRIC*,DWORD,LPARAM);*/
120 typedef int (*FONTENUMPROC)(const void*,const void*,DWORD,LPARAM);
121 typedef int (*GOBJENUMPROC)(LPVOID,LPARAM);
122 typedef BOOL (*PROPENUMPROC)(HWND,LPCTSTR,HANDLE);
123 /*typedef int (*MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);*/
124 typedef int (*MFENUMPROC)(HDC,void*,void*,int,LPARAM);
125 #else
126 typedef SEGPTR FARPROC;
127 typedef SEGPTR WNDPROC;
128 typedef SEGPTR WNDENUMPROC;
129 typedef SEGPTR FONTENUMPROC;
130 typedef SEGPTR GOBJENUMPROC;
131 typedef SEGPTR PROPENUMPROC;
132 typedef SEGPTR MFENUMPROC;
133 #endif
134 typedef FARPROC DLGPROC;
135 typedef FARPROC HOOKPROC;
137 #define TRUE 1
138 #define FALSE 0
139 #define CW_USEDEFAULT ((INT)0x8000)
140 #define FAR
141 #define _far
142 #define NEAR
143 #define _near
144 #define PASCAL
145 #define _pascal
146 #define __export
147 #define VOID void
148 #define WINAPI PASCAL
149 #define CALLBACK PASCAL
151 #undef NULL
152 #define NULL 0
154 #ifdef WINELIB
155 #define WINE_PACKED
156 #else
157 #define WINE_PACKED __attribute__ ((packed))
158 #endif
160 #define LOBYTE(w) ((BYTE)(UINT)(w))
161 #define HIBYTE(w) ((BYTE)((UINT)(w) >> 8))
163 #define LOWORD(l) ((WORD)(DWORD)(l))
164 #define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
166 #define SLOWORD(l) ((INT)(LONG)(l))
167 #define SHIWORD(l) ((INT)((LONG)(l) >> 16))
169 #define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \
170 (((DWORD)((WORD)(high))) << 16)))
172 #define SELECTOROF(ptr) (HIWORD(ptr))
173 #define OFFSETOF(ptr) (LOWORD(ptr))
175 #ifndef MAX
176 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
177 #endif
179 #ifndef MIN
180 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
181 #endif
183 #ifndef DONT_DEFINE_min_AND_max
184 #ifndef min
185 #define min(a,b) MIN(a,b)
186 #endif
187 #ifndef max
188 #define max(a,b) MAX(a,b)
189 #endif
190 #endif
192 #endif /* __WINE_WINTYPES_H */