Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Basic types definitions |
| 3 | * |
| 4 | * Copyright 1996 Alexandre Julliard |
Michael Veksler | 17822f4 | 1999-02-09 15:46:25 +0000 | [diff] [blame] | 5 | */ |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 6 | |
| 7 | #ifndef __WINE_WINDEF_H |
| 8 | #define __WINE_WINDEF_H |
| 9 | |
| 10 | #ifdef __WINE__ |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 11 | # undef UNICODE |
| 12 | #endif /* __WINE__ */ |
| 13 | |
Francois Gouget | eec9cbb | 2000-10-13 17:10:34 +0000 | [diff] [blame] | 14 | #define WINVER 0x0500 |
| 15 | |
François Gouget | 7d64676 | 2000-12-15 21:31:03 +0000 | [diff] [blame] | 16 | #include "winnt.h" |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 17 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 18 | |
François Gouget | 640ec8e | 2000-12-19 04:51:10 +0000 | [diff] [blame] | 19 | #ifdef __cplusplus |
| 20 | extern "C" { |
| 21 | #endif |
| 22 | |
| 23 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 24 | /* Macros to map Winelib names to the correct implementation name */ |
| 25 | /* depending on __WINE__ and UNICODE macros. */ |
| 26 | /* Note that Winelib is purely Win32. */ |
| 27 | |
| 28 | #ifdef __WINE__ |
Steven Elliott | 9dd9743 | 1999-12-25 22:45:57 +0000 | [diff] [blame] | 29 | # define WINELIB_NAME_AW(func) \ |
| 30 | func##_must_be_suffixed_with_W_or_A_in_this_context \ |
| 31 | func##_must_be_suffixed_with_W_or_A_in_this_context |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 32 | #else /* __WINE__ */ |
| 33 | # ifdef UNICODE |
| 34 | # define WINELIB_NAME_AW(func) func##W |
| 35 | # else |
| 36 | # define WINELIB_NAME_AW(func) func##A |
| 37 | # endif /* UNICODE */ |
| 38 | #endif /* __WINE__ */ |
| 39 | |
| 40 | #ifdef __WINE__ |
| 41 | # define DECL_WINELIB_TYPE_AW(type) /* nothing */ |
| 42 | #else /* __WINE__ */ |
| 43 | # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; |
| 44 | #endif /* __WINE__ */ |
| 45 | |
Adrian Thurston | 4eb5edf | 1999-04-25 11:05:30 +0000 | [diff] [blame] | 46 | |
| 47 | /* Integer types. These are the same for emulator and library. */ |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 48 | typedef UINT WPARAM; |
| 49 | typedef LONG LPARAM; |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 50 | typedef LONG LRESULT; |
| 51 | typedef WORD ATOM; |
| 52 | typedef WORD CATCHBUF[9]; |
| 53 | typedef WORD *LPCATCHBUF; |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 54 | typedef HANDLE HHOOK; |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 55 | typedef HANDLE HMONITOR; |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 56 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 57 | /* Handle types that exist both in Win16 and Win32. */ |
| 58 | |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 59 | DECLARE_OLD_HANDLE(HACMDRIVERID); |
| 60 | DECLARE_OLD_HANDLE(HACMDRIVER); |
| 61 | DECLARE_OLD_HANDLE(HACMOBJ); |
| 62 | DECLARE_OLD_HANDLE(HACMSTREAM); |
Jiuming Luo | 2840d1b | 1999-03-28 12:39:18 +0000 | [diff] [blame] | 63 | |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 64 | DECLARE_OLD_HANDLE(HACCEL); |
| 65 | DECLARE_OLD_HANDLE(HBITMAP); |
| 66 | DECLARE_OLD_HANDLE(HBRUSH); |
François Gouget | ca08ede | 2000-12-29 03:40:55 +0000 | [diff] [blame] | 67 | DECLARE_HANDLE(HCOLORSPACE); |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 68 | DECLARE_OLD_HANDLE(HDC); |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 69 | DECLARE_OLD_HANDLE(HDRVR); |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 70 | DECLARE_OLD_HANDLE(HENHMETAFILE); |
Francois Gouget | 50bcd1a | 2000-10-13 23:11:05 +0000 | [diff] [blame] | 71 | typedef int HFILE; |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 72 | DECLARE_OLD_HANDLE(HFONT); |
| 73 | DECLARE_OLD_HANDLE(HICON); |
| 74 | DECLARE_OLD_HANDLE(HINSTANCE); |
| 75 | DECLARE_OLD_HANDLE(HKEY); |
| 76 | DECLARE_OLD_HANDLE(HMENU); |
| 77 | DECLARE_OLD_HANDLE(HMETAFILE); |
| 78 | DECLARE_OLD_HANDLE(HMIDI); |
| 79 | DECLARE_OLD_HANDLE(HMIDIIN); |
| 80 | DECLARE_OLD_HANDLE(HMIDIOUT); |
| 81 | DECLARE_OLD_HANDLE(HMIDISTRM); |
| 82 | DECLARE_OLD_HANDLE(HMIXER); |
| 83 | DECLARE_OLD_HANDLE(HMIXEROBJ); |
| 84 | DECLARE_OLD_HANDLE(HMMIO); |
| 85 | DECLARE_OLD_HANDLE(HPALETTE); |
| 86 | DECLARE_OLD_HANDLE(HPEN); |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 87 | DECLARE_OLD_HANDLE(HRGN); |
| 88 | DECLARE_OLD_HANDLE(HRSRC); |
| 89 | DECLARE_OLD_HANDLE(HTASK); |
| 90 | DECLARE_OLD_HANDLE(HWAVE); |
| 91 | DECLARE_OLD_HANDLE(HWAVEIN); |
| 92 | DECLARE_OLD_HANDLE(HWAVEOUT); |
François Gouget | 54300e5 | 2001-01-09 20:56:06 +0000 | [diff] [blame] | 93 | DECLARE_HANDLE(HWINSTA); |
François Gouget | d6515df | 2001-01-03 21:39:33 +0000 | [diff] [blame] | 94 | DECLARE_HANDLE(HDESK); |
François Gouget | 4543703 | 2000-12-26 00:07:25 +0000 | [diff] [blame] | 95 | DECLARE_OLD_HANDLE(HWND); |
| 96 | DECLARE_OLD_HANDLE(HKL); |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 97 | |
Adrian Thurston | 4eb5edf | 1999-04-25 11:05:30 +0000 | [diff] [blame] | 98 | /* Handle types that must remain interchangeable even with strict on */ |
| 99 | |
Adrian Thurston | 4eb5edf | 1999-04-25 11:05:30 +0000 | [diff] [blame] | 100 | typedef HINSTANCE HMODULE; |
Adrian Thurston | 4eb5edf | 1999-04-25 11:05:30 +0000 | [diff] [blame] | 101 | typedef HANDLE HGDIOBJ; |
| 102 | typedef HANDLE HGLOBAL; |
| 103 | typedef HANDLE HLOCAL; |
Francois Gouget | abdb034 | 2000-03-19 14:21:38 +0000 | [diff] [blame] | 104 | typedef HANDLE GLOBALHANDLE; |
| 105 | typedef HANDLE LOCALHANDLE; |
Francois Gouget | 8c9d3e4 | 2000-11-10 22:32:45 +0000 | [diff] [blame] | 106 | typedef HICON HCURSOR; |
Adrian Thurston | 4eb5edf | 1999-04-25 11:05:30 +0000 | [diff] [blame] | 107 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 108 | /* Callback function pointers types */ |
| 109 | |
François Gouget | f53b0e8 | 2001-01-04 19:32:22 +0000 | [diff] [blame] | 110 | typedef INT CALLBACK (*FARPROC)(); |
Francois Gouget | a537bec | 2000-06-11 20:07:08 +0000 | [diff] [blame] | 111 | typedef INT CALLBACK (*PROC)(); |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 112 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 113 | |
| 114 | /* Macros to split words and longs. */ |
| 115 | |
| 116 | #define LOBYTE(w) ((BYTE)(WORD)(w)) |
| 117 | #define HIBYTE(w) ((BYTE)((WORD)(w) >> 8)) |
| 118 | |
| 119 | #define LOWORD(l) ((WORD)(DWORD)(l)) |
| 120 | #define HIWORD(l) ((WORD)((DWORD)(l) >> 16)) |
| 121 | |
Alexandre Julliard | 83f52d1 | 2000-09-26 22:20:14 +0000 | [diff] [blame] | 122 | #define SLOWORD(l) ((SHORT)(LONG)(l)) |
| 123 | #define SHIWORD(l) ((SHORT)((LONG)(l) >> 16)) |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 124 | |
| 125 | #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8)) |
| 126 | #define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16))) |
| 127 | #define MAKELPARAM(low,high) ((LPARAM)MAKELONG(low,high)) |
| 128 | #define MAKEWPARAM(low,high) ((WPARAM)MAKELONG(low,high)) |
| 129 | #define MAKELRESULT(low,high) ((LRESULT)MAKELONG(low,high)) |
| 130 | #define MAKEINTATOM(atom) ((LPCSTR)MAKELONG((atom),0)) |
| 131 | |
| 132 | #define SELECTOROF(ptr) (HIWORD(ptr)) |
| 133 | #define OFFSETOF(ptr) (LOWORD(ptr)) |
| 134 | |
Alexandre Julliard | b375678 | 1999-08-01 12:15:12 +0000 | [diff] [blame] | 135 | #ifdef __WINE__ |
| 136 | /* macros to set parts of a DWORD (not in the Windows API) */ |
| 137 | #define SET_LOWORD(dw,val) ((dw) = ((dw) & 0xffff0000) | LOWORD(val)) |
| 138 | #define SET_LOBYTE(dw,val) ((dw) = ((dw) & 0xffffff00) | LOBYTE(val)) |
Francois Gouget | 52b2878 | 2000-09-22 22:18:41 +0000 | [diff] [blame] | 139 | #define SET_HIBYTE(dw,val) ((dw) = ((dw) & 0xffff00ff) | (LOBYTE(val) << 8)) |
Alexandre Julliard | b375678 | 1999-08-01 12:15:12 +0000 | [diff] [blame] | 140 | #define ADD_LOWORD(dw,val) ((dw) = ((dw) & 0xffff0000) | LOWORD((DWORD)(dw)+(val))) |
| 141 | #endif |
| 142 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 143 | |
Francois Gouget | 6d77d3a | 2000-03-25 21:44:35 +0000 | [diff] [blame] | 144 | /* min and max macros */ |
| 145 | #define __max(a,b) (((a) > (b)) ? (a) : (b)) |
| 146 | #define __min(a,b) (((a) < (b)) ? (a) : (b)) |
Howard Abrams | 1327748 | 1999-07-10 13:16:29 +0000 | [diff] [blame] | 147 | #ifndef max |
Francois Gouget | 6d77d3a | 2000-03-25 21:44:35 +0000 | [diff] [blame] | 148 | #define max(a,b) (((a) > (b)) ? (a) : (b)) |
Howard Abrams | 1327748 | 1999-07-10 13:16:29 +0000 | [diff] [blame] | 149 | #endif |
| 150 | #ifndef min |
Francois Gouget | 6d77d3a | 2000-03-25 21:44:35 +0000 | [diff] [blame] | 151 | #define min(a,b) (((a) < (b)) ? (a) : (b)) |
Howard Abrams | 1327748 | 1999-07-10 13:16:29 +0000 | [diff] [blame] | 152 | #endif |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 153 | |
| 154 | #define _MAX_PATH 260 |
| 155 | #define MAX_PATH 260 |
| 156 | #define _MAX_DRIVE 3 |
| 157 | #define _MAX_DIR 256 |
| 158 | #define _MAX_FNAME 255 |
| 159 | #define _MAX_EXT 256 |
Michael Veksler | 17822f4 | 1999-02-09 15:46:25 +0000 | [diff] [blame] | 160 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 161 | #define HFILE_ERROR ((HFILE)-1) |
Michael Veksler | 17822f4 | 1999-02-09 15:46:25 +0000 | [diff] [blame] | 162 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 163 | /* The SIZE structure */ |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 164 | typedef struct tagSIZE |
| 165 | { |
Peter Hunnisett | 565b008 | 2000-09-19 02:43:00 +0000 | [diff] [blame] | 166 | LONG cx; |
| 167 | LONG cy; |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 168 | } SIZE, *PSIZE, *LPSIZE; |
Michael Veksler | 17822f4 | 1999-02-09 15:46:25 +0000 | [diff] [blame] | 169 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 170 | typedef SIZE SIZEL, *PSIZEL, *LPSIZEL; |
| 171 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 172 | /* The POINT structure */ |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 173 | typedef struct tagPOINT |
| 174 | { |
| 175 | LONG x; |
| 176 | LONG y; |
| 177 | } POINT, *PPOINT, *LPPOINT; |
| 178 | |
Francis Beaudet | 3f7ad7a | 1999-02-13 09:13:49 +0000 | [diff] [blame] | 179 | typedef struct _POINTL |
| 180 | { |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 181 | LONG x; |
| 182 | LONG y; |
Francis Beaudet | 3f7ad7a | 1999-02-13 09:13:49 +0000 | [diff] [blame] | 183 | } POINTL; |
| 184 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 185 | /* The POINTS structure */ |
| 186 | |
| 187 | typedef struct tagPOINTS |
| 188 | { |
Alexandre Julliard | 83f52d1 | 2000-09-26 22:20:14 +0000 | [diff] [blame] | 189 | SHORT x; |
| 190 | SHORT y; |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 191 | } POINTS, *PPOINTS, *LPPOINTS; |
| 192 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 193 | /* The RECT structure */ |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 194 | typedef struct tagRECT |
| 195 | { |
| 196 | INT left; |
| 197 | INT top; |
| 198 | INT right; |
| 199 | INT bottom; |
| 200 | } RECT, *PRECT, *LPRECT; |
| 201 | typedef const RECT *LPCRECT; |
| 202 | |
| 203 | |
| 204 | typedef struct tagRECTL |
| 205 | { |
| 206 | LONG left; |
| 207 | LONG top; |
| 208 | LONG right; |
| 209 | LONG bottom; |
| 210 | } RECTL, *PRECTL, *LPRECTL; |
| 211 | |
| 212 | typedef const RECTL *LPCRECTL; |
| 213 | |
Jim Aston | 2e1cafa | 1999-03-14 16:35:05 +0000 | [diff] [blame] | 214 | #ifdef __cplusplus |
| 215 | } |
| 216 | #endif |
| 217 | |
Jiuming Luo | 2840d1b | 1999-03-28 12:39:18 +0000 | [diff] [blame] | 218 | #endif /* __WINE_WINDEF_H */ |