]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Putting files back in the wxWidgets-$VERSION dir.
[wxWidgets.git] / include / wx / defs.h
index ba94f1e06622f5f79874cd570d106a01ed8da9fa..9739fbf2606d3c6c258ad99870c61c31a5810e35 100644 (file)
@@ -1,5 +1,5 @@
 /**
-*  Name:        defs.h
+*  Name:        wx/defs.h
 *  Purpose:     Declarations/definitions common to all wx source files
 *  Author:      Julian Smart and others
 *  Modified by: Ryan Norton (Converted to C)
 #ifdef __VISUALC__
     /*  the only "real" warning here is 4244 but there are just too many of them */
     /*  in our code... one day someone should go and fix them but until then... */
+#   pragma warning(disable:4097)    /*  typedef used as class */
 #   pragma warning(disable:4201)    /*  nonstandard extension used: nameless struct/union */
 #   pragma warning(disable:4244)    /*  conversion from double to float */
-#   pragma warning(disable:4710)    /*  function not inlined */
-#   pragma warning(disable:4097)    /*  typedef used as class */
+#   pragma warning(disable:4355)    /* 'this' used in base member initializer list */
 #   pragma warning(disable:4511)    /*  copy ctor couldn't be generated */
 #   pragma warning(disable:4512)    /*  operator=() couldn't be generated */
-#ifndef WIN32
-#   pragma warning(disable:4135)    /*  conversion between different integral types */
-#   pragma warning(disable:4769)    /*  assignment of near pointer to long integer */
-/*  This one is really annoying, since it occurs for each cast to (HANDLE)... */
-#   pragma warning(disable:4305)    /*  truncation of long to near ptr */
-#endif
+#   pragma warning(disable:4710)    /*  function not inlined */
+
+    /* For VC++ 5.0 for release mode, the warning 'C4702: unreachable code */
+    /* is buggy, and occurs for code that does actually get executed */
+#   if !defined __WXDEBUG__ && __VISUALC__ <= 1100
+#       pragma warning(disable:4702)    /* unreachable code */
+#   endif
+
+    /*
+       VC++ 8 gives a warning when using standard functions such as sprintf,
+       localtime, ... -- stop this madness, unless the user had already done it
+     */
+    #if __VISUALC__ >= 1400
+        #ifndef _CRT_SECURE_NO_DEPRECATE
+            #define _CRT_SECURE_NO_DEPRECATE 1
+        #endif
+        #ifndef _CRT_NON_CONFORMING_SWPRINTFS
+            #define _CRT_NON_CONFORMING_SWPRINTFS 1
+        #endif
+    #endif /* VC++ 8 */
 #endif /*  __VISUALC__ */
 
 /*  suppress some Salford C++ warnings */
 #   pragma warn -inl                /*  Functions containing reserved words and certain constructs are not expanded inline */
 #endif /*  __BORLANDC__ */
 
+/*
+   g++ gives a warning when a class has private dtor if it has no friends but
+   this is a perfectly valid situation for a ref-counted class which destroys
+   itself when its ref count drops to 0, so provide a macro to suppress this
+   warning
+ */
+#ifdef __GNUG__
+#   define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name) \
+        friend class wxDummyFriendFor ## name;
+#else /* !g++ */
+#   define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name)
+#endif
+
 /*  ---------------------------------------------------------------------------- */
 /*  wxWidgets version and compatibility defines */
 /*  ---------------------------------------------------------------------------- */
     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500)
         /*  Borland 5.0+ supports bool */
         #define HAVE_BOOL
-    #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
+    #elif wxCHECK_WATCOM_VERSION(1,0)
         /*  Watcom 11+ supports bool */
         #define HAVE_BOOL
     #elif defined(__DIGITALMARS__)
@@ -252,10 +279,11 @@ typedef int wxWindowID;
     #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
         /*  VC++ 6.0 and 5.0 have C++ casts (what about earlier versions?) */
         #define HAVE_CXX_CASTS
-    #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
-          && wxCHECK_GCC_VERSION(2, 95)
-        /*  GCC 2.95 has C++ casts, what about earlier versions? */
-        #define HAVE_CXX_CASTS
+    #elif defined(__MINGW32__) || defined(__CYGWIN32__)
+        #if wxCHECK_GCC_VERSION(2, 95)
+            /*  GCC 2.95 has C++ casts, what about earlier versions? */
+            #define HAVE_CXX_CASTS
+        #endif
     #endif
 #endif /*  !HAVE_CXX_CASTS */
 
@@ -292,6 +320,46 @@ typedef int wxWindowID;
     #define wx_reinterpret_cast(t, x) ((t)(x))
 #endif
 
+/*
+   This one is a wx invention: like static cast but used when we intentionally
+   truncate from a larger to smaller type, static_cast<> can't be used for it
+   as it results in warnings when using some compilers (SGI mipspro for example)
+ */
+#if defined(__INTELC__) && defined(__cplusplus)
+    template <typename T, typename X>
+    inline T wx_truncate_cast_impl(X x)
+    {
+        #pragma warning(push)
+        /* implicit conversion of a 64-bit integral type to a smaller integral type */
+        #pragma warning(disable: 1682)
+        /* conversion from "X" to "T" may lose significant bits */
+        #pragma warning(disable: 810)
+
+        return x;
+
+        #pragma warning(pop)
+    }
+
+    #define wx_truncate_cast(t, x) wx_truncate_cast_impl<t>(x)
+
+#elif defined(__cplusplus) && defined(__VISUALC__) && __VISUALC__ >= 1310
+    template <typename T, typename X>
+    inline T wx_truncate_cast_impl(X x)
+    {
+        #pragma warning(push)
+        /* conversion from 'X' to 'T', possible loss of data */
+        #pragma warning(disable: 4267)
+
+        return x;
+
+        #pragma warning(pop)
+    }
+
+    #define wx_truncate_cast(t, x) wx_truncate_cast_impl<t>(x)
+#else
+    #define wx_truncate_cast(t, x) ((t)(x))
+#endif
+
 /* for consistency with wxStatic/DynamicCast defined in wx/object.h */
 #define wxConstCast(obj, className) wx_const_cast(className *, obj)
 
@@ -573,7 +641,7 @@ typedef int wxWindowID;
     #define except(x) catch(...)
 #endif /*  Metrowerks */
 
-#if defined(__WATCOMC__) && (__WATCOMC__ < 1240)
+#if wxONLY_WATCOM_EARLIER_THAN(1,4)
     typedef short mode_t;
 #endif
 
@@ -633,6 +701,24 @@ enum
     wxDOS                     /*  wxBase under MS-DOS */
 };
 
+/* Friendlier platform names */
+enum
+{
+    wxMotif = wxMOTIF_X,
+    wxMac = wxMAC,
+    wxMSW = wxWINDOWS,
+    wxWinCE = wxWINDOWS_CE,
+    wxWinPocketPC = wxWINDOWS_POCKETPC,
+    wxWinSmartPhone = wxWINDOWS_SMARTPHONE,
+    wxWin95= wxWIN95,
+    wxUnix = wxUNIX,                   /*  wxBase under Unix */
+    wxPalmOS = wxPALMOS,               /*  PalmOS */
+    wxOS2 = wxOS2_PM,
+
+    wxMGL = 100,
+    wxCocoa
+};
+
 /*  ---------------------------------------------------------------------------- */
 /*  standard wxWidgets types */
 /*  ---------------------------------------------------------------------------- */
@@ -837,29 +923,45 @@ inline wxUIntPtr wxPtrToUInt(const void *p)
     /*
        VC++ 7.1 gives warnings about casts such as below even when they're
        explicit with /Wp64 option, suppress them as we really know what we're
-       doing here
+       doing here. Same thing with icc with -Wall.
      */
 #ifdef __VISUALC__
-    #pragma warning(disable: 4311) /* pointer truncation from '' to '' */
+    #if __VISUALC__ >= 1200
+        #pragma warning(push)
+    #endif
+    /* pointer truncation from '' to '' */
+    #pragma warning(disable: 4311)
+#elif defined(__INTELC__)
+    #pragma warning(push)
+    /* conversion from pointer to same-sized integral type */
+    #pragma warning(disable: 1684)
 #endif
 
     return wx_reinterpret_cast(wxUIntPtr, p);
 
-#ifdef __VISUALC__
-    #pragma warning(default: 4311)
+#if (defined(__VISUALC__) && __VISUALC__ >= 1200) || defined(__INTELC__)
+    #pragma warning(pop)
 #endif
 }
 
 inline void *wxUIntToPtr(wxUIntPtr p)
 {
 #ifdef __VISUALC__
-    #pragma warning(disable: 4312) /* conversion to type of greater size */
+    #if __VISUALC__ >= 1200
+        #pragma warning(push)
+    #endif
+    /* conversion to type of greater size */
+    #pragma warning(disable: 4312)
+#elif defined(__INTELC__)
+    #pragma warning(push)
+    /* invalid type conversion: "wxUIntPtr={unsigned long}" to "void *" */
+    #pragma warning(disable: 171)
 #endif
 
     return wx_reinterpret_cast(void *, p);
 
-#ifdef __VISUALC__
-    #pragma warning(default: 4312)
+#if (defined(__VISUALC__) && __VISUALC__ >= 1200) || defined(__INTELC__)
+    #pragma warning(pop)
 #endif
 }
 #endif /*__cplusplus*/
@@ -943,6 +1045,23 @@ inline void *wxUIntToPtr(wxUIntPtr p)
 
     typedef wxLongLong_t wxInt64;
     typedef wxULongLong_t wxUint64;
+
+    #define wxHAS_INT64 1
+
+#elif wxUSE_LONGLONG
+    /*  these macros allow to definea 64 bit constants in a portable way */
+    #define wxLL(x) wxLongLong(x)
+    #define wxULL(x) wxULongLong(x)
+
+    #define wxInt64 wxLongLong
+    #define wxUint64 wxULongLong
+
+    #define wxHAS_INT64 1
+
+#else /* !wxUSE_LONGLONG */
+
+    #define wxHAS_INT64 0
+
 #endif
 
 
@@ -956,7 +1075,7 @@ inline void *wxUIntToPtr(wxUIntPtr p)
 #if defined(__PALMOS__) && !defined(HAVE_SSIZE_T)
     #define HAVE_SSIZE_T
 #endif
-#if defined(__WATCOMC__) && __WATCOMC__ > 1230
+#if wxCHECK_WATCOM_VERSION(1,4)
     #define HAVE_SSIZE_T
 #endif
 #ifndef HAVE_SSIZE_T
@@ -1104,7 +1223,7 @@ typedef float wxFloat32;
         (((wxUint64) (val) & (wxUint64) wxULL(0x0000ff0000000000)) >> 24) | \
         (((wxUint64) (val) & (wxUint64) wxULL(0x00ff000000000000)) >> 40) | \
         (((wxUint64) (val) & (wxUint64) wxULL(0xff00000000000000)) >> 56)))
-#else /*  !wxLongLong_t */
+#elif wxUSE_LONGLONG /*  !wxLongLong_t */
     #define wxUINT64_SWAP_ALWAYS(val) \
        ((wxUint64) ( \
         ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \
@@ -1137,8 +1256,10 @@ typedef float wxFloat32;
     #define wxINT32_SWAP_ON_BE(val)   wxINT32_SWAP_ALWAYS(val)
     #define wxUINT32_SWAP_ON_LE(val)  (val)
     #define wxINT32_SWAP_ON_LE(val)   (val)
-    #define wxUINT64_SWAP_ON_BE(val)  wxUINT64_SWAP_ALWAYS(val)
-    #define wxUINT64_SWAP_ON_LE(val)  (val)
+    #if wxHAS_INT64
+        #define wxUINT64_SWAP_ON_BE(val)  wxUINT64_SWAP_ALWAYS(val)
+        #define wxUINT64_SWAP_ON_LE(val)  (val)
+    #endif
 #else
     #define wxUINT16_SWAP_ON_LE(val)  wxUINT16_SWAP_ALWAYS(val)
     #define wxINT16_SWAP_ON_LE(val)   wxINT16_SWAP_ALWAYS(val)
@@ -1148,8 +1269,10 @@ typedef float wxFloat32;
     #define wxINT32_SWAP_ON_LE(val)   wxINT32_SWAP_ALWAYS(val)
     #define wxUINT32_SWAP_ON_BE(val)  (val)
     #define wxINT32_SWAP_ON_BE(val)   (val)
-    #define wxUINT64_SWAP_ON_LE(val)  wxUINT64_SWAP_ALWAYS(val)
-    #define wxUINT64_SWAP_ON_BE(val)  (val)
+    #if wxHAS_INT64
+        #define wxUINT64_SWAP_ON_LE(val)  wxUINT64_SWAP_ALWAYS(val)
+        #define wxUINT64_SWAP_ON_BE(val)  (val)
+    #endif
 #endif
 
 /*  ---------------------------------------------------------------------------- */
@@ -1342,6 +1465,13 @@ enum wxBorder
 /*  window is resized (currently, makes sense for wxMSW only) */
 #define wxNO_FULL_REPAINT_ON_RESIZE 0
 
+/* A mask which can be used to filter (out) all wxWindow-specific styles.
+ */
+#define wxWINDOW_STYLE_MASK     \
+    (wxVSCROLL|wxHSCROLL|wxBORDER_MASK|wxALWAYS_SHOW_SB|wxCLIP_CHILDREN| \
+     wxCLIP_SIBLINGS|wxTRANSPARENT_WINDOW|wxTAB_TRAVERSAL|wxWANTS_CHARS| \
+     wxRETAINED|wxPOPUP_WINDOW|wxFULL_REPAINT_ON_RESIZE)
+
 /*
  * Extra window style flags (use wxWS_EX prefix to make it clear that they
  * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle())
@@ -1427,9 +1557,11 @@ enum wxBorder
 /*  always show an entire number of rows */
 #define wxLB_INT_HEIGHT     0x0800
 
-/*  deprecated synonyms */
-#define wxPROCESS_ENTER     0x0400  /*  wxTE_PROCESS_ENTER */
-#define wxPASSWORD          0x0800  /*  wxTE_PASSWORD */
+#if WXWIN_COMPATIBILITY_2_6
+    /*  deprecated synonyms */
+    #define wxPROCESS_ENTER   0x0400  /*  wxTE_PROCESS_ENTER */
+    #define wxPASSWORD        0x0800  /*  wxTE_PASSWORD */
+#endif
 
 /*
  * wxComboBox style flags
@@ -1480,38 +1612,59 @@ enum wxBorder
 #define wxSP_ARROW_KEYS       0x1000
 #define wxSP_WRAP             0x2000
 
+/*
+ * wxBookCtrl flags (common for wxNotebook, wxListbook, wxChoicebook, wxTreebook)
+ */
+
+#define wxBK_DEFAULT          0x0000
+#define wxBK_TOP              0x0010
+#define wxBK_BOTTOM           0x0020
+#define wxBK_LEFT             0x0040
+#define wxBK_RIGHT            0x0080
+#define wxBK_ALIGN_MASK       ( wxBK_TOP | wxBK_BOTTOM | wxBK_LEFT | wxBK_RIGHT )
+
 /*
  * wxNotebook flags
  */
-#define wxNB_FIXEDWIDTH       0x0010
-#define wxNB_TOP              0x0000    /*  default */
-#define wxNB_LEFT             0x0020
-#define wxNB_RIGHT            0x0040
-#define wxNB_BOTTOM           0x0080
-#define wxNB_MULTILINE        0x0100
-#define wxNB_NOPAGETHEME      0x0200
-#define wxNB_FLAT             0x0400
-#define wxNB_DEFAULT          wxNB_TOP
+#if WXWIN_COMPATIBILITY_2_6
+/* Use common book wxBK_* flags for describing alignment */
+#define wxNB_DEFAULT          wxBK_DEFAULT
+#define wxNB_TOP              wxBK_TOP
+#define wxNB_BOTTOM           wxBK_BOTTOM
+#define wxNB_LEFT             wxBK_LEFT
+#define wxNB_RIGHT            wxBK_RIGHT
+#endif
+
+#define wxNB_FIXEDWIDTH       0x0100
+#define wxNB_MULTILINE        0x0200
+#define wxNB_NOPAGETHEME      0x0400
+#define wxNB_FLAT             0x0800
 
 /*
  * wxListbook flags
  */
-#define wxLB_DEFAULT          0x0
-#define wxLB_TOP              0x1
-#define wxLB_BOTTOM           0x2
-#define wxLB_LEFT             0x4
-#define wxLB_RIGHT            0x8
-#define wxLB_ALIGN_MASK       0xf
+#if WXWIN_COMPATIBILITY_2_6
+/* Use common book wxBK_* flags for describing alignment */
+#define wxLB_DEFAULT          wxBK_DEFAULT
+#define wxLB_TOP              wxBK_TOP
+#define wxLB_BOTTOM           wxBK_BOTTOM
+#define wxLB_LEFT             wxBK_LEFT
+#define wxLB_RIGHT            wxBK_RIGHT
+#define wxLB_ALIGN_MASK       wxBK_ALIGN_MASK
+#endif
 
 /*
  * wxChoicebook flags
  */
-#define wxCHB_DEFAULT         0x0
-#define wxCHB_TOP             0x1
-#define wxCHB_BOTTOM          0x2
-#define wxCHB_LEFT            0x4
-#define wxCHB_RIGHT           0x8
-#define wxCHB_ALIGN_MASK      0xf
+#if WXWIN_COMPATIBILITY_2_6
+/* Use common book wxBK_* flags for describing alignment */
+#define wxCHB_DEFAULT          wxBK_DEFAULT
+#define wxCHB_TOP              wxBK_TOP
+#define wxCHB_BOTTOM           wxBK_BOTTOM
+#define wxCHB_LEFT             wxBK_LEFT
+#define wxCHB_RIGHT            wxBK_RIGHT
+#define wxCHB_ALIGN_MASK       wxBK_ALIGN_MASK
+#endif
 
 /*
  * wxTabCtrl flags
@@ -1534,6 +1687,8 @@ enum wxBorder
  * wxStaticText flags
  */
 #define wxST_NO_AUTORESIZE    0x0001
+#define wxST_DOTS_MIDDLE      0x0002
+#define wxST_DOTS_END         0x0004
 
 /*
  * wxStaticBitmap flags
@@ -1558,11 +1713,6 @@ enum wxBorder
 #define wxPD_REMAINING_TIME     0x0040
 #define wxPD_CAN_SKIP           0x0080
 
-/*
- * wxDirDialog styles
- */
-
-#define wxDD_NEW_DIR_BUTTON     0x0080
 
 /*
  * extended dialog specifiers. these values are stored in a different
@@ -1616,10 +1766,8 @@ enum wxBackgroundStyle
 /*  Standard menu IDs */
 enum
 {
-#if wxABI_VERSION >= 20602
     /* no id matches this one when compared to it */
     wxID_NONE = -3,
-#endif
 
     /*  id for a separator line in the menu (invalid for normal item) */
     wxID_SEPARATOR = -2,
@@ -1801,11 +1949,8 @@ enum wxHitTest
 #define wxSIZE_ALLOW_MINUS_ONE  0x0004
 /*  Don't do parent client adjustments (for implementation only) */
 #define wxSIZE_NO_ADJUSTMENTS   0x0008
-
-#if wxABI_VERSION >= 20602
 /*  Change the window position even if it seems to be already correct */
 #define wxSIZE_FORCE            0x0010
-#endif // 2.6.2+
 
 /*  ---------------------------------------------------------------------------- */
 /*  GDI descriptions */
@@ -1969,8 +2114,6 @@ enum wxKeyCode
     WXK_MENU,
     WXK_PAUSE,
     WXK_CAPITAL,
-    WXK_PRIOR,  /*  Page up */
-    WXK_NEXT,   /*  Page down */
     WXK_END,
     WXK_HOME,
     WXK_LEFT,
@@ -2027,6 +2170,10 @@ enum wxKeyCode
     WXK_SCROLL,
     WXK_PAGEUP,
     WXK_PAGEDOWN,
+#if WXWIN_COMPATIBILITY_2_6
+    WXK_PRIOR = WXK_PAGEUP,
+    WXK_NEXT  = WXK_PAGEDOWN,
+#endif
 
     WXK_NUMPAD_SPACE,
     WXK_NUMPAD_TAB,
@@ -2040,10 +2187,12 @@ enum wxKeyCode
     WXK_NUMPAD_UP,
     WXK_NUMPAD_RIGHT,
     WXK_NUMPAD_DOWN,
-    WXK_NUMPAD_PRIOR,
     WXK_NUMPAD_PAGEUP,
-    WXK_NUMPAD_NEXT,
     WXK_NUMPAD_PAGEDOWN,
+#if WXWIN_COMPATIBILITY_2_6
+    WXK_NUMPAD_PRIOR = WXK_NUMPAD_PAGEUP,
+    WXK_NUMPAD_NEXT  = WXK_NUMPAD_PAGEDOWN,
+#endif
     WXK_NUMPAD_END,
     WXK_NUMPAD_BEGIN,
     WXK_NUMPAD_INSERT,
@@ -2084,16 +2233,23 @@ enum wxKeyCode
     WXK_SPECIAL20
 };
 
-#if wxUSE_HOTKEY
-enum wxHotkeyModifier
+/* This enum contains bit mask constants used in wxKeyEvent */
+enum wxKeyModifier
 {
-    wxMOD_NONE = 0,
-    wxMOD_ALT = 1,
-    wxMOD_CONTROL = 2,
-    wxMOD_SHIFT = 4,
-    wxMOD_WIN = 8
-};
+    wxMOD_NONE      = 0x0000,
+    wxMOD_ALT       = 0x0001,
+    wxMOD_CONTROL   = 0x0002,
+    wxMOD_ALTGR     = wxMOD_ALT | wxMOD_CONTROL,
+    wxMOD_SHIFT     = 0x0004,
+    wxMOD_META      = 0x0008,
+    wxMOD_WIN       = wxMOD_META,
+#if defined(__WXMAC__) || defined(__WXCOCOA__)
+    wxMOD_CMD       = wxMOD_META,
+#else
+    wxMOD_CMD       = wxMOD_CONTROL,
 #endif
+    wxMOD_ALL       = 0xffff
+};
 
 /*  Mapping modes (same values as used by Windows, don't change) */
 enum
@@ -2551,6 +2707,11 @@ typedef int             (__stdcall *WXFARPROC)();
 #endif /*  __WIN32__ */
 
 
+#if defined(__OS2__)
+typedef unsigned long   DWORD;
+typedef unsigned short  WORD;
+#endif
+
 #if defined(__WXPM__) || defined(__EMX__)
 #ifdef __WXPM__
 /*  Stand-ins for OS/2 types, to avoid #including all of os2.h */
@@ -2611,8 +2772,6 @@ typedef unsigned long   HCURSOR;
 typedef unsigned long   HINSTANCE;
 typedef unsigned long   HIMAGELIST;
 typedef unsigned long   HGLOBAL;
-typedef unsigned long   DWORD;
-typedef unsigned short  WORD;
 #endif /*  WXPM || EMX */
 
 #if defined (__WXPM__)
@@ -2737,6 +2896,7 @@ typedef struct _GtkAccelGroup     GtkAccelGroup;
 typedef struct _GtkItemFactory    GtkItemFactory;
 typedef struct _GtkSelectionData  GtkSelectionData;
 typedef struct _GtkTextBuffer     GtkTextBuffer;
+typedef struct _GtkRange          GtkRange;
 
 typedef GtkWidget *WXWidget;
 
@@ -2745,6 +2905,16 @@ typedef GtkWidget *WXWidget;
 #define GTK_CLASS_TYPE(klass) ((klass)->type)
 #endif
 
+#ifdef __WXGTK20__
+#define G_DISABLE_DEPRECATED
+#define PANGO_DISABLE_DEPRECATED
+#define GDK_PIXBUF_DISABLE_DEPRECATED
+#ifndef __VMS
+/* GtkCombo is not defined on VMS if this is defined */
+# define GTK_DISABLE_DEPRECATED
+#endif
+#endif
+
 #endif /*  __WXGTK__ */
 
 #if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE)
@@ -2811,5 +2981,32 @@ typedef struct window_t *WXWidget;
     private:                                    \
         classname& operator=(const classname&);
 
+/*  --------------------------------------------------------------------------- */
+/*  If a manifest is being automatically generated, add common controls 6 to it */
+/*  --------------------------------------------------------------------------- */
+
+#if (!defined wxUSE_NO_MANIFEST || wxUSE_NO_MANIFEST == 0 ) && \
+    ( defined _MSC_FULL_VER && _MSC_FULL_VER >= 140040130 )
+
+#define WX_CC_MANIFEST(cpu)                     \
+    "/manifestdependency:\"type='win32'         \
+     name='Microsoft.Windows.Common-Controls'   \
+     version='6.0.0.0'                          \
+     processorArchitecture='"cpu"'              \
+     publicKeyToken='6595b64144ccf1df'          \
+     language='*'\""
+
+#if defined _M_IX86
+    #pragma comment(linker, WX_CC_MANIFEST("x86"))
+#elif defined _M_X64
+    #pragma comment(linker, WX_CC_MANIFEST("amd64"))
+#elif defined _M_IA64
+    #pragma comment(linker, WX_CC_MANIFEST("ia64"))
+#else
+    #pragma comment(linker, WX_CC_MANIFEST("*"))
+#endif
+
+#endif /* !wxUSE_NO_MANIFEST && _MSC_FULL_VER >= 140040130 */
+
 #endif
     /*  _WX_DEFS_H_ */