1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/msw/missing.h 3 // Purpose: Declarations for parts of the Win32 SDK that are missing in 4 // the versions that come with some compilers 5 // Created: 2002/04/23 6 // Copyright: (c) 2002 Mattia Barbon 7 // Licence: wxWindows licence 8 ///////////////////////////////////////////////////////////////////////////// 9 10 #ifndef _WX_MISSING_H_ 11 #define _WX_MISSING_H_ 12 13 /* 14 * The following are required for VC++ 6. 15 */ 16 17 // Needed by cursor.cpp 18 #ifndef IDC_HAND 19 #define IDC_HAND MAKEINTRESOURCE(32649) 20 #endif 21 22 // Needed by strconv.cpp 23 #ifndef WC_NO_BEST_FIT_CHARS 24 #define WC_NO_BEST_FIT_CHARS 0x400 25 #endif 26 27 #ifndef WM_CONTEXTMENU 28 #define WM_CONTEXTMENU 0x007B 29 #endif 30 31 #ifndef WM_CHANGEUISTATE 32 #define WM_CHANGEUISTATE 0x0127 33 #endif 34 35 #ifndef WM_UPDATEUISTATE 36 #define WM_UPDATEUISTATE 0x0128 37 #endif 38 39 #ifndef WM_QUERYUISTATE 40 #define WM_QUERYUISTATE 0x0129 41 #endif 42 43 #ifndef WM_PRINTCLIENT 44 #define WM_PRINTCLIENT 0x318 45 #endif 46 47 #ifndef DT_HIDEPREFIX 48 #define DT_HIDEPREFIX 0x00100000 49 #endif 50 51 #ifndef DSS_HIDEPREFIX 52 #define DSS_HIDEPREFIX 0x0200 53 #endif 54 55 // Needed by toplevel.cpp 56 #ifndef UIS_SET 57 #define UIS_SET 1 58 #define UIS_CLEAR 2 59 #define UIS_INITIALIZE 3 60 #endif 61 62 #ifndef UISF_HIDEFOCUS 63 #define UISF_HIDEFOCUS 1 64 #endif 65 66 #ifndef UISF_HIDEACCEL 67 #define UISF_HIDEACCEL 2 68 #endif 69 70 #ifndef OFN_EXPLORER 71 #define OFN_EXPLORER 0x00080000 72 #endif 73 74 #ifndef OFN_ENABLESIZING 75 #define OFN_ENABLESIZING 0x00800000 76 #endif 77 78 // Needed by window.cpp 79 #if wxUSE_MOUSEWHEEL 80 #ifndef WM_MOUSEWHEEL 81 #define WM_MOUSEWHEEL 0x020A 82 #endif 83 #ifndef WM_MOUSEHWHEEL 84 #define WM_MOUSEHWHEEL 0x020E 85 #endif 86 #ifndef WHEEL_DELTA 87 #define WHEEL_DELTA 120 88 #endif 89 #ifndef SPI_GETWHEELSCROLLLINES 90 #define SPI_GETWHEELSCROLLLINES 104 91 #endif 92 #ifndef SPI_GETWHEELSCROLLCHARS 93 #define SPI_GETWHEELSCROLLCHARS 108 94 #endif 95 #endif // wxUSE_MOUSEWHEEL 96 97 // Needed by window.cpp 98 #ifndef VK_OEM_1 99 #define VK_OEM_1 0xBA 100 #define VK_OEM_2 0xBF 101 #define VK_OEM_3 0xC0 102 #define VK_OEM_4 0xDB 103 #define VK_OEM_5 0xDC 104 #define VK_OEM_6 0xDD 105 #define VK_OEM_7 0xDE 106 #define VK_OEM_102 0xE2 107 #endif 108 109 #ifndef VK_OEM_COMMA 110 #define VK_OEM_PLUS 0xBB 111 #define VK_OEM_COMMA 0xBC 112 #define VK_OEM_MINUS 0xBD 113 #define VK_OEM_PERIOD 0xBE 114 #endif 115 116 #ifndef SM_TABLETPC 117 #define SM_TABLETPC 86 118 #endif 119 120 #ifndef INKEDIT_CLASS 121 # define INKEDIT_CLASSW L"INKEDIT" 122 # ifdef UNICODE 123 # define INKEDIT_CLASS INKEDIT_CLASSW 124 # else 125 # define INKEDIT_CLASS "INKEDIT" 126 # endif 127 #endif 128 129 #ifndef EM_SETINKINSERTMODE 130 # define EM_SETINKINSERTMODE (WM_USER + 0x0204) 131 #endif 132 133 #ifndef EM_SETUSEMOUSEFORINPUT 134 #define EM_SETUSEMOUSEFORINPUT (WM_USER + 0x224) 135 #endif 136 137 #ifndef TPM_RECURSE 138 #define TPM_RECURSE 1 139 #endif 140 141 142 #ifndef WS_EX_LAYOUTRTL 143 #define WS_EX_LAYOUTRTL 0x00400000 144 #endif 145 146 #ifndef WS_EX_COMPOSITED 147 #define WS_EX_COMPOSITED 0x02000000L 148 #endif 149 150 #ifndef WS_EX_LAYERED 151 #define WS_EX_LAYERED 0x00080000 152 #endif 153 154 #ifndef LWA_ALPHA 155 #define LWA_ALPHA 2 156 #endif 157 158 #ifndef QS_ALLPOSTMESSAGE 159 #define QS_ALLPOSTMESSAGE 0 160 #endif 161 162 /* 163 * The following are required for VC++ 5 when the PSDK is not available. 164 */ 165 166 #if defined __VISUALC__ && __VISUALC__ <= 1100 167 168 #ifndef VER_NT_WORKSTATION 169 170 typedef struct _OSVERSIONINFOEXA { 171 DWORD dwOSVersionInfoSize; 172 DWORD dwMajorVersion; 173 DWORD dwMinorVersion; 174 DWORD dwBuildNumber; 175 DWORD dwPlatformId; 176 CHAR szCSDVersion[128]; 177 WORD wServicePackMajor; 178 WORD wServicePackMinor; 179 WORD wSuiteMask; 180 BYTE wProductType; 181 BYTE wReserved; 182 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; 183 typedef struct _OSVERSIONINFOEXW { 184 DWORD dwOSVersionInfoSize; 185 DWORD dwMajorVersion; 186 DWORD dwMinorVersion; 187 DWORD dwBuildNumber; 188 DWORD dwPlatformId; 189 WCHAR szCSDVersion[128]; 190 WORD wServicePackMajor; 191 WORD wServicePackMinor; 192 WORD wSuiteMask; 193 BYTE wProductType; 194 BYTE wReserved; 195 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW; 196 197 #ifdef UNICODE 198 typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO; 199 typedef OSVERSIONINFOEXW OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX; 200 #else 201 typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO; 202 typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX; 203 #endif 204 205 #endif // defined VER_NT_WORKSTATION 206 207 #ifndef CP_SYMBOL 208 #define CP_SYMBOL 42 209 #endif 210 211 // NMLVCUSTOMDRAW originally didn't have the iSubItem member. It was added 212 // with IE4, as was IPN_FIRST which is used as a test :-(. 213 // 214 #ifndef IPN_FIRST 215 216 typedef struct wxtagNMLVCUSTOMDRAW_ { 217 NMCUSTOMDRAW nmcd; 218 COLORREF clrText; 219 COLORREF clrTextBk; 220 int iSubItem; 221 } wxNMLVCUSTOMDRAW_, *wxLPNMLVCUSTOMDRAW_; 222 223 #define NMLVCUSTOMDRAW wxNMLVCUSTOMDRAW_ 224 #define LPNMLVCUSTOMDRAW wxLPNMLVCUSTOMDRAW_ 225 226 #endif // defined IPN_FIRST 227 228 #endif // defined __VISUALC__ && __VISUALC__ <= 1100 229 230 // ---------------------------------------------------------------------------- 231 // menu stuff 232 // ---------------------------------------------------------------------------- 233 234 #ifndef MIIM_BITMAP 235 #define MIIM_STRING 0x00000040 236 #define MIIM_BITMAP 0x00000080 237 #define MIIM_FTYPE 0x00000100 238 #define HBMMENU_CALLBACK ((HBITMAP) -1) 239 240 typedef struct tagMENUINFO 241 { 242 DWORD cbSize; 243 DWORD fMask; 244 DWORD dwStyle; 245 UINT cyMax; 246 HBRUSH hbrBack; 247 DWORD dwContextHelpID; 248 DWORD dwMenuData; 249 } MENUINFO, FAR *LPMENUINFO; 250 #endif // MIIM_BITMAP &c 251 252 // ---------------------------------------------------------------------------- 253 // definitions related to ListView and Header common controls, needed by 254 // msw/listctrl.cpp and msw/headerctrl.cpp 255 // ---------------------------------------------------------------------------- 256 257 #ifndef I_IMAGENONE 258 #define I_IMAGENONE (-2) 259 #endif 260 261 #ifndef LVS_EX_FULLROWSELECT 262 #define LVS_EX_FULLROWSELECT 0x00000020 263 #endif 264 265 // LVS_EX_LABELTIP is not supported by Windows CE, don't define it there 266 #if !defined(LVS_EX_LABELTIP) && !defined(__WXWINCE__) 267 #define LVS_EX_LABELTIP 0x00004000 268 #endif 269 270 #ifndef LVS_EX_SUBITEMIMAGES 271 #define LVS_EX_SUBITEMIMAGES 0x00000002 272 #endif 273 274 #ifndef HDN_GETDISPINFOW 275 #define HDN_GETDISPINFOW (HDN_FIRST-29) 276 #endif 277 278 #ifndef HDS_HOTTRACK 279 #define HDS_HOTTRACK 4 280 #endif 281 #ifndef HDS_FLAT 282 #define HDS_FLAT 0x0200 283 #endif 284 285 #ifndef HDF_SORTUP 286 #define HDF_SORTUP 0x0400 287 #define HDF_SORTDOWN 0x0200 288 #endif 289 290 /* 291 * In addition to the above, the following are required for several compilers. 292 */ 293 294 #if !defined(CCS_VERT) 295 #define CCS_VERT 0x00000080L 296 #endif 297 298 #if !defined(CCS_RIGHT) 299 #define CCS_RIGHT (CCS_VERT|CCS_BOTTOM) 300 #endif 301 302 #if !defined(TB_SETDISABLEDIMAGELIST) 303 #define TB_SETDISABLEDIMAGELIST (WM_USER + 54) 304 #endif // !defined(TB_SETDISABLEDIMAGELIST) 305 306 #ifndef CFM_BACKCOLOR 307 #define CFM_BACKCOLOR 0x04000000 308 #endif 309 310 #ifndef HANGUL_CHARSET 311 #define HANGUL_CHARSET 129 312 #endif 313 314 #ifndef CCM_SETUNICODEFORMAT 315 #define CCM_SETUNICODEFORMAT 8197 316 #endif 317 318 // ---------------------------------------------------------------------------- 319 // Tree control 320 // ---------------------------------------------------------------------------- 321 322 #ifndef TV_FIRST 323 #define TV_FIRST 0x1100 324 #endif 325 326 #ifndef TVS_FULLROWSELECT 327 #define TVS_FULLROWSELECT 0x1000 328 #endif 329 330 #ifndef TVM_SETBKCOLOR 331 #define TVM_SETBKCOLOR (TV_FIRST + 29) 332 #define TVM_SETTEXTCOLOR (TV_FIRST + 30) 333 #endif 334 335 /* 336 * The following are required for BC++ 5.5 (none at present.) 337 */ 338 339 /* 340 * The following are specifically required for Digital Mars C++ 341 */ 342 343 #ifdef __DMC__ 344 345 #ifndef VER_NT_WORKSTATION 346 typedef struct _OSVERSIONINFOEX { 347 DWORD dwOSVersionInfoSize; 348 DWORD dwMajorVersion; 349 DWORD dwMinorVersion; 350 DWORD dwBuildNumber; 351 DWORD dwPlatformId; 352 TCHAR szCSDVersion[ 128 ]; 353 WORD wServicePackMajor; 354 WORD wServicePackMinor; 355 WORD wSuiteMask; 356 BYTE wProductType; 357 BYTE wReserved; 358 } OSVERSIONINFOEX; 359 #endif // !defined(VER_NT_WORKSTATION) 360 361 #ifndef _TrackMouseEvent 362 #define _TrackMouseEvent TrackMouseEvent 363 #endif 364 365 #ifndef LVM_SETEXTENDEDLISTVIEWSTYLE 366 #define LVM_SETEXTENDEDLISTVIEWSTYLE (0x1000 + 54) 367 #endif 368 369 #ifndef LVM_GETSUBITEMRECT 370 #define LVM_GETSUBITEMRECT (0x1000 + 56) 371 #endif 372 373 #ifndef LVCF_IMAGE 374 #define LVCF_IMAGE 0x0010 375 #endif 376 377 #ifndef Header_GetItemRect 378 #define Header_GetItemRect(w,i,r) \ 379 (BOOL)SendMessage((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r)) 380 #endif 381 382 #ifndef HDM_GETITEMRECT 383 #define HDM_GETITEMRECT (HDM_FIRST+7) 384 #endif 385 386 #ifndef ListView_GetHeader 387 #define ListView_GetHeader(w) (HWND)SendMessage((w),LVM_GETHEADER,0,0) 388 #endif 389 390 #ifndef ListView_GetSubItemRect 391 #define ListView_GetSubItemRect(w, i, s, c, p) (HWND)SendMessage(w,LVM_GETSUBITEMRECT,i, ((p) ? ((((LPRECT)(p))->top = s), (((LPRECT)(p))->left = c), (LPARAM)(p)) : (LPARAM)(LPRECT)NULL)) 392 #endif 393 394 #ifndef LVM_GETHEADER 395 #define LVM_GETHEADER (LVM_FIRST+31) 396 #endif 397 398 #ifndef HDLAYOUT 399 #define HDLAYOUT HD_LAYOUT 400 #endif 401 402 #ifndef HDITEM 403 #define HDITEM HD_ITEM 404 #endif 405 406 #ifndef NMHEADER 407 #define NMHEADER HD_NOTIFY 408 #endif 409 410 #ifndef HDS_DRAGDROP 411 #define HDS_DRAGDROP 0x0040 412 #endif 413 #ifndef HDS_FULLDRAG 414 #define HDS_FULLDRAG 0x0080 415 #endif 416 417 418 #ifndef HDN_BEGINDRAG 419 #define HDN_BEGINDRAG (HDN_FIRST - 11) 420 #endif 421 422 #ifndef HDN_ENDDRAG 423 #define HDN_ENDDRAG (HDN_FIRST - 10) 424 #endif 425 426 #ifndef LVSICF_NOSCROLL 427 #define LVSICF_NOINVALIDATEALL 0x0001 428 #define LVSICF_NOSCROLL 0x0002 429 #endif 430 431 #ifndef CP_SYMBOL 432 #define CP_SYMBOL 42 433 #endif 434 435 // ---------------------------------------------------------------------------- 436 // wxDisplay 437 // ---------------------------------------------------------------------------- 438 439 // The windows headers with Digital Mars lack some typedefs. 440 // typedef them as my_XXX and then #define to rename to XXX in case 441 // a newer version of Digital Mars fixes the headers 442 // (or up to date PSDK is in use with older version) 443 // also we use any required definition (MONITOR_DEFAULTTONULL) to recognize 444 // whether whole missing block needs to be included 445 446 #ifndef MONITOR_DEFAULTTONULL 447 448 #define HMONITOR_DECLARED 449 DECLARE_HANDLE(HMONITOR); 450 typedef BOOL(CALLBACK* my_MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM); 451 #define MONITORENUMPROC my_MONITORENUMPROC 452 typedef struct my_tagMONITORINFO { 453 DWORD cbSize; 454 RECT rcMonitor; 455 RECT rcWork; 456 DWORD dwFlags; 457 } my_MONITORINFO,*my_LPMONITORINFO; 458 #define MONITORINFO my_MONITORINFO 459 #define LPMONITORINFO my_LPMONITORINFO 460 461 typedef struct my_MONITORINFOEX : public my_tagMONITORINFO 462 { 463 TCHAR szDevice[CCHDEVICENAME]; 464 } my_MONITORINFOEX, *my_LPMONITORINFOEX; 465 #define MONITORINFOEX my_MONITORINFOEX 466 #define LPMONITORINFOEX my_LPMONITORINFOEX 467 468 #ifndef MONITOR_DEFAULTTONULL 469 #define MONITOR_DEFAULTTONULL 0 470 #endif // MONITOR_DEFAULTTONULL 471 472 #ifndef MONITORINFOF_PRIMARY 473 #define MONITORINFOF_PRIMARY 1 474 #endif // MONITORINFOF_PRIMARY 475 476 #ifndef DDENUM_ATTACHEDSECONDARYDEVICES 477 #define DDENUM_ATTACHEDSECONDARYDEVICES 1 478 #endif 479 480 #endif // MONITOR_DEFAULTTONULL 481 482 // ---------------------------------------------------------------------------- 483 // Tree control 484 // ---------------------------------------------------------------------------- 485 486 #ifndef TVIS_FOCUSED 487 #define TVIS_FOCUSED 0x0001 488 #endif 489 490 #ifndef TVS_CHECKBOXES 491 #define TVS_CHECKBOXES 0x0100 492 #endif 493 494 #ifndef TVITEM 495 #define TVITEM TV_ITEM 496 #endif 497 498 #endif 499 // DMC++ 500 501 /* 502 * The following are specifically required for OpenWatcom C++ (none at present) 503 */ 504 505 #if defined(__WATCOMC__) 506 #endif 507 508 /* 509 * The following are specifically required for MinGW (none at present) 510 */ 511 512 #if defined (__MINGW32__) 513 514 #if !wxCHECK_W32API_VERSION(3,1) 515 516 #include <windows.h> 517 #include "wx/msw/winundef.h" 518 519 typedef struct 520 { 521 RECT rgrc[3]; 522 WINDOWPOS *lppos; 523 } NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS; 524 525 #endif 526 527 #endif 528 529 //Various defines that will be needed by mingw and possibly VC++6 530 //Used by the webview library 531 532 #ifndef DISPID_COMMANDSTATECHANGE 533 #define DISPID_COMMANDSTATECHANGE 105 534 #endif 535 536 #ifndef DISPID_NAVIGATECOMPLETE2 537 #define DISPID_NAVIGATECOMPLETE2 252 538 #endif 539 540 #ifndef DISPID_NAVIGATEERROR 541 #define DISPID_NAVIGATEERROR 271 542 #endif 543 544 #ifndef DISPID_NEWWINDOW3 545 #define DISPID_NEWWINDOW3 273 546 #endif 547 548 #ifndef INET_E_ERROR_FIRST 549 #define INET_E_ERROR_FIRST 0x800C0002L 550 #endif 551 552 #ifndef INET_E_INVALID_URL 553 #define INET_E_INVALID_URL 0x800C0002L 554 #endif 555 556 #ifndef INET_E_NO_SESSION 557 #define INET_E_NO_SESSION 0x800C0003L 558 #endif 559 560 #ifndef INET_E_CANNOT_CONNECT 561 #define INET_E_CANNOT_CONNECT 0x800C0004L 562 #endif 563 564 #ifndef INET_E_RESOURCE_NOT_FOUND 565 #define INET_E_RESOURCE_NOT_FOUND 0x800C0005L 566 #endif 567 568 #ifndef INET_E_OBJECT_NOT_FOUND 569 #define INET_E_OBJECT_NOT_FOUND 0x800C0006L 570 #endif 571 572 #ifndef INET_E_DATA_NOT_AVAILABLE 573 #define INET_E_DATA_NOT_AVAILABLE 0x800C0007L 574 #endif 575 576 #ifndef INET_E_DOWNLOAD_FAILURE 577 #define INET_E_DOWNLOAD_FAILURE 0x800C0008L 578 #endif 579 580 #ifndef INET_E_AUTHENTICATION_REQUIRED 581 #define INET_E_AUTHENTICATION_REQUIRED 0x800C0009L 582 #endif 583 584 #ifndef INET_E_NO_VALID_MEDIA 585 #define INET_E_NO_VALID_MEDIA 0x800C000AL 586 #endif 587 588 #ifndef INET_E_CONNECTION_TIMEOUT 589 #define INET_E_CONNECTION_TIMEOUT 0x800C000BL 590 #endif 591 592 #ifndef INET_E_INVALID_REQUEST 593 #define INET_E_INVALID_REQUEST 0x800C000CL 594 #endif 595 596 #ifndef INET_E_UNKNOWN_PROTOCOL 597 #define INET_E_UNKNOWN_PROTOCOL 0x800C000DL 598 #endif 599 600 #ifndef INET_E_SECURITY_PROBLEM 601 #define INET_E_SECURITY_PROBLEM 0x800C000EL 602 #endif 603 604 #ifndef INET_E_CANNOT_LOAD_DATA 605 #define INET_E_CANNOT_LOAD_DATA 0x800C000FL 606 #endif 607 608 #ifndef INET_E_CANNOT_INSTANTIATE_OBJECT 609 #define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010L 610 #endif 611 612 #ifndef INET_E_QUERYOPTION_UNKNOWN 613 #define INET_E_QUERYOPTION_UNKNOWN 0x800C0013L 614 #endif 615 616 #ifndef INET_E_REDIRECT_FAILED 617 #define INET_E_REDIRECT_FAILED 0x800C0014L 618 #endif 619 620 #ifndef INET_E_REDIRECT_TO_DIR 621 #define INET_E_REDIRECT_TO_DIR 0x800C0015L 622 #endif 623 624 #ifndef INET_E_CANNOT_LOCK_REQUEST 625 #define INET_E_CANNOT_LOCK_REQUEST 0x800C0016L 626 #endif 627 628 #ifndef INET_E_USE_EXTEND_BINDING 629 #define INET_E_USE_EXTEND_BINDING 0x800C0017L 630 #endif 631 632 #ifndef INET_E_TERMINATED_BIND 633 #define INET_E_TERMINATED_BIND 0x800C0018L 634 #endif 635 636 #ifndef INET_E_INVALID_CERTIFICATE 637 #define INET_E_INVALID_CERTIFICATE 0x800C0019L 638 #endif 639 640 #ifndef INET_E_CODE_DOWNLOAD_DECLINED 641 #define INET_E_CODE_DOWNLOAD_DECLINED 0x800C0100L 642 #endif 643 644 #ifndef INET_E_RESULT_DISPATCHED 645 #define INET_E_RESULT_DISPATCHED 0x800C0200L 646 #endif 647 648 #ifndef INET_E_CANNOT_REPLACE_SFP_FILE 649 #define INET_E_CANNOT_REPLACE_SFP_FILE 0x800C0300L 650 #endif 651 652 #ifndef INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY 653 #define INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY 0x800C0500L 654 #endif 655 656 #ifndef INET_E_CODE_INSTALL_SUPPRESSED 657 #define INET_E_CODE_INSTALL_SUPPRESSED 0x800C0400L 658 #endif 659 660 #ifndef MUI_LANGUAGE_NAME 661 #define MUI_LANGUAGE_NAME 0x8 662 #endif 663 664 /* 665 * In addition to the declarations for VC++, the following are required for WinCE 666 */ 667 668 #ifdef __WXWINCE__ 669 #include "wx/msw/wince/missing.h" 670 #endif 671 672 /* 673 * The following are specifically required for Wine 674 */ 675 676 #ifdef __WINE__ 677 #ifndef ENUM_CURRENT_SETTINGS 678 #define ENUM_CURRENT_SETTINGS ((DWORD)-1) 679 #endif 680 #ifndef BROADCAST_QUERY_DENY 681 #define BROADCAST_QUERY_DENY 1112363332 682 #endif 683 #endif // defined __WINE__ 684 685 #ifndef INVALID_FILE_ATTRIBUTES 686 #define INVALID_FILE_ATTRIBUTES ((DWORD)-1) 687 #endif 688 689 #endif 690 // _WX_MISSING_H_ 691