X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c75d190a0ac1671b1d2af75ba8928716d77bf823..a893b65e6282e4b96126b3fd22eeab43d446be4b:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 7d360b82fd..9739fbf260 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -1,11 +1,11 @@ /** -* 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) * Created: 01/02/97 * RCS-ID: $Id$ -* Copyright: (c) +* Copyright: (c) Julian Smart * Licence: wxWindows licence */ @@ -20,8 +20,6 @@ #include "wx/platform.h" -/* RN - only double-check the environment when building in C++ - Shouldn't configure pass the environment to all sub-libs too? */ #ifdef __cplusplus /* Make sure the environment is set correctly */ # if defined(__WXMSW__) && defined(__X__) @@ -67,18 +65,32 @@ #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 */ @@ -95,6 +107,19 @@ # 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 */ /* ---------------------------------------------------------------------------- */ @@ -153,7 +178,7 @@ #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__) @@ -172,6 +197,7 @@ #endif /* compilers */ #endif /* HAVE_BOOL */ +#if !defined(__MWERKS__) || !defined(true) #if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS) /* NB: of course, this doesn't replace the standard type, because, for */ /* example, overloading based on bool/int parameter doesn't work and */ @@ -187,6 +213,7 @@ #define true ((bool)1) #define false ((bool)0) #endif +#endif /* for backwards compatibility, also define TRUE and FALSE */ /* */ @@ -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 + 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(x) + +#elif defined(__cplusplus) && defined(__VISUALC__) && __VISUALC__ >= 1310 + template + 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(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) @@ -515,6 +583,20 @@ typedef int wxWindowID; #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) #endif +/* some arguments are not used in unicode mode */ +#if wxUSE_UNICODE + #define WXUNUSED_IN_UNICODE(param) WXUNUSED(param) +#else + #define WXUNUSED_IN_UNICODE(param) param +#endif + +/* some arguments are not used in WinCE build */ +#ifdef __WXWINCE__ + #define WXUNUSED_IN_WINCE(param) WXUNUSED(param) +#else + #define WXUNUSED_IN_WINCE(param) param +#endif + /* some compilers give warning about a possibly unused variable if it is */ /* initialized in both branches of if/else and shut up if it is initialized */ /* when declared, but other compilers then give warnings about unused variable */ @@ -559,7 +641,7 @@ typedef int wxWindowID; #define except(x) catch(...) #endif /* Metrowerks */ -#if defined(__WATCOMC__) +#if wxONLY_WATCOM_EARLIER_THAN(1,4) typedef short mode_t; #endif @@ -614,7 +696,27 @@ enum wxMGL_DOS, /* MGL on MS-DOS */ wxWINDOWS_OS2, /* Native OS/2 PM */ wxUNIX, /* wxBase under Unix */ - wxX11 /* Plain X11 and Universal widgets */ + wxX11, /* Plain X11 and Universal widgets */ + wxPALMOS, /* PalmOS */ + 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 }; /* ---------------------------------------------------------------------------- */ @@ -622,14 +724,7 @@ enum /* ---------------------------------------------------------------------------- */ /* the type for screen and DC coordinates */ - -#if wxUSE_COMPATIBLE_COORD_TYPES - /* to ensure compatibility with 2.0, we must use long */ - #define wxCoord long -#else /* !wxUSE_COMPATIBLE_COORD_TYPES */ - /* other platforms we support have at least 32bit int - quite enough */ - typedef int wxCoord; -#endif /* wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES */ +typedef int wxCoord; enum { wxDefaultCoord = -1 }; @@ -637,6 +732,10 @@ enum { wxDefaultCoord = -1 }; /* define fixed length types */ /* ---------------------------------------------------------------------------- */ +#if defined(__WXPALMOS__) || defined(__MINGW32__) + #include +#endif + /* chars are always one byte (by definition), shorts are always two (in */ /* practice) */ @@ -824,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*/ @@ -881,17 +996,20 @@ inline void *wxUIntToPtr(wxUIntPtr p) #elif defined(__BORLANDC__) && defined(__WIN32__) && (__BORLANDC__ >= 0x520) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("Ld") -#elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__))) + #define wxLongLongFmtSpec _T("L") +#elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__) || defined(__OS2__))) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("Ld") + #define wxLongLongFmtSpec _T("L") #elif defined(__DIGITALMARS__) #define wxLongLong_t __int64 #define wxLongLongSuffix LL #define wxLongLongFmtSpec _T("ll") +#elif defined(__MINGW32__) + #define wxLongLong_t long long + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("I64") #elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ - defined(__MINGW32__) || \ defined(__GNUC__) || \ defined(__CYGWIN__) || \ defined(__WXMICROWIN__) || \ @@ -927,13 +1045,29 @@ 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 /* Make sure ssize_t is defined (a signed type the same size as size_t) */ /* HAVE_SSIZE_T should be defined for compiliers that already have it */ #ifdef __MINGW32__ - #include #if defined(_SSIZE_T_) && !defined(HAVE_SSIZE_T) #define HAVE_SSIZE_T #endif @@ -941,6 +1075,9 @@ inline void *wxUIntToPtr(wxUIntPtr p) #if defined(__PALMOS__) && !defined(HAVE_SSIZE_T) #define HAVE_SSIZE_T #endif +#if wxCHECK_WATCOM_VERSION(1,4) + #define HAVE_SSIZE_T +#endif #ifndef HAVE_SSIZE_T #if SIZEOF_SIZE_T == 4 typedef wxInt32 ssize_t; @@ -1086,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) | \ @@ -1119,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) @@ -1130,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 /* ---------------------------------------------------------------------------- */ @@ -1152,10 +1293,11 @@ enum wxGeometryCentre enum wxOrientation { + /* don't change the values of these elements, they are used elsewhere */ wxHORIZONTAL = 0x0004, wxVERTICAL = 0x0008, - wxBOTH = (wxVERTICAL | wxHORIZONTAL) + wxBOTH = wxVERTICAL | wxHORIZONTAL }; enum wxDirection @@ -1231,6 +1373,13 @@ enum wxBorder wxBORDER_MASK = 0x1f200000 }; +/* This makes it easier to specify a 'normal' border for a control */ +#if defined(__SMARTPHONE__) || defined(__POCKETPC__) +#define wxDEFAULT_CONTROL_BORDER wxBORDER_SIMPLE +#else +#define wxDEFAULT_CONTROL_BORDER wxBORDER_SUNKEN +#endif + /* ---------------------------------------------------------------------------- */ /* Window style flags */ /* ---------------------------------------------------------------------------- */ @@ -1316,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()) @@ -1401,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 @@ -1437,24 +1595,6 @@ enum wxBorder #define wxRB_SINGLE 0x0008 #define wxRB_USE_CHECKBOX 0x0010 /* alternative native control (wxPalmOS) */ -/* - * wxSlider flags - */ -#define wxSL_HORIZONTAL wxHORIZONTAL /* 4 */ -#define wxSL_VERTICAL wxVERTICAL /* 8 */ -/* The next one is obsolete - use scroll events instead */ -#define wxSL_NOTIFY_DRAG 0x0000 -#define wxSL_TICKS 0x0010 -#define wxSL_AUTOTICKS wxSL_TICKS /* we don't support manual ticks */ -#define wxSL_LABELS 0x0020 -#define wxSL_LEFT 0x0040 -#define wxSL_TOP 0x0080 -#define wxSL_RIGHT 0x0100 -#define wxSL_BOTTOM 0x0200 -#define wxSL_BOTH 0x0400 -#define wxSL_SELRANGE 0x0800 -#define wxSL_INVERSE 0x1000 - /* * wxScrollBar flags */ @@ -1472,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 @@ -1526,6 +1687,8 @@ enum wxBorder * wxStaticText flags */ #define wxST_NO_AUTORESIZE 0x0001 +#define wxST_DOTS_MIDDLE 0x0002 +#define wxST_DOTS_END 0x0004 /* * wxStaticBitmap flags @@ -1550,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 @@ -1605,22 +1763,21 @@ enum wxBackgroundStyle /* standard IDs */ /* ---------------------------------------------------------------------------- */ -/* any id: means that we don't care about the id, whether when installing an */ -/* event handler or when creating a new window */ +/* Standard menu IDs */ enum { - wxID_ANY = -1 -}; + /* no id matches this one when compared to it */ + wxID_NONE = -3, -/* id for a separator line in the menu (invalid for normal item) */ -enum -{ - wxID_SEPARATOR = -2 -}; + /* id for a separator line in the menu (invalid for normal item) */ + wxID_SEPARATOR = -2, -/* Standard menu IDs */ -enum -{ + /* any id: means that we don't care about the id, whether when installing + * an event handler or when creating a new window */ + wxID_ANY = -1, + + + /* all predefined ids are between wxID_LOWEST and wxID_HIGHEST */ wxID_LOWEST = 4999, wxID_OPEN, @@ -1792,6 +1949,8 @@ enum wxHitTest #define wxSIZE_ALLOW_MINUS_ONE 0x0004 /* Don't do parent client adjustments (for implementation only) */ #define wxSIZE_NO_ADJUSTMENTS 0x0008 +/* Change the window position even if it seems to be already correct */ +#define wxSIZE_FORCE 0x0010 /* ---------------------------------------------------------------------------- */ /* GDI descriptions */ @@ -1904,7 +2063,7 @@ enum wxTOOL_RIGHT }; -/* the values of the format constants should be the same as correspondign */ +/* the values of the format constants should be the same as corresponding */ /* CF_XXX constants in Windows API */ enum wxDataFormatId { @@ -1940,7 +2099,7 @@ enum wxKeyCode WXK_SPACE = 32, WXK_DELETE = 127, - /* These are, by design, not compatable with unicode characters. + /* These are, by design, not compatible with unicode characters. If you want to get a unicode character from a key event, use wxKeyEvent::GetUnicodeKey instead. */ WXK_START = 300, @@ -1955,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, @@ -2013,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, @@ -2026,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, @@ -2045,19 +2208,48 @@ enum wxKeyCode WXK_WINDOWS_LEFT, WXK_WINDOWS_RIGHT, WXK_WINDOWS_MENU , - WXK_COMMAND + WXK_COMMAND, + + /* Hardware-specific buttons */ + WXK_SPECIAL1 = 193, + WXK_SPECIAL2, + WXK_SPECIAL3, + WXK_SPECIAL4, + WXK_SPECIAL5, + WXK_SPECIAL6, + WXK_SPECIAL7, + WXK_SPECIAL8, + WXK_SPECIAL9, + WXK_SPECIAL10, + WXK_SPECIAL11, + WXK_SPECIAL12, + WXK_SPECIAL13, + WXK_SPECIAL14, + WXK_SPECIAL15, + WXK_SPECIAL16, + WXK_SPECIAL17, + WXK_SPECIAL18, + WXK_SPECIAL19, + 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 @@ -2147,8 +2339,58 @@ typedef enum wxPAPER_B5_EXTRA, /* B5 (ISO) Extra 201 x 276 mm */ wxPAPER_A2, /* A2 420 x 594 mm */ wxPAPER_A3_TRANSVERSE, /* A3 Transverse 297 x 420 mm */ - wxPAPER_A3_EXTRA_TRANSVERSE /* A3 Extra Transverse 322 x 445 mm */ - + wxPAPER_A3_EXTRA_TRANSVERSE, /* A3 Extra Transverse 322 x 445 mm */ + + wxPAPER_DBL_JAPANESE_POSTCARD,/* Japanese Double Postcard 200 x 148 mm */ + wxPAPER_A6, /* A6 105 x 148 mm */ + wxPAPER_JENV_KAKU2, /* Japanese Envelope Kaku #2 */ + wxPAPER_JENV_KAKU3, /* Japanese Envelope Kaku #3 */ + wxPAPER_JENV_CHOU3, /* Japanese Envelope Chou #3 */ + wxPAPER_JENV_CHOU4, /* Japanese Envelope Chou #4 */ + wxPAPER_LETTER_ROTATED, /* Letter Rotated 11 x 8 1/2 in */ + wxPAPER_A3_ROTATED, /* A3 Rotated 420 x 297 mm */ + wxPAPER_A4_ROTATED, /* A4 Rotated 297 x 210 mm */ + wxPAPER_A5_ROTATED, /* A5 Rotated 210 x 148 mm */ + wxPAPER_B4_JIS_ROTATED, /* B4 (JIS) Rotated 364 x 257 mm */ + wxPAPER_B5_JIS_ROTATED, /* B5 (JIS) Rotated 257 x 182 mm */ + wxPAPER_JAPANESE_POSTCARD_ROTATED,/* Japanese Postcard Rotated 148 x 100 mm */ + wxPAPER_DBL_JAPANESE_POSTCARD_ROTATED,/* Double Japanese Postcard Rotated 148 x 200 mm */ + wxPAPER_A6_ROTATED, /* A6 Rotated 148 x 105 mm */ + wxPAPER_JENV_KAKU2_ROTATED, /* Japanese Envelope Kaku #2 Rotated */ + wxPAPER_JENV_KAKU3_ROTATED, /* Japanese Envelope Kaku #3 Rotated */ + wxPAPER_JENV_CHOU3_ROTATED, /* Japanese Envelope Chou #3 Rotated */ + wxPAPER_JENV_CHOU4_ROTATED, /* Japanese Envelope Chou #4 Rotated */ + wxPAPER_B6_JIS, /* B6 (JIS) 128 x 182 mm */ + wxPAPER_B6_JIS_ROTATED, /* B6 (JIS) Rotated 182 x 128 mm */ + wxPAPER_12X11, /* 12 x 11 in */ + wxPAPER_JENV_YOU4, /* Japanese Envelope You #4 */ + wxPAPER_JENV_YOU4_ROTATED, /* Japanese Envelope You #4 Rotated */ + wxPAPER_P16K, /* PRC 16K 146 x 215 mm */ + wxPAPER_P32K, /* PRC 32K 97 x 151 mm */ + wxPAPER_P32KBIG, /* PRC 32K(Big) 97 x 151 mm */ + wxPAPER_PENV_1, /* PRC Envelope #1 102 x 165 mm */ + wxPAPER_PENV_2, /* PRC Envelope #2 102 x 176 mm */ + wxPAPER_PENV_3, /* PRC Envelope #3 125 x 176 mm */ + wxPAPER_PENV_4, /* PRC Envelope #4 110 x 208 mm */ + wxPAPER_PENV_5, /* PRC Envelope #5 110 x 220 mm */ + wxPAPER_PENV_6, /* PRC Envelope #6 120 x 230 mm */ + wxPAPER_PENV_7, /* PRC Envelope #7 160 x 230 mm */ + wxPAPER_PENV_8, /* PRC Envelope #8 120 x 309 mm */ + wxPAPER_PENV_9, /* PRC Envelope #9 229 x 324 mm */ + wxPAPER_PENV_10, /* PRC Envelope #10 324 x 458 mm */ + wxPAPER_P16K_ROTATED, /* PRC 16K Rotated */ + wxPAPER_P32K_ROTATED, /* PRC 32K Rotated */ + wxPAPER_P32KBIG_ROTATED, /* PRC 32K(Big) Rotated */ + wxPAPER_PENV_1_ROTATED, /* PRC Envelope #1 Rotated 165 x 102 mm */ + wxPAPER_PENV_2_ROTATED, /* PRC Envelope #2 Rotated 176 x 102 mm */ + wxPAPER_PENV_3_ROTATED, /* PRC Envelope #3 Rotated 176 x 125 mm */ + wxPAPER_PENV_4_ROTATED, /* PRC Envelope #4 Rotated 208 x 110 mm */ + wxPAPER_PENV_5_ROTATED, /* PRC Envelope #5 Rotated 220 x 110 mm */ + wxPAPER_PENV_6_ROTATED, /* PRC Envelope #6 Rotated 230 x 120 mm */ + wxPAPER_PENV_7_ROTATED, /* PRC Envelope #7 Rotated 230 x 160 mm */ + wxPAPER_PENV_8_ROTATED, /* PRC Envelope #8 Rotated 309 x 120 mm */ + wxPAPER_PENV_9_ROTATED, /* PRC Envelope #9 Rotated 324 x 229 mm */ + wxPAPER_PENV_10_ROTATED /* PRC Envelope #10 Rotated 458 x 324 m */ } wxPaperSize; /* Printing orientation */ @@ -2218,6 +2460,20 @@ enum wxUpdateUI # define wxALL_FILES gettext_noop("All files (*)|*") #endif +#if defined(__CYGWIN__) && defined(__WXMSW__) +# if wxUSE_STL || defined(wxUSE_STD_STRING) + /* + NASTY HACK because the gethostname in sys/unistd.h which the gnu + stl includes and wx builds with by default clash with each other + (windows version 2nd param is int, sys/unistd.h version is unsigned + int). + */ +# define gethostname gethostnameHACK +# include +# undef gethostname +# endif +#endif + /* --------------------------------------------------------------------------- */ /* macros that enable wxWidgets apps to be compiled in absence of the */ /* sytem headers, although some platform specific types are used in the */ @@ -2231,8 +2487,6 @@ enum wxUpdateUI typedef unsigned char WXCOLORREF[6]; typedef void* WXCGIMAGEREF; typedef void* WXHBITMAP; -//typedef void* WXHMETAFILE; -//typedef void* WXHICON; typedef void* WXHCURSOR; typedef void* WXHRGN; typedef void* WXRECTPTR; @@ -2359,6 +2613,7 @@ typedef WX_NSView WXWidget; /* wxWidgets BASE definition */ #if defined(__WXPALMOS__) +typedef void * WXHWND; typedef void * WXHANDLE; typedef void * WXHICON; typedef void * WXHFONT; @@ -2381,13 +2636,18 @@ typedef unsigned short WXWORD; typedef unsigned long WXCOLORREF; typedef struct tagMSG WXMSG; -typedef WinHandle WXWINHANDLE; +typedef WXHWND WXWINHANDLE; /* WinHandle of PalmOS */ typedef WXWINHANDLE WXWidget; +typedef void * WXFORMPTR; +typedef void * WXEVENTPTR; +typedef void * WXRECTANGLEPTR; + #endif /* __WXPALMOS__ */ -#if defined(__WXMSW__) +/* ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port */ +#if defined(__WIN32__) /* the keywords needed for WinMain() declaration */ #ifndef WXFAR @@ -2405,6 +2665,7 @@ typedef void * WXHBRUSH; typedef void * WXHPALETTE; typedef void * WXHCURSOR; typedef void * WXHRGN; +typedef void * WXRECTPTR; typedef void * WXHACCEL; typedef void WXFAR * WXHINSTANCE; typedef void * WXHBITMAP; @@ -2438,14 +2699,19 @@ typedef long WXLPARAM; typedef long WXLRESULT; #endif -#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXMICROWIN__) +#if defined(__GNUWIN32__) || defined(__WXMICROWIN__) typedef int (*WXFARPROC)(); #else typedef int (__stdcall *WXFARPROC)(); #endif -#endif /* __WXMSW__ */ +#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 */ @@ -2506,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__) @@ -2570,6 +2834,7 @@ typedef void* WXRegion; typedef void* WXFont; typedef void* WXImage; typedef void* WXFontList; +typedef void* WXFontSet; typedef void* WXRendition; typedef void* WXRenderTable; typedef void* WXFontType; /* either a XmFontList or XmRenderTable */ @@ -2631,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; @@ -2639,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) @@ -2705,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_ */