X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4b6f0b91ff0e646ff62968fa11418788f20ac7d1..bf57d1adacf489fb1a9a2167b909b279cdf3e0f6:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index f80688c80a..422f97d30a 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -16,6 +16,12 @@ #pragma interface "defs.h" #endif + +// needed to handle strings with xgettext: +#ifndef gettext_noop +# define gettext_noop(x) x +#endif + // ---------------------------------------------------------------------------- // compiler and OS identification // ---------------------------------------------------------------------------- @@ -47,10 +53,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 +93,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 +117,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,13 +133,15 @@ #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__==2) && (__GNUC_MINOR__>=95))) +#ifndef wxUSE_NORLANDER_HEADERS # define wxUSE_NORLANDER_HEADERS 1 #endif +#endif ////////////////////////////////////////////////////////////////////////////////// @@ -186,8 +192,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 +210,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 +224,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 +243,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) @@ -265,7 +282,9 @@ // Cygwin supports bool #define HAVE_BOOL #elif defined(__VISAGECPP__) - typedef unsigned long bool; + #if __IBMCPP__ < 400 + typedef unsigned long bool; + #endif #define HAVE_BOOL #endif // compilers #endif // HAVE_BOOL @@ -293,9 +312,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 +511,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 +586,10 @@ enum #define wxByte wxUint8 #define wxWord wxUint16 +// ---------------------------------------------------------------------------- +// byte ordering related definition and macros +// ---------------------------------------------------------------------------- + // byte sex #define wxBIG_ENDIAN 4321 @@ -599,7 +670,7 @@ enum wxOrientation { wxHORIZONTAL = 0x0004, wxVERTICAL = 0x0008, - + wxBOTH = (wxVERTICAL | wxHORIZONTAL) }; @@ -609,15 +680,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) }; @@ -734,7 +805,7 @@ enum wxStretch #else // Under Unix, the dialogs don't have a system menu. Specifying // wxSYSTEM_MENU here, will make a close button appear. -# define wxDEFAULT_DIALOG_STYLE (wxCAPTION) +# define wxDEFAULT_DIALOG_STYLE (wxCAPTION|wxTHICK_FRAME) #endif /* @@ -805,6 +876,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 +905,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 @@ -910,19 +983,19 @@ enum wxStretch /* * wxSpinButton flags */ -#define wxSP_VERTICAL 0x0004 -#define wxSP_HORIZONTAL 0x0008 -#define wxSP_ARROW_KEYS 0x0010 -#define wxSP_WRAP 0x0020 +#define wxSP_HORIZONTAL wxHORIZONTAL // 4 +#define wxSP_VERTICAL wxVERTICAL // 8 +#define wxSP_ARROW_KEYS 0x0010 +#define wxSP_WRAP 0x0020 /* * wxSplitterWindow flags */ -#define wxSP_NOBORDER 0x0000 -#define wxSP_3D 0x0004 -#define wxSP_BORDER 0x0008 -#define wxSP_PERMIT_UNSPLIT 0x0010 -#define wxSP_LIVE_UPDATE 0x0020 +#define wxSP_NOBORDER 0x0000 +#define wxSP_3D 0x0010 +#define wxSP_BORDER 0x0020 +#define wxSP_PERMIT_UNSPLIT 0x0040 +#define wxSP_LIVE_UPDATE 0x0080 /* * wxFrame extra flags @@ -934,19 +1007,27 @@ enum wxStretch * wxTabCtrl flags */ #define wxTC_MULTILINE 0x0000 -#define wxTC_RIGHTJUSTIFY 0x0004 -#define wxTC_FIXEDWIDTH 0x0008 -#define wxTC_OWNERDRAW 0x0010 +#define wxTC_RIGHTJUSTIFY 0x0010 +#define wxTC_FIXEDWIDTH 0x0020 +#define wxTC_OWNERDRAW 0x0040 /* * wxNotebook flags */ -#define wxNB_FIXEDWIDTH 0x0008 +#define wxNB_FIXEDWIDTH 0x0010 +#define wxNB_LEFT 0x0020 +#define wxNB_RIGHT 0x0040 +#define wxNB_BOTTOM 0x0080 /* * wxStatusBar95 flags */ -#define wxST_SIZEGRIP 0x0002 +#define wxST_SIZEGRIP 0x0010 + +/* + * wxStaticText flags + */ +#define wxST_NO_AUTORESIZE 0x0001 /* * wxStaticLine flags @@ -1061,6 +1142,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 // ---------------------------------------------------------------------------- @@ -1175,28 +1258,29 @@ typedef enum #define wxTOOL_LEFT 3 #define wxTOOL_RIGHT 4 - +// the values of the format constants should be the same as correspondign +// CF_XXX constants in Windows API enum wxDataFormatId { - wxDF_INVALID = 0, - wxDF_TEXT = 1, /* CF_TEXT */ - wxDF_BITMAP = 2, /* CF_BITMAP */ - wxDF_METAFILE = 3, /* CF_METAFILEPICT */ - wxDF_SYLK = 4, - wxDF_DIF = 5, - wxDF_TIFF = 6, - wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ - wxDF_DIB = 8, /* CF_DIB */ - wxDF_PALETTE = 9, - wxDF_PENDATA = 10, - wxDF_RIFF = 11, - wxDF_WAVE = 12, - wxDF_UNICODETEXT = 13, - wxDF_ENHMETAFILE = 14, - wxDF_FILENAME = 15, /* CF_HDROP */ - wxDF_LOCALE = 16, - wxDF_PRIVATE = 20, - wxDF_MAX + wxDF_INVALID = 0, + wxDF_TEXT = 1, /* CF_TEXT */ + wxDF_BITMAP = 2, /* CF_BITMAP */ + wxDF_METAFILE = 3, /* CF_METAFILEPICT */ + wxDF_SYLK = 4, + wxDF_DIF = 5, + wxDF_TIFF = 6, + wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ + wxDF_DIB = 8, /* CF_DIB */ + wxDF_PALETTE = 9, + wxDF_PENDATA = 10, + wxDF_RIFF = 11, + wxDF_WAVE = 12, + wxDF_UNICODETEXT = 13, + wxDF_ENHMETAFILE = 14, + wxDF_FILENAME = 15, /* CF_HDROP */ + wxDF_LOCALE = 16, + wxDF_PRIVATE = 20, + wxDF_MAX }; /* Virtual keycodes */ @@ -1434,6 +1518,16 @@ typedef enum { wxPRINT_MODE_PRINTER = 3 // Send to printer } wxPrintMode; +// --------------------------------------------------------------------------- +// Macro to specify "All Files" on different platforms +// --------------------------------------------------------------------------- +#if defined(__WXMSW__) +# define wxALL_FILES_PATTERN "*.*" +# define wxALL_FILES gettext_noop("All files (*.*)|*.*") +#else +# define wxALL_FILES_PATTERN "*" +# define wxALL_FILES gettext_noop("All files (*)|*") +#endif // --------------------------------------------------------------------------- // macros that enable wxWindows apps to be compiled in absence of the // sytem headers, although some platform specific types are used in the @@ -1461,8 +1555,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 // __WXMSW__ typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; typedef void * WXMSG; @@ -1480,6 +1583,7 @@ typedef unsigned long WXMSGID; typedef void* WXRESULT; typedef int (*WXFARPROC)(); // some windows handles not defined by PM +typedef unsigned long COLORREF; typedef unsigned long HANDLE; typedef unsigned long HICON; typedef unsigned long HFONT; @@ -1504,6 +1608,16 @@ typedef unsigned short WORD; #endif typedef WXHWND WXWidget; + +#if defined(__BORLANDC__) && !defined(__WIN32__) +#ifndef LPTSTR +#define LPTSTR LPSTR +#endif +#ifndef LPCTSTR +#define LPCTSTR LPSTR +#endif +#endif + #endif // MSW #ifdef __WXMOTIF__