X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/65fd5cb0124e62ab1fc41f93382a205d95b00e75..45016e1a6bfed375993470efa844b94a42a41c73:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index f99ef2326b..d17af9918c 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -91,14 +91,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 +115,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 +131,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 +188,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 @@ -211,6 +214,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 +233,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 +300,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__) + #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__) @@ -443,7 +481,8 @@ enum wxMOTIF_X, // OSF Motif 1.x.x wxCOSE_X, // OSF Common Desktop Environment wxNEXTSTEP, // NeXTStep - wxMACINTOSH, // Apple System 7 + wxMACINTOSH, // Apple System 7 and 8 + wxBEOS, // BeOS wxGTK, // GTK on X wxGTK_WIN32, // GTK on Win32 wxGTK_OS2, // GTK on OS/2 @@ -460,7 +499,8 @@ 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 }; // ---------------------------------------------------------------------------- @@ -578,6 +618,67 @@ enum #define wxINT32_SWAP_ON_BE(val) (val) #endif +// ---------------------------------------------------------------------------- +// Geometric flags +// ---------------------------------------------------------------------------- + +enum wxGeometryCentre +{ + wxCENTRE = 0x0001, + wxCENTER = wxCENTRE +}; + +// centering into frame rather than screen (obsolete) +#define wxCENTER_FRAME 0x0000 +// centre on screen rather than parent +#define wxCENTRE_ON_SCREEN 0x0002 +#define wxCENTER_ON_SCREEN wxCENTRE_ON_SCREEN + +enum wxOrientation +{ + wxHORIZONTAL = 0x0004, + wxVERTICAL = 0x0008, + + wxBOTH = (wxVERTICAL | wxHORIZONTAL) +}; + +enum wxDirection +{ + wxLEFT = 0x0010, + wxRIGHT = 0x0020, + wxUP = 0x0040, + wxDOWN = 0x0080, + + wxTOP = wxUP, + wxBOTTOM = wxDOWN, + + wxNORTH = wxUP, + wxSOUTH = wxDOWN, + wxWEST = wxLEFT, + wxEAST = wxRIGHT, + + wxALL = (wxUP | wxDOWN | wxRIGHT | wxLEFT) +}; + +enum wxAlignment +{ + wxALIGN_NOT = 0x0000, + wxALIGN_CENTER = 0x0100, + wxALIGN_CENTRE = wxALIGN_CENTER, + wxALIGN_LEFT = wxALIGN_NOT, + wxALIGN_TOP = wxALIGN_NOT, + wxALIGN_RIGHT = 0x0200, + wxALIGN_BOTTOM = 0x0400 +}; + +enum wxStretch +{ + wxSTRETCH_NOT = 0x0000, + wxSHRINK = 0x1000, + wxGROW = 0x2000, + wxEXPAND = wxGROW +}; + // ---------------------------------------------------------------------------- // Window style flags // ---------------------------------------------------------------------------- @@ -715,13 +816,7 @@ enum * Apply to all panel items */ #define wxCOLOURED 0x0800 -// Alignment for panel item labels: replaces characters with zeros -// when creating label, so spaces can be included in string for alignment. #define wxFIXED_LENGTH 0x0400 -#define wxALIGN_LEFT 0x0000 -#define wxALIGN_CENTER 0x0100 -#define wxALIGN_CENTRE 0x0100 -#define wxALIGN_RIGHT 0x0200 /* * Styles for wxListBox @@ -749,6 +844,8 @@ enum // 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 @@ -780,16 +877,16 @@ enum #define wxGA_HORIZONTAL wxHORIZONTAL #define wxGA_VERTICAL wxVERTICAL // Windows only -#define wxGA_SMOOTH 0x0008 +#define wxGA_SMOOTH 0x0010 /* * 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 @@ -886,6 +983,9 @@ enum * wxNotebook flags */ #define wxNB_FIXEDWIDTH 0x0008 +#define wxNB_LEFT 0x0020 +#define wxNB_RIGHT 0x0040 +#define wxNB_BOTTOM 0x0080 /* * wxStatusBar95 flags @@ -920,33 +1020,32 @@ enum * values do not correspond to the return values of the dialogs (for * those values, look at the wxID_XXX defines). */ -#define wxOK 0x00000001 -#define wxYES_NO 0x00000002 -#define wxCANCEL 0x00000004 -#define wxYES 0x00000008 -#define wxNO 0x00000010 -#define wxNO_DEFAULT 0x00000020 + +// wxCENTRE already defined as 0x00000001 +#define wxOK 0x00000004 +#define wxYES_NO 0x00000008 +#define wxCANCEL 0x00000010 +#define wxYES 0x00000020 +#define wxNO 0x00000040 +#define wxNO_DEFAULT 0x00000080 #define wxYES_DEFAULT 0x00000000 // has no effect -#define wxICON_EXCLAMATION 0x00000040 -#define wxICON_HAND 0x00000080 +#define wxICON_EXCLAMATION 0x00000100 +#define wxICON_HAND 0x00000200 #define wxICON_WARNING wxICON_EXCLAMATION #define wxICON_ERROR wxICON_HAND -#define wxICON_QUESTION 0x00000100 -#define wxICON_INFORMATION 0x00000200 +#define wxICON_QUESTION 0x00000400 +#define wxICON_INFORMATION 0x00000800 #define wxICON_STOP wxICON_HAND #define wxICON_ASTERISK wxICON_INFORMATION -#define wxICON_MASK (0x00000040|0x00000080|0x00000100|0x00000200) - -#define wxCENTRE 0x00000400 -#define wxCENTER wxCENTRE +#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800) -#define wxFORWARD 0x00000800 -#define wxBACKWARD 0x00001000 -#define wxRESET 0x00002000 -#define wxHELP 0x00004000 -#define wxMORE 0x00008000 -#define wxSETUP 0x00010000 +#define wxFORWARD 0x00001000 +#define wxBACKWARD 0x00002000 +#define wxRESET 0x00004000 +#define wxHELP 0x00008000 +#define wxMORE 0x00010000 +#define wxSETUP 0x00020000 // ---------------------------------------------------------------------------- // standard IDs @@ -1006,35 +1105,10 @@ enum #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 -// ---------------------------------------------------------------------------- -// Orientations and directions -// ---------------------------------------------------------------------------- - -enum wxOrientation -{ - wxHORIZONTAL = 0x0001, - wxVERTICAL = 0x0002, - wxBOTH = (wxVERTICAL | wxHORIZONTAL) -}; - -enum wxDirection -{ - wxLEFT = 0x0010, - wxRIGHT = 0x0020, - wxUP = 0x0040, - wxDOWN = 0x0080 -}; - -// wxCENTRE = 0x0400 (defined above) - -// centering into frame rather than screen (obsolete) -#define wxCENTER_FRAME 0x0000 -// centre on screen rather than parent -#define wxCENTRE_ON_SCREEN 0x0004 -#define wxCENTER_ON_SCREEN wxCENTRE_ON_SCREEN - // ---------------------------------------------------------------------------- // Possible SetSize flags // ---------------------------------------------------------------------------- @@ -1433,8 +1507,15 @@ 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 +#endif typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; typedef void * WXMSG;