X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d597fcb781bf227d327191f2a8d2fdf1c20368f7..7b65ea1af911e4ba65c47e2ed4f3138367b2bdbb:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 49fba4af54..ed28273f39 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -47,10 +47,6 @@ #endif #endif // Sun - #if defined(__hpux) && !defined(__HPUX__) - #define __HPUX__ - #endif // HP-UX - #elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) ) // MacOS #elif defined(__OS2__) @@ -91,14 +87,18 @@ // suppress some Visual C++ warnings #ifdef __VISUALC__ +# pragma warning(disable:4201) // nonstandard extension used: nameless struct/union # pragma warning(disable:4244) // conversion from double to float # pragma warning(disable:4100) // unreferenced formal parameter # pragma warning(disable:4511) // copy ctor couldn't be generated # pragma warning(disable:4512) // operator=() couldn't be generated -#ifndef WIN32 +# pragma warning(disable:4699) // Using precompiled header # pragma warning(disable:4134) // conversion between pointers to members of same class +#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 #endif // __VISUALC__ @@ -111,13 +111,11 @@ # pragma suppress 571 // Virtual function hiding #endif // __SALFORDC__ -#ifdef __VISUALC__ -#ifndef WIN32 -// VC1.5 does not have LPTSTR type -#define LPTSTR LPSTR -#define LPCTSTR LPCSTR -#endif -#endif +#if defined(__VISUALC__) && !defined(WIN32) + // VC1.5 does not have LPTSTR type + #define LPTSTR LPSTR + #define LPCTSTR LPCSTR +#endif // VC++ 1.5 // Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, // so define it ourselves @@ -129,11 +127,11 @@ #if defined(__HPUX__) && defined(__GNUG__) #define va_list __gnuc_va_list #endif // HP-UX - + // Mingw32 gcc-2.95 uses new windows headers which are more ms-like // we are setting this define because of the complex check // using NORLANDER as Cygwin may follow. (header author is Anders Norlander) -#if defined(__MINGW32__) && (__GNUC__>=2) && (__GNUC_MINOR__>=95) +#if defined(__MINGW32__) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))) # define wxUSE_NORLANDER_HEADERS 1 #endif @@ -186,8 +184,9 @@ // Make sure the environment is set correctly #if defined(__WXMSW__) && defined(__X__) #error "Target can't be both X and Windows" -#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && !defined(__WXPM__) && \ - !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__) +#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ + !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \ + !defined(__WXQT__) && !defined(__WXSTUBS__) && wxUSE_GUI #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXPM__|__WXSTUBS__]" #endif @@ -203,6 +202,12 @@ #undef PACKAGE #undef VERSION +// this has to be done after including setup.h which might +// define __HPUX__ 1 itself +#if defined(__hpux) && !defined(__HPUX__) + #define __HPUX__ +#endif // HP-UX + // if we're on a Unixsystem but didn't use configure (so that setup.h didn't // define __UNIX__), do define __UNIX__ now #if !defined(__UNIX__) && defined(__UNIX_LIKE__) @@ -211,6 +216,17 @@ #include "wx/version.h" +// ---------------------------------------------------------------------------- +// compatibility defines +// ---------------------------------------------------------------------------- + +// possibility to build non GUI apps is new, so don't burden ourselves with +// compatibility code +#if !wxUSE_GUI + #undef WXWIN_COMPATIBILITY_2 + #define WXWIN_COMPATIBILITY_2 0 +#endif // !GUI + // ============================================================================ // non portable C++ features // ============================================================================ @@ -219,27 +235,20 @@ // check for native bool type and TRUE/FALSE constants // ---------------------------------------------------------------------------- -#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXPM__) || defined(__WXSTUBS__) - // Bool is now obsolete, use bool instead - // typedef int Bool; +// define boolean constants if not done yet +#ifndef TRUE + #define TRUE 1 +#endif - #ifndef TRUE - #define TRUE 1 - #define FALSE 0 - #define Bool_DEFINED - #endif -#elif defined(__WXMSW__) - #ifndef TRUE - #define TRUE 1 - #define FALSE 0 - #endif -#endif // TRUE/FALSE +#ifndef FALSE + #define FALSE 0 +#endif // Add more tests here for Windows compilers that already define bool // (under Unix, configure tests for this) #ifndef HAVE_BOOL #if defined( __MWERKS__ ) - #if (__MWERKS__ >= 0x1000) && !__option(bool) + #if (__MWERKS__ >= 0x1000) && __option(bool) #define HAVE_BOOL #endif #elif defined(__VISUALC__) && (__VISUALC__ == 1020) @@ -293,9 +302,40 @@ typedef int wxWindowID; #define WXUNUSED(identifier) identifier #endif -/* - * Making or using wxWindows as a Windows DLL - */ +// ---------------------------------------------------------------------------- +// portable calling conventions macros +// ---------------------------------------------------------------------------- + +// wxCALLBACK should be used for the functions which are called back by +// Windows (such as compare function for wxListCtrl) +#if defined(__WXMSW__) + #if defined(__MINGW32__) || defined(__GNUWIN32__) + #define wxCALLBACK __attribute__((stdcall)) + #else + // both VC++ and Borland understand this + #define wxCALLBACK _stdcall + #endif +#else + // no stdcall under Unix + #define wxCALLBACK +#endif // platform + +// callling convention for the qsort(3) callback + +#if defined(__VISUALC__) + #define wxCMPFUNC_CONV _cdecl +#elif defined(__VISAGECPP__) + #define wxCMPFUNC_CONV _Optlink +#else // !Visual C++ + #define wxCMPFUNC_CONV +#endif // compiler + +// compatibility :-( +#define CMPFUNC_CONV wxCMPFUNC_CONV + +// ---------------------------------------------------------------------------- +// Making or using wxWindows as a Windows DLL +// ---------------------------------------------------------------------------- #if defined(__WXMSW__) @@ -461,13 +501,30 @@ enum wxMGL_UNIX, // MGL with direct hardware access wxMGL_X, // MGL on X wxMGL_WIN32, // MGL on Win32 - wxMGL_OS2 // MGL on OS/2 + wxMGL_OS2, // MGL on OS/2 + wxWINDOWS_OS2 // Native OS/2 PM }; // ---------------------------------------------------------------------------- -// machine specific settings +// standard wxWindows types // ---------------------------------------------------------------------------- +// 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 + #ifdef __WIN16__ + // under Win16, int is too small, so use long to allow for bigger + // virtual canvases + typedef long wxCoord; + #else // !Win16 + // other platforms we support have at least 32bit int - quite enough + typedef int wxCoord; + #endif // Win16/!Win16 +#endif // wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES + // fixed length types #define wxInt8 char signed @@ -519,6 +576,10 @@ enum #define wxByte wxUint8 #define wxWord wxUint16 +// ---------------------------------------------------------------------------- +// byte ordering related definition and macros +// ---------------------------------------------------------------------------- + // byte sex #define wxBIG_ENDIAN 4321 @@ -599,7 +660,7 @@ enum wxOrientation { wxHORIZONTAL = 0x0004, wxVERTICAL = 0x0008, - + wxBOTH = (wxVERTICAL | wxHORIZONTAL) }; @@ -609,15 +670,15 @@ enum wxDirection wxRIGHT = 0x0020, wxUP = 0x0040, wxDOWN = 0x0080, - + wxTOP = wxUP, wxBOTTOM = wxDOWN, - + wxNORTH = wxUP, wxSOUTH = wxDOWN, wxWEST = wxLEFT, wxEAST = wxRIGHT, - + wxALL = (wxUP | wxDOWN | wxRIGHT | wxLEFT) }; @@ -805,6 +866,8 @@ enum wxStretch // this style means to use RICHEDIT control and does something only under wxMSW // and Win32 and is silently ignored under all other platforms #define wxTE_RICH 0x0080 +#define wxTE_NO_VSCROLL 0x0100 +#define wxTE_AUTO_SCROLL 0x0200 /* * wxComboBox style flags @@ -832,20 +895,20 @@ enum wxStretch /* * wxGauge flags */ -#define wxGA_PROGRESSBAR 0x0004 #define wxGA_HORIZONTAL wxHORIZONTAL #define wxGA_VERTICAL wxVERTICAL +#define wxGA_PROGRESSBAR 0x0010 // Windows only -#define wxGA_SMOOTH 0x0008 +#define wxGA_SMOOTH 0x0020 /* * wxSlider flags */ -#define wxSL_HORIZONTAL wxHORIZONTAL -#define wxSL_VERTICAL wxVERTICAL +#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_AUTOTICKS 0x0008 +#define wxSL_AUTOTICKS 0x0010 // #define wxSL_MANUALTICKS 0x0010 #define wxSL_LABELS 0x0020 #define wxSL_LEFT 0x0040 @@ -942,6 +1005,9 @@ enum wxStretch * wxNotebook flags */ #define wxNB_FIXEDWIDTH 0x0008 +#define wxNB_LEFT 0x0020 +#define wxNB_RIGHT 0x0040 +#define wxNB_BOTTOM 0x0080 /* * wxStatusBar95 flags @@ -1061,6 +1127,8 @@ enum wxStretch #define wxID_SETUP 5110 #define wxID_RESET 5111 +// IDs used by generic file dialog (11 consecutive starting from this value) +#define wxID_FILEDLGG 5900 #define wxID_HIGHEST 5999 // ---------------------------------------------------------------------------- @@ -1461,8 +1529,17 @@ typedef unsigned long WXHDC; typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; +#ifdef __WXMSW__ typedef unsigned int WXWPARAM; typedef long WXLPARAM; +#else +# define WXWPARAM MPARAM +# define WXLPARAM MPARAM +# define RECT RECTL +# define LOGFONT FATTRS +# define LOWORD SHORT1FROMMP +# define HIWORD SHORT2FROMMP +#endif typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; typedef void * WXMSG;