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