#define _WX_DEFS_H_
#ifdef __GNUG__
-#pragma interface "defs.h"
+ #pragma interface "defs.h"
#endif
-#include <stddef.h>
-
-#include "wx/setup.h"
-
-#ifdef PACKAGE
- #undef PACKAGE
-#endif
-#ifdef VERSION
- #undef VERSION
-#endif
-
-#include "wx/version.h"
-
// ----------------------------------------------------------------------------
// compiler and OS identification
// ----------------------------------------------------------------------------
defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
defined(__EMX__)
- #ifndef __UNIX__
- #define __UNIX__
- #endif // Unix
+ #define __UNIX_LIKE__
// Helps SGI compilation, apparently
#ifdef __SGI__
#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) )
// MacOS
+#elif defined(__OS2__)
+ #if defined(__IBMCPP__)
+ #define __VISAGEAVER__ __IBMCPP__
+ #endif
+ #ifndef __WXOS2__
+ #define __WXOS2__
+ #endif
+ #ifndef __WXPM__
+ #define __WXPM__
+ #endif
+
+ // Place other OS/2 compiler environment defines here
+ #define LINKAGEMODE _Optlink
#else // Windows
#ifndef __WINDOWS__
#define __WINDOWS__
#endif // compiler
#endif // OS
+// LINKAGEMODE mode is empty for everyting except OS/2
+#ifndef LINKAGEMODE
+ #define LINKAGEMODE
+#endif // LINKAGEMODE
+
// 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__
# 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
#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)))
+# define wxUSE_NORLANDER_HEADERS 1
+#endif
+
+
//////////////////////////////////////////////////////////////////////////////////
// Currently Only MS-Windows/NT, XView and Motif are supported
//
#if defined(__WXMSW__) && defined(__X__)
#error "Target can't be both X and Windows"
#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \
- !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__)
- #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXSTUBS__]"
+ !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
+// ----------------------------------------------------------------------------
+// wxWindows options
+// ----------------------------------------------------------------------------
+
+#include <stddef.h>
+
+#include "wx/setup.h"
+
+// just in case they were defined in setup.h
+#undef PACKAGE
+#undef VERSION
+
+// 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__)
+ #define __UNIX__
+#endif // Unix
+
+#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
// ============================================================================
// check for native bool type and TRUE/FALSE constants
// ----------------------------------------------------------------------------
-#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || 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)
#elif defined(__GNUWIN32__)
// Cygwin supports bool
#define HAVE_BOOL
+ #elif defined(__VISAGECPP__)
+ typedef unsigned long bool;
+ #define HAVE_BOOL
#endif // compilers
#endif // HAVE_BOOL
#define WXUNUSED(identifier) identifier
#endif
-/*
- * Making or using wxWindows as a Windows DLL
- */
+// ----------------------------------------------------------------------------
+// portable calling conventions macros
+// ----------------------------------------------------------------------------
-#ifdef __WXMSW__
+// 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__)
// _declspec works in BC++ 5 and later, as well as VC++
#if defined(__VISUALC__) || defined(__BORLANDC__)
# define WXDLLEXPORT_CTORFN
# endif
+#elif defined(__WXPM__)
+
+# ifdef WXMAKINGDLL
+# define WXDLLEXPORT _Export
+# define WXDLLEXPORT_DATA(type) _Export type
+# define WXDLLEXPORT_CTORFN
+# elif defined(WXUSINGDLL)
+# define WXDLLEXPORT _Export
+# define WXDLLEXPORT_DATA(type) _Export type
+# define WXDLLEXPORT_CTORFN
+# else
+# define WXDLLEXPORT
+# define WXDLLEXPORT_DATA(type) type
+# define WXDLLEXPORT_CTORFN
+# endif
+
#else
# define WXDLLEXPORT
# define WXDLLEXPORT_DATA(type) type
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
wxWIN95, // Windows 95
wxWIN386, // Watcom 32-bit supervisor modus
wxMGL_UNIX, // MGL with direct hardware access
- wxMGL_X, // MGL on X
+ 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
};
// ----------------------------------------------------------------------------
// fixed length types
#define wxInt8 char signed
-#define wxUint8 char unsigned
+#define wxUint8 char unsigned
#ifdef __WIN16__
-#define wxInt16 int signed
-#define wxUint16 int unsigned
-#define wxInt32 long signed
-#define wxUint32 long unsigned
+#define wxInt16 int signed
+#define wxUint16 int unsigned
+#define wxInt32 long signed
+#define wxUint32 long unsigned
#endif
#ifdef __WIN32__
-#define wxInt16 short signed
-#define wxUint16 short unsigned
-#define wxInt32 int signed
-#define wxUint32 int unsigned
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#ifdef __WXMAC__
-#define wxInt16 short signed
-#define wxUint16 short unsigned
-#define wxInt32 int signed
-#define wxUint32 int unsigned
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#ifdef __WXOS2__
-#define wxInt16 short signed
-#define wxUint16 short unsigned
-#define wxInt32 int signed
-#define wxUint32 int unsigned
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__)
#if defined(SIZEOF_INT)
/* well, this shouldn't happen... */
- #define wxInt16 short signed
- #define wxUint16 short unsigned
- #define wxInt32 int signed
- #define wxUint32 int unsigned
+ #define wxInt16 short signed
+ #define wxUint16 short unsigned
+ #define wxInt32 int signed
+ #define wxUint32 int unsigned
#else
- #define wxInt16 short signed
- #define wxUint16 short unsigned
- #define wxInt32 int signed
- #define wxUint32 int unsigned
+ #define wxInt16 short signed
+ #define wxUint16 short unsigned
+ #define wxInt32 int signed
+ #define wxUint32 int unsigned
#endif
#endif
#define wxByte wxUint8
-#define wxWord wxUint16
+#define wxWord wxUint16
// byte sex
((wxUint16) ( \
(((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
(((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
-
+
#define wxINT16_SWAP_ALWAYS(val) \
((wxInt16) ( \
(((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
(((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
-
+
#define wxUINT32_SWAP_ALWAYS(val) \
((wxUint32) ( \
(((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
#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
// ----------------------------------------------------------------------------
// don't invalidate the whole window (resulting in a PAINT event) when the
// window is resized (currently, makes sense for wxMSW only)
-#define wxNO_FULLREPAINT_ON_RESIZE 0x00010000
+#define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000
/*
* wxFrame/wxDialog style flags
*/
* 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
// 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
#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
* wxNotebook flags
*/
#define wxNB_FIXEDWIDTH 0x0008
+#define wxNB_LEFT 0x0020
+#define wxNB_RIGHT 0x0040
+#define wxNB_BOTTOM 0x0080
/*
* wxStatusBar95 flags
#define wxPD_REMAINING_TIME 0x0020
/*
- * extended dialog specifiers. these values are stored in a different
+ * wxHtmlWindow flags
+ */
+#define wxHW_SCROLLBAR_NEVER 0x0002
+#define wxHW_SCROLLBAR_AUTO 0x0004
+
+/*
+ * extended dialog specifiers. these values are stored in a different
* flag and thus do not overlap with other style flags. note that these
* values do not correspond to the return values of the dialogs (for
- * those values, look at the wxID_XXX defines).
+ * 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
#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
-#define wxCENTER_FRAME 0x0004
-
-
// ----------------------------------------------------------------------------
// Possible SetSize flags
// ----------------------------------------------------------------------------
// platform specific (implementation) parts of the headers
// ---------------------------------------------------------------------------
-#ifdef __WXMSW__
-// Stand-ins for Windows types, to avoid #including all of windows.h
+#if defined(__WXMSW__) || defined(__WXPM__)
+// Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h
typedef unsigned long WXHWND;
typedef unsigned long WXHANDLE;
typedef unsigned long WXHICON;
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;
typedef void * WXMEASUREITEMSTRUCT;
typedef void * WXLPCREATESTRUCT;
+#if defined(__WXPM__)
+typedef unsigned long WXMPARAM;
+typedef unsigned long WXMSGID;
+typedef void* WXRESULT;
+typedef int (*WXFARPROC)();
+// some windows handles not defined by PM
+typedef unsigned long HANDLE;
+typedef unsigned long HICON;
+typedef unsigned long HFONT;
+typedef unsigned long HMENU;
+typedef unsigned long HPEN;
+typedef unsigned long HBRUSH;
+typedef unsigned long HPALETTE;
+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
+
#if defined(__GNUWIN32__) || defined(__WXWINE__)
typedef int (*WXFARPROC)();
#elif defined(__WIN32__)