1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the w64 mingw-runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _WINDEF_ 7 #define _WINDEF_ 8 #pragma once 9 10 #define _WINDEF_H // wine ... 11 12 #ifdef _MSC_VER 13 #pragma warning(push) 14 #pragma warning(disable:4255) 15 #endif 16 17 #if defined(__LP64__) || (!defined(_M_AMD64) && defined(__WINESRC__)) 18 #if !defined(__ROS_LONG64__) 19 #define __ROS_LONG64__ 20 #endif 21 #endif 22 23 #ifndef NO_STRICT 24 #ifndef STRICT 25 #define STRICT 1 26 #endif 27 #endif 28 29 #ifndef WIN32 30 #define WIN32 31 #endif 32 33 #if defined(_MAC) && !defined(_WIN32) 34 #define _WIN32 35 #endif 36 37 #ifdef __cplusplus 38 extern "C" { 39 #endif 40 41 #ifndef WINVER 42 #define WINVER 0x0502 43 #endif 44 45 #ifndef BASETYPES 46 #define BASETYPES 47 #ifndef __ROS_LONG64__ 48 typedef unsigned long ULONG; 49 #else 50 typedef unsigned int ULONG; 51 #endif 52 typedef ULONG *PULONG; 53 typedef unsigned short USHORT; 54 typedef USHORT *PUSHORT; 55 typedef unsigned char UCHAR; 56 typedef UCHAR *PUCHAR; 57 typedef char *PSZ; 58 typedef int INT; 59 #endif /* BASETYPES */ 60 61 #undef MAX_PATH 62 #define MAX_PATH 260 63 64 #ifndef NULL 65 #ifdef __cplusplus 66 #ifndef _WIN64 67 #define NULL 0 68 #else 69 #define NULL 0LL 70 #endif /* W64 */ 71 #else 72 #define NULL ((void *)0) 73 #endif 74 #endif 75 76 #ifndef FALSE 77 #define FALSE 0 78 #endif 79 80 #ifndef TRUE 81 #define TRUE 1 82 #endif 83 84 #ifndef _NO_W32_PSEUDO_MODIFIERS 85 #ifndef IN 86 #define IN 87 #endif 88 #ifndef OUT 89 #define OUT 90 #endif 91 #ifndef OPTIONAL 92 #define OPTIONAL 93 #endif 94 #endif 95 96 #ifdef __GNUC__ 97 #define PACKED __attribute__((packed)) 98 #ifndef __declspec 99 #define __declspec(e) __attribute__((e)) 100 #endif 101 #ifndef _declspec 102 #define _declspec(e) __attribute__((e)) 103 #endif 104 #elif defined(__WATCOMC__) 105 #define PACKED 106 #else 107 #define PACKED 108 #endif 109 110 #undef far 111 #undef near 112 #undef pascal 113 114 #define far 115 #define near 116 #define pascal __stdcall 117 118 #define cdecl 119 #ifndef CDECL 120 #define CDECL 121 #endif 122 123 #if !defined(__x86_64__) //defined(_STDCALL_SUPPORTED) 124 #ifndef CALLBACK 125 #define CALLBACK __stdcall 126 #endif 127 #ifndef WINAPI 128 #define WINAPI __stdcall 129 #endif 130 #define WINAPIV __cdecl 131 #define APIENTRY WINAPI 132 #define APIPRIVATE WINAPI 133 #define PASCAL WINAPI 134 #else 135 #define CALLBACK 136 #define WINAPI 137 #define WINAPIV 138 #define APIENTRY WINAPI 139 #define APIPRIVATE 140 #define PASCAL pascal 141 #endif 142 143 #undef FAR 144 #undef NEAR 145 #define FAR 146 #define NEAR 147 148 #ifndef CONST 149 #define CONST const 150 #endif 151 152 #ifndef _DEF_WINBOOL_ 153 #define _DEF_WINBOOL_ 154 typedef int WINBOOL; 155 #pragma push_macro("BOOL") 156 #undef BOOL 157 #if !defined(__OBJC__) && !defined(__OBJC_BOOL) && !defined(__objc_INCLUDE_GNU) 158 typedef int BOOL; 159 #endif 160 #define BOOL WINBOOL 161 typedef BOOL *PBOOL; 162 typedef BOOL *LPBOOL; 163 #pragma pop_macro("BOOL") 164 #endif /* _DEF_WINBOOL_ */ 165 166 typedef unsigned char BYTE; 167 typedef unsigned short WORD; 168 #ifndef __ROS_LONG64__ 169 typedef unsigned long DWORD; 170 #else 171 typedef unsigned int DWORD; 172 #endif 173 typedef float FLOAT; 174 typedef FLOAT *PFLOAT; 175 typedef BYTE *PBYTE; 176 typedef BYTE *LPBYTE; 177 typedef int *PINT; 178 typedef int *LPINT; 179 typedef WORD *PWORD; 180 typedef WORD *LPWORD; 181 #ifndef __ROS_LONG64__ 182 typedef long *LPLONG; 183 #else 184 typedef int *LPLONG; 185 #endif 186 typedef DWORD *PDWORD; 187 typedef DWORD *LPDWORD; 188 typedef void *LPVOID; 189 #ifndef _LPCVOID_DEFINED 190 #define _LPCVOID_DEFINED 191 typedef CONST void *LPCVOID; 192 #endif 193 //typedef int INT; 194 typedef unsigned int UINT; 195 typedef unsigned int *PUINT; 196 typedef unsigned int *LPUINT; 197 198 199 200 201 #ifndef NT_INCLUDED 202 #include <winnt.h> 203 #endif 204 205 //#include <specstrings.h> 206 207 typedef UINT_PTR WPARAM; 208 typedef LONG_PTR LPARAM; 209 typedef LONG_PTR LRESULT; 210 #ifndef _HRESULT_DEFINED 211 typedef LONG HRESULT; 212 #define _HRESULT_DEFINED 213 #endif 214 215 #ifndef NOMINMAX 216 #ifndef max 217 #define max(a, b) (((a) > (b)) ? (a) : (b)) 218 #endif 219 #ifndef min 220 #define min(a, b) (((a) < (b)) ? (a) : (b)) 221 #endif 222 #endif 223 224 #define MAKEWORD(bLow, bHigh) ((WORD)(((BYTE)((DWORD_PTR)(bLow) & 0xff )) | (((WORD)((BYTE)((DWORD_PTR)(bHigh) & 0xff))) << 8 ))) 225 #define MAKELONG(wLow, wHigh) ((LONG)(((WORD)((DWORD_PTR)(wLow) & 0xffff)) | (((DWORD)((WORD)((DWORD_PTR)(wHigh) & 0xffff))) << 16))) 226 #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff)) 227 #define HIWORD(l) ((WORD)(((DWORD_PTR)(l) >> 16) & 0xffff)) 228 #define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff)) 229 #define HIBYTE(w) ((BYTE)(((DWORD_PTR)(w) >> 8) & 0xff)) 230 231 #ifndef WIN_INTERNAL 232 DECLARE_HANDLE (HWND); 233 //DECLARE_HANDLE (HHOOK); 234 #ifdef WINABLE 235 DECLARE_HANDLE (HEVENT); 236 #endif 237 #endif 238 239 typedef WORD ATOM; 240 241 typedef HANDLE *SPHANDLE; 242 typedef HANDLE *LPHANDLE; 243 typedef HANDLE HGLOBAL; 244 typedef HANDLE HLOCAL; 245 typedef HANDLE GLOBALHANDLE; 246 typedef HANDLE LOCALHANDLE; 247 248 typedef INT_PTR (WINAPI *FARPROC)(); 249 typedef INT_PTR (WINAPI *NEARPROC)(); 250 typedef INT_PTR (WINAPI *PROC)(); 251 252 typedef void *HGDIOBJ; 253 254 DECLARE_HANDLE(HKEY); 255 typedef HKEY *PHKEY; 256 257 DECLARE_HANDLE(HACCEL); 258 DECLARE_HANDLE(HBITMAP); 259 DECLARE_HANDLE(HBRUSH); 260 DECLARE_HANDLE(HCOLORSPACE); 261 DECLARE_HANDLE(HDC); 262 DECLARE_HANDLE(HGLRC); 263 DECLARE_HANDLE(HDESK); 264 DECLARE_HANDLE(HENHMETAFILE); 265 DECLARE_HANDLE(HFONT); 266 DECLARE_HANDLE(HICON); 267 DECLARE_HANDLE(HMENU); 268 DECLARE_HANDLE(HMETAFILE); 269 DECLARE_HANDLE(HINSTANCE); 270 typedef HINSTANCE HMODULE; 271 DECLARE_HANDLE(HPALETTE); 272 DECLARE_HANDLE(HPEN); 273 DECLARE_HANDLE(HRGN); 274 DECLARE_HANDLE(HRSRC); 275 DECLARE_HANDLE(HSTR); 276 DECLARE_HANDLE(HTASK); 277 DECLARE_HANDLE(HWINSTA); 278 DECLARE_HANDLE(HKL); 279 DECLARE_HANDLE(HMONITOR); 280 DECLARE_HANDLE(HWINEVENTHOOK); 281 DECLARE_HANDLE(HUMPD); 282 283 DECLARE_HANDLE(DPI_AWARENESS_CONTEXT); 284 285 typedef enum DPI_AWARENESS { 286 DPI_AWARENESS_INVALID = -1, 287 DPI_AWARENESS_UNAWARE = 0, 288 DPI_AWARENESS_SYSTEM_AWARE, 289 DPI_AWARENESS_PER_MONITOR_AWARE 290 } DPI_AWARENESS; 291 292 #define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1) 293 #define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2) 294 #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3) 295 #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4) 296 #define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5) 297 298 typedef int HFILE; 299 typedef HICON HCURSOR; 300 typedef DWORD COLORREF; 301 typedef DWORD *LPCOLORREF; 302 303 #define HFILE_ERROR ((HFILE)-1) 304 305 typedef struct tagRECT { 306 LONG left; 307 LONG top; 308 LONG right; 309 LONG bottom; 310 } RECT,*PRECT,*NPRECT,*LPRECT; 311 312 typedef const RECT *LPCRECT; 313 314 typedef struct _RECTL { 315 LONG left; 316 LONG top; 317 LONG right; 318 LONG bottom; 319 } RECTL,*PRECTL,*LPRECTL; 320 321 typedef const RECTL *LPCRECTL; 322 323 typedef struct tagPOINT { 324 LONG x; 325 LONG y; 326 } POINT,*PPOINT,*NPPOINT,*LPPOINT; 327 328 typedef struct _POINTL { 329 LONG x; 330 LONG y; 331 } POINTL,*PPOINTL; 332 333 typedef struct tagSIZE { 334 LONG cx; 335 LONG cy; 336 } SIZE,*PSIZE,*LPSIZE; 337 338 typedef SIZE SIZEL; 339 typedef SIZE *PSIZEL,*LPSIZEL; 340 341 typedef struct tagPOINTS { 342 SHORT x; 343 SHORT y; 344 } POINTS,*PPOINTS,*LPPOINTS; 345 346 typedef struct _FILETIME { 347 DWORD dwLowDateTime; 348 DWORD dwHighDateTime; 349 } FILETIME,*PFILETIME,*LPFILETIME; 350 #define _FILETIME_ 351 352 #define DM_UPDATE 1 353 #define DM_COPY 2 354 #define DM_PROMPT 4 355 #define DM_MODIFY 8 356 357 #define DM_IN_BUFFER DM_MODIFY 358 #define DM_IN_PROMPT DM_PROMPT 359 #define DM_OUT_BUFFER DM_COPY 360 #define DM_OUT_DEFAULT DM_UPDATE 361 362 #define DC_FIELDS 1 363 #define DC_PAPERS 2 364 #define DC_PAPERSIZE 3 365 #define DC_MINEXTENT 4 366 #define DC_MAXEXTENT 5 367 #define DC_BINS 6 368 #define DC_DUPLEX 7 369 #define DC_SIZE 8 370 #define DC_EXTRA 9 371 #define DC_VERSION 10 372 #define DC_DRIVER 11 373 #define DC_BINNAMES 12 374 #define DC_ENUMRESOLUTIONS 13 375 #define DC_FILEDEPENDENCIES 14 376 #define DC_TRUETYPE 15 377 #define DC_PAPERNAMES 16 378 #define DC_ORIENTATION 17 379 #define DC_COPIES 18 380 381 /* needed by header files generated by WIDL */ 382 #ifdef __WINESRC__ 383 #define WINE_NO_UNICODE_MACROS 384 #endif 385 386 #ifdef WINE_NO_UNICODE_MACROS 387 # define WINELIB_NAME_AW(func) \ 388 func##_must_be_suffixed_with_W_or_A_in_this_context \ 389 func##_must_be_suffixed_with_W_or_A_in_this_context 390 #else /* WINE_NO_UNICODE_MACROS */ 391 # ifdef UNICODE 392 # define WINELIB_NAME_AW(func) func##W 393 # else 394 # define WINELIB_NAME_AW(func) func##A 395 # endif 396 #endif /* WINE_NO_UNICODE_MACROS */ 397 398 #ifdef WINE_NO_UNICODE_MACROS 399 # define DECL_WINELIB_TYPE_AW(type) /* nothing */ 400 #else 401 # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; 402 #endif 403 404 #ifndef __WATCOMC__ 405 #ifndef _export 406 #define _export 407 #endif 408 #ifndef __export 409 #define __export 410 #endif 411 #endif 412 413 #if 0 414 #ifdef __GNUC__ 415 #define PACKED __attribute__((packed)) 416 //#ifndef _fastcall 417 //#define _fastcall __attribute__((fastcall)) 418 //#endif 419 //#ifndef __fastcall 420 //#define __fastcall __attribute__((fastcall)) 421 //#endif 422 //#ifndef _stdcall 423 //#define _stdcall __attribute__((stdcall)) 424 //#endif 425 //#ifndef __stdcall 426 //#define __stdcall __attribute__((stdcall)) 427 //#endif 428 //#ifndef _cdecl 429 //#define _cdecl __attribute__((cdecl)) 430 //#endif 431 //#ifndef __cdecl 432 //#define __cdecl __attribute__((cdecl)) 433 //#endif 434 #ifndef __declspec 435 #define __declspec(e) __attribute__((e)) 436 #endif 437 #ifndef _declspec 438 #define _declspec(e) __attribute__((e)) 439 #endif 440 #elif defined(__WATCOMC__) 441 #define PACKED 442 #else 443 #define PACKED 444 #define _cdecl 445 #define __cdecl 446 #endif 447 #endif 448 449 #if 1 // needed by shlwapi.h 450 #ifndef __ms_va_list 451 # if defined(__x86_64__) && defined (__GNUC__) 452 # define __ms_va_list __builtin_ms_va_list 453 # define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg) 454 # define __ms_va_end(list) __builtin_ms_va_end(list) 455 # else 456 # define __ms_va_list va_list 457 # define __ms_va_start(list,arg) va_start(list,arg) 458 # define __ms_va_end(list) va_end(list) 459 # endif 460 #endif 461 #endif 462 463 #ifdef _MSC_VER 464 #pragma warning(pop) 465 #endif 466 467 #ifdef __cplusplus 468 } 469 #endif 470 471 #endif /* _WINDEF_ */ 472 473