]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
converted to 16 colors
[wxWidgets.git] / include / wx / defs.h
index 3bc4487512db8245d82a7e7bc93db6720a1904a8..f99ef2326b78933e03d2b17a79d22aefc6365fa9 100644 (file)
 #define _WX_DEFS_H_
 
 #ifdef __GNUG__
-#pragma interface "defs.h"
+    #pragma interface "defs.h"
 #endif
 
-#include <stddef.h>
-
-#include "wx/setup.h"
-#include "wx/version.h"
-
 // ----------------------------------------------------------------------------
 // compiler and OS identification
 // ----------------------------------------------------------------------------
@@ -31,9 +26,7 @@
     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: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:4134)    // conversion between pointers to members of same class
+#   pragma warning(disable:4135)    // conversion between different integral types
+#   pragma warning(disable:4769)    // assignment of near pointer to long integer
+#endif
 #endif // __VISUALC__
 
 // suppress some Salford C++ warnings
 #   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
+
 // Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
 // so define it ourselves
 #ifdef __DECCXX
 #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)
+#   define wxUSE_NORLANDER_HEADERS 1
+#endif
+
 
 //////////////////////////////////////////////////////////////////////////////////
 // Currently Only MS-Windows/NT, XView and Motif are supported
 // 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__) && \
+#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && !defined(__WXPM__) && \
       !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__)
-    #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXSTUBS__]"
+    #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"
+
 // ============================================================================
 // non portable C++ features
 // ============================================================================
 // check for native bool type and TRUE/FALSE constants
 // ----------------------------------------------------------------------------
 
-#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXSTUBS__)
+#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXPM__) || defined(__WXSTUBS__)
     // Bool is now obsolete, use bool instead
     // typedef int Bool;
 
     #elif defined(__GNUWIN32__)
         // Cygwin supports bool
         #define HAVE_BOOL
+    #elif defined(__VISAGECPP__)
+        typedef unsigned long bool;
+        #define HAVE_BOOL
     #endif // compilers
 #endif // HAVE_BOOL
 
@@ -242,7 +297,7 @@ typedef int wxWindowID;
  * Making or using wxWindows as a Windows DLL
  */
 
-#ifdef __WXMSW__
+#if defined(__WXMSW__)
 
 // _declspec works in BC++ 5 and later, as well as VC++
 #if defined(__VISUALC__) || defined(__BORLANDC__)
@@ -261,6 +316,22 @@ typedef int wxWindowID;
 #    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
@@ -359,67 +430,93 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse;
 // Callback function type definition
 typedef void (*wxFunction) (wxObject&, wxEvent&);
 
+// ----------------------------------------------------------------------------
+// OS mnemonics -- Identify the running OS (useful for Windows)
+// ----------------------------------------------------------------------------
+
+// Not all platforms are currently available or supported
+enum
+{
+  wxUNKNOWN_PLATFORM,
+  wxCURSES,                 // Text-only CURSES
+  wxXVIEW_X,                // Sun's XView OpenLOOK toolkit
+  wxMOTIF_X,                // OSF Motif 1.x.x
+  wxCOSE_X,                 // OSF Common Desktop Environment
+  wxNEXTSTEP,               // NeXTStep
+  wxMACINTOSH,              // Apple System 7
+  wxGTK,                    // GTK on X
+  wxGTK_WIN32,              // GTK on Win32
+  wxGTK_OS2,                // GTK on OS/2
+  wxGTK_BEOS,               // GTK on BeOS
+  wxQT,                     // Qt
+  wxGEOS,                   // GEOS
+  wxOS2_PM,                 // OS/2 Workplace
+  wxWINDOWS,                // Windows or WfW
+  wxPENWINDOWS,             // Windows for Pen Computing
+  wxWINDOWS_NT,             // Windows NT
+  wxWIN32S,                 // Windows 32S API
+  wxWIN95,                  // Windows 95
+  wxWIN386,                 // Watcom 32-bit supervisor modus
+  wxMGL_UNIX,               // MGL with direct hardware access
+  wxMGL_X,                  // MGL on X
+  wxMGL_WIN32,              // MGL on Win32
+  wxMGL_OS2                 // MGL on OS/2
+};
+
 // ----------------------------------------------------------------------------
 // machine specific settings
 // ----------------------------------------------------------------------------
 
 // fixed length types
 
-typedef  char    signed  wxInt8;
-typedef  char  unsigned  wxUint8;
+#define wxInt8    char    signed
+#define wxUint8   char  unsigned
 
 #ifdef __WIN16__
-typedef  int     signed  wxInt16;
-typedef  int   unsigned  wxUint16;
-typedef  long    signed  wxInt32;
-typedef  long  unsigned  wxUint32;
+#define wxInt16    int    signed
+#define wxUint16   int  unsigned
+#define wxInt32   long    signed
+#define wxUint32  long  unsigned
 #endif
 
 #ifdef __WIN32__
-typedef  short   signed  wxInt16;
-typedef  short unsigned  wxUint16;
-typedef  int     signed  wxInt32;
-typedef  int   unsigned  wxUint32;
+#define wxInt16  short    signed
+#define wxUint16 short  unsigned
+#define wxInt32    int    signed
+#define wxUint32   int  unsigned
 #endif
 
 #ifdef __WXMAC__
-typedef  short   signed  wxInt16;
-typedef  short unsigned  wxUint16;
-typedef  int     signed  wxInt32;
-typedef  int   unsigned  wxUint32;
+#define wxInt16  short    signed
+#define wxUint16 short  unsigned
+#define wxInt32    int    signed
+#define wxUint32   int  unsigned
 #endif
 
 #ifdef __WXOS2__
-typedef  short   signed  wxInt16;
-typedef  short unsigned  wxUint16;
-typedef  int     signed  wxInt32;
-typedef  int   unsigned  wxUint32;
+#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)
-    #if (SIZEOF_SHORT == 2)
-      typedef  short   signed  wxInt16;
-      typedef  short unsigned  wxUint16;
-    #else
-      #error "FIXME"
-    #endif
-    #if (SIZEOF_INT == 4)
-      typedef  int     signed  wxInt32;
-      typedef  int   unsigned  wxUint32;
-    #else
-      #error "FIXME"
-    #endif
+    /* well, this shouldn't happen... */
+    #define wxInt16  short    signed
+    #define wxUint16 short  unsigned
+    #define wxInt32    int    signed
+    #define wxUint32   int  unsigned
   #else
-    typedef  short   signed  wxInt16;
-    typedef  short unsigned  wxUint16;
-    typedef  int     signed  wxInt32;
-    typedef  int   unsigned  wxUint32;
+    #define wxInt16  short    signed
+    #define wxUint16 short  unsigned
+    #define wxInt32    int    signed
+    #define wxUint32   int  unsigned
   #endif
 #endif
 
-typedef  wxUint8         wxByte;
-typedef  wxUint16        wxWord;
+#define  wxByte   wxUint8
+#define  wxWord   wxUint16
 
 // byte sex
 
@@ -439,12 +536,12 @@ typedef  wxUint16        wxWord;
    ((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) | \
@@ -501,27 +598,27 @@ typedef  wxUint16        wxWord;
 /*
  * Window (Frame/dialog/subwindow/panel item) style flags
  */
-#define wxVSCROLL           0x80000000
-#define wxHSCROLL           0x40000000
-#define wxCAPTION           0x20000000
+#define wxVSCROLL               0x80000000
+#define wxHSCROLL               0x40000000
+#define wxCAPTION               0x20000000
 
 // New styles
-#define wxDOUBLE_BORDER     0x10000000
-#define wxSUNKEN_BORDER     0x08000000
-#define wxRAISED_BORDER     0x04000000
-#define wxBORDER            0x02000000
-#define wxSIMPLE_BORDER     wxBORDER
-#define wxSTATIC_BORDER     0x01000000
-#define wxTRANSPARENT_WINDOW 0x00100000
-#define wxNO_BORDER         0x00200000
-
-#define wxUSER_COLOURS      0x00800000
+#define wxDOUBLE_BORDER         0x10000000
+#define wxSUNKEN_BORDER         0x08000000
+#define wxRAISED_BORDER         0x04000000
+#define wxBORDER                0x02000000
+#define wxSIMPLE_BORDER         wxBORDER
+#define wxSTATIC_BORDER         0x01000000
+#define wxTRANSPARENT_WINDOW    0x00100000
+#define wxNO_BORDER             0x00200000
+
+#define wxUSER_COLOURS          0x00800000
                                  // Override CTL3D etc. control colour processing to
                                  // allow own background colour
                                  // OBSOLETE - use wxNO_3D instead
-#define wxNO_3D             0x00800000
+#define wxNO_3D                 0x00800000
                                  // Override CTL3D or native 3D styles for children
-#define wxCLIP_CHILDREN     0x00400000
+#define wxCLIP_CHILDREN         0x00400000
                                  // Clip children when painting, which reduces flicker in
                                  // e.g. frames and splitter windows, but can't be used in
                                  // a panel where a static box must be 'transparent' (panel
@@ -529,24 +626,21 @@ typedef  wxUint16        wxWord;
 
 // Add this style to a panel to get tab traversal working
 // outside of dialogs.
-#define wxTAB_TRAVERSAL     0x00080000
+#define wxTAB_TRAVERSAL         0x00080000
 
 // Add this style if the control wants to get all keyboard messages (under
 // Windows, it won't normally get the dialog navigation key events)
-#define wxWANTS_CHARS       0x00040000
+#define wxWANTS_CHARS           0x00040000
 
-// Orientations
-enum wxOrientation
-{
-    wxHORIZONTAL = 0x01,
-    wxVERTICAL   = 0x02,
-    wxBOTH       = (wxVERTICAL | wxHORIZONTAL)
-};
-
-#define wxCENTER_FRAME   0x04  /* centering into frame rather than screen */
+// Make window retained (mostly Motif, I think)
+#define wxRETAINED              0x00020000
+#define wxBACKINGSTORE          wxRETAINED
 
+// don't invalidate the whole window (resulting in a PAINT event) when the
+// window is resized (currently, makes sense for wxMSW only)
+#define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000
 /*
- * Frame/dialog style flags
+ * wxFrame/wxDialog style flags
  */
 #define wxSTAY_ON_TOP           0x8000
 #define wxICONIZE               0x4000
@@ -562,7 +656,7 @@ enum wxOrientation
 #define wxRESIZE_BORDER         0x0040
 #define wxDIALOG_MODAL          0x0020
 #define wxDIALOG_MODELESS       0x0000
-/* Add for normal Windows frame behaviour */
+// Add for normal Windows frame behaviour
 #define wxFRAME_FLOAT_ON_PARENT 0x0020
 
 
@@ -570,7 +664,8 @@ enum wxOrientation
 #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
 #endif
 
-#define wxDEFAULT_FRAME_STYLE    (wxSYSTEM_MENU|wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
+#define wxDEFAULT_FRAME_STYLE \
+  (wxSYSTEM_MENU | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
 
 #ifdef __WXMSW__
 #   define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME)
@@ -580,25 +675,30 @@ enum wxOrientation
 #   define wxDEFAULT_DIALOG_STYLE  (wxCAPTION)
 #endif
 
-
 /*
- * Subwindow style flags
+ * wxExtDialog style flags
  */
-#define wxRETAINED          0x0001
-#define wxBACKINGSTORE      wxRETAINED
-// wxCanvas or wxPanel can optionally have a thick frame under MS Windows.
-// #define wxTHICK_FRAME       0x1000
+#define wxED_CLIENT_MARGIN      0x0004
+#define wxED_BUTTONS_BOTTOM     0x0000  // has no effect
+#define wxED_BUTTONS_RIGHT      0x0002
+#define wxED_STATIC_LINE        0x0001
+
+#if defined(__WXMSW__) || defined(__WXMAC__)
+#   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN)
+#else
+#   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE)
+#endif
 
 /*
  * wxToolBar style flags
  */
-#define wxTB_3DBUTTONS      0x8000
-#define wxTB_HORIZONTAL     0x0002
-#define wxTB_VERTICAL       0x0004
+#define wxTB_3DBUTTONS          0x8000
+#define wxTB_HORIZONTAL         0x0002
+#define wxTB_VERTICAL           0x0004
 // Flatbar/Coolbar under Win98/ GTK 1.2
-#define wxTB_FLAT           0x0008
+#define wxTB_FLAT               0x0008
 // use native docking under GTK
-#define wxTB_DOCKABLE       0x0010
+#define wxTB_DOCKABLE           0x0010
 
 /*
  * wxMenuBar style flags
@@ -606,6 +706,10 @@ enum wxOrientation
 // use native docking
 #define wxMB_DOCKABLE       0x0001
 
+/*
+ * wxMenu style flags
+ */
+#define wxMENU_TEAROFF      0x0001
 
 /*
  * Apply to all panel items
@@ -642,6 +746,9 @@ enum wxOrientation
 #define wxTE_READONLY       0x0010
 #define wxTE_MULTILINE      0x0020
 #define wxTE_PROCESS_TAB    0x0040
+// 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
 
 /*
  * wxComboBox style flags
@@ -652,19 +759,18 @@ enum wxOrientation
 #define wxCB_DROPDOWN       0x0020
 
 /*
- * wxRadioBox/wxRadioButton style flags
+ * wxRadioBox style flags
  */
-
 // New, more intuitive names to specify majorDim argument
-
-// Same as wxRA_HORIZONTAL
-#define wxRA_SPECIFY_COLS   0x0001
-// Same as wxRA_VERTICAL
-#define wxRA_SPECIFY_ROWS   0x0002
-
+#define wxRA_SPECIFY_COLS   wxHORIZONTAL
+#define wxRA_SPECIFY_ROWS   wxVERTICAL
 // Old names for compatibility
 #define wxRA_HORIZONTAL     wxHORIZONTAL
 #define wxRA_VERTICAL       wxVERTICAL
+
+/*
+ * wxRadioButton style flag
+ */
 #define wxRB_GROUP          0x0004
 
 /*
@@ -673,7 +779,7 @@ enum wxOrientation
 #define wxGA_PROGRESSBAR     0x0004
 #define wxGA_HORIZONTAL      wxHORIZONTAL
 #define wxGA_VERTICAL        wxVERTICAL
-/* Windows only */
+// Windows only
 #define wxGA_SMOOTH          0x0008
 
 /*
@@ -715,7 +821,7 @@ enum wxOrientation
 #define wxTR_SINGLE          0x0000
 #define wxTR_MULTIPLE        0x0020
 #define wxTR_EXTENDED        0x0040
-#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080
+#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080
 
 /*
  * wxListCtrl flags
@@ -748,7 +854,6 @@ enum wxOrientation
 /*
  * wxSpinButton flags
  */
-
 #define wxSP_VERTICAL       0x0004
 #define wxSP_HORIZONTAL     0x0008
 #define wxSP_ARROW_KEYS     0x0010
@@ -757,7 +862,6 @@ enum wxOrientation
 /*
  * wxSplitterWindow flags
  */
-
 #define wxSP_NOBORDER       0x0000
 #define wxSP_3D             0x0004
 #define wxSP_BORDER         0x0008
@@ -767,46 +871,191 @@ enum wxOrientation
 /*
  * wxFrame extra flags
  */
-
 // No title on taskbar
 #define wxFRAME_TOOL_WINDOW 0x0004
 
 /*
  * wxTabCtrl flags
  */
-
-#define wxTC_MULTILINE     0x0000
-#define wxTC_RIGHTJUSTIFY  0x0004
-#define wxTC_FIXEDWIDTH    0x0008
-#define wxTC_OWNERDRAW     0x0010
+#define wxTC_MULTILINE        0x0000
+#define wxTC_RIGHTJUSTIFY     0x0004
+#define wxTC_FIXEDWIDTH       0x0008
+#define wxTC_OWNERDRAW        0x0010
 
 /*
  * wxNotebook flags
  */
-#define wxNB_FIXEDWIDTH    0x0008
+#define wxNB_FIXEDWIDTH       0x0008
 
 /*
  * wxStatusBar95 flags
  */
-
-#define wxST_SIZEGRIP       0x0002
+#define wxST_SIZEGRIP         0x0002
 
 /*
  * wxStaticLine flags
  */
-#define wxLI_HORIZONTAL      wxHORIZONTAL
-#define wxLI_VERTICAL        wxVERTICAL
+#define wxLI_HORIZONTAL         wxHORIZONTAL
+#define wxLI_VERTICAL           wxVERTICAL
 
 /*
  * wxProgressDialog flags
  */
-#define wxPD_CAN_ABORT      0x0001
-#define wxPD_APP_MODAL      0x0002
-#define wxPD_AUTO_HIDE      0x0004
+#define wxPD_CAN_ABORT          0x0001
+#define wxPD_APP_MODAL          0x0002
+#define wxPD_AUTO_HIDE          0x0004
+#define wxPD_ELAPSED_TIME       0x0008
+#define wxPD_ESTIMATED_TIME     0x0010
+#define wxPD_REMAINING_TIME     0x0020
+
+/*
+ * wxHtmlWindow flags
+ */
+#define wxHW_SCROLLBAR_NEVER    0x0002
+#define wxHW_SCROLLBAR_AUTO     0x0004
 
 /*
- * GDI descriptions
+ * 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).
  */
+#define wxOK                    0x00000001
+#define wxYES_NO                0x00000002
+#define wxCANCEL                0x00000004
+#define wxYES                   0x00000008
+#define wxNO                    0x00000010
+#define wxNO_DEFAULT            0x00000020
+#define wxYES_DEFAULT           0x00000000  // has no effect
+
+#define wxICON_EXCLAMATION      0x00000040
+#define wxICON_HAND             0x00000080
+#define wxICON_WARNING          wxICON_EXCLAMATION
+#define wxICON_ERROR            wxICON_HAND
+#define wxICON_QUESTION         0x00000100
+#define wxICON_INFORMATION      0x00000200
+#define wxICON_STOP             wxICON_HAND
+#define wxICON_ASTERISK         wxICON_INFORMATION
+#define wxICON_MASK             (0x00000040|0x00000080|0x00000100|0x00000200)
+
+#define wxCENTRE                0x00000400
+#define wxCENTER                wxCENTRE
+
+#define  wxFORWARD              0x00000800
+#define  wxBACKWARD             0x00001000
+#define  wxRESET                0x00002000
+#define  wxHELP                 0x00004000
+#define  wxMORE                 0x00008000
+#define  wxSETUP                0x00010000
+
+// ----------------------------------------------------------------------------
+// standard IDs
+// ----------------------------------------------------------------------------
+
+// Standard menu IDs
+#define wxID_LOWEST             4999
+
+#define wxID_OPEN               5000
+#define wxID_CLOSE              5001
+#define wxID_NEW                5002
+#define wxID_SAVE               5003
+#define wxID_SAVEAS             5004
+#define wxID_REVERT             5005
+#define wxID_EXIT               5006
+#define wxID_UNDO               5007
+#define wxID_REDO               5008
+#define wxID_HELP               5009
+#define wxID_PRINT              5010
+#define wxID_PRINT_SETUP        5011
+#define wxID_PREVIEW            5012
+#define wxID_ABOUT              5013
+#define wxID_HELP_CONTENTS      5014
+#define wxID_HELP_COMMANDS      5015
+#define wxID_HELP_PROCEDURES    5016
+#define wxID_HELP_CONTEXT       5017
+
+#define wxID_CUT                5030
+#define wxID_COPY               5031
+#define wxID_PASTE              5032
+#define wxID_CLEAR              5033
+#define wxID_FIND               5034
+#define wxID_DUPLICATE          5035
+#define wxID_SELECTALL          5036
+
+#define wxID_FILE1              5050
+#define wxID_FILE2              5051
+#define wxID_FILE3              5052
+#define wxID_FILE4              5053
+#define wxID_FILE5              5054
+#define wxID_FILE6              5055
+#define wxID_FILE7              5056
+#define wxID_FILE8              5057
+#define wxID_FILE9              5058
+
+// Standard button IDs
+#define wxID_OK                 5100
+#define wxID_CANCEL             5101
+#define wxID_APPLY              5102
+#define wxID_YES                5103
+#define wxID_NO                 5104
+#define wxID_STATIC             5105
+#define wxID_FORWARD            5106
+#define wxID_BACKWARD           5107
+#define wxID_DEFAULT            5108
+#define wxID_MORE               5109
+#define wxID_SETUP              5110
+#define wxID_RESET              5111
+
+#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
+// ----------------------------------------------------------------------------
+
+// Use internally-calculated width if -1
+#define wxSIZE_AUTO_WIDTH       0x0001
+// Use internally-calculated height if -1
+#define wxSIZE_AUTO_HEIGHT      0x0002
+// Use internally-calculated width and height if each is -1
+#define wxSIZE_AUTO             (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
+// Ignore missing (-1) dimensions (use existing).
+// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code.
+#define wxSIZE_USE_EXISTING     0x0000
+// Allow -1 as a valid position
+#define wxSIZE_ALLOW_MINUS_ONE  0x0004
+// Don't do parent client adjustments (for implementation only)
+#define wxSIZE_NO_ADJUSTMENTS   0x0008
+
+// ----------------------------------------------------------------------------
+// GDI descriptions
+// ----------------------------------------------------------------------------
 
 enum {
 // Text font families
@@ -884,56 +1133,20 @@ typedef enum
   wxSRC_AND     // source _bitmap_ AND destination
 } form_ops_t;
 
-// Flood styles
+/* Flood styles */
 #define  wxFLOOD_SURFACE   1
 #define  wxFLOOD_BORDER    2
 
-// Polygon filling mode
+/* Polygon filling mode */
 #define  wxODDEVEN_RULE    1
 #define  wxWINDING_RULE    2
 
-// ToolPanel in wxFrame
+/* ToolPanel in wxFrame */
 #define    wxTOOL_TOP       1
 #define    wxTOOL_BOTTOM       2
 #define    wxTOOL_LEFT       3
 #define    wxTOOL_RIGHT       4
 
-// Dialog specifiers/return values
-
-#define wxOK                0x0001
-#define wxYES_NO            0x0002
-#define wxCANCEL            0x0004
-#define wxYES               0x0008
-#define wxNO                0x0010
-#define wxNO_DEFAULT        0x0020
-#define wxYES_DEFAULT       0x0000  // has no effect
-#define wxICON_EXCLAMATION  0x0040
-#define wxICON_HAND         0x0080
-#define wxICON_QUESTION     0x0100
-#define wxICON_INFORMATION  0x0200
-
-#define wxICON_STOP         wxICON_HAND
-#define wxICON_ASTERISK     wxICON_INFORMATION
-#define wxICON_MASK         (0x0020|0x0040|0x0080|0x0100)
-
-#define wxCENTRE            0x0200
-#define wxCENTER wxCENTRE
-
-// Possible SetSize flags
-
-// Use internally-calculated width if -1
-#define wxSIZE_AUTO_WIDTH       0x0001
-// Use internally-calculated height if -1
-#define wxSIZE_AUTO_HEIGHT      0x0002
-// Use internally-calculated width and height if each is -1
-#define wxSIZE_AUTO             (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
-// Ignore missing (-1) dimensions (use existing).
-// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code.
-#define wxSIZE_USE_EXISTING     0x0000
-// Allow -1 as a valid position
-#define wxSIZE_ALLOW_MINUS_ONE  0x0004
-// Don't do parent client adjustments (for implementation only)
-#define wxSIZE_NO_ADJUSTMENTS   0x0008
 
 enum wxDataFormatId
 {
@@ -1069,78 +1282,6 @@ enum wxKeyCode
   WXK_NUMPAD_DIVIDE
 };
 
-/* OS mnemonics -- Identify the running OS (useful for Windows)
- * [Not all platforms are currently available or supported] */
-enum
-{
-  wxUNKNOWN_PLATFORM,
-  wxCURSES,                 // Text-only CURSES
-  wxXVIEW_X,                // Sun's XView OpenLOOK toolkit
-  wxMOTIF_X,                // OSF Motif 1.x.x
-  wxCOSE_X,                 // OSF Common Desktop Environment
-  wxNEXTSTEP,               // NeXTStep
-  wxMACINTOSH,              // Apple System 7
-  wxGTK,                    // GTK
-  wxQT,                     // Qt
-  wxGEOS,                   // GEOS
-  wxOS2_PM,                 // OS/2 Workplace
-  wxWINDOWS,                // Windows or WfW
-  wxPENWINDOWS,             // Windows for Pen Computing
-  wxWINDOWS_NT,             // Windows NT
-  wxWIN32S,                 // Windows 32S API
-  wxWIN95,                  // Windows 95
-  wxWIN386                  // Watcom 32-bit supervisor modus
-};
-
-/* Standard menu identifiers */
-#define wxID_LOWEST             4999
-
-#define wxID_OPEN               5000
-#define wxID_CLOSE              5001
-#define wxID_NEW                5002
-#define wxID_SAVE               5003
-#define wxID_SAVEAS             5004
-#define wxID_REVERT             5005
-#define wxID_EXIT               5006
-#define wxID_UNDO               5007
-#define wxID_REDO               5008
-#define wxID_HELP               5009
-#define wxID_PRINT              5010
-#define wxID_PRINT_SETUP        5011
-#define wxID_PREVIEW            5012
-#define wxID_ABOUT              5013
-#define wxID_HELP_CONTENTS      5014
-#define wxID_HELP_COMMANDS      5015
-#define wxID_HELP_PROCEDURES    5016
-#define wxID_HELP_CONTEXT       5017
-
-#define wxID_CUT                5030
-#define wxID_COPY               5031
-#define wxID_PASTE              5032
-#define wxID_CLEAR              5033
-#define wxID_FIND               5034
-#define wxID_DUPLICATE          5035
-#define wxID_SELECTALL          5036
-
-#define wxID_FILE1              5050
-#define wxID_FILE2              5051
-#define wxID_FILE3              5052
-#define wxID_FILE4              5053
-#define wxID_FILE5              5054
-#define wxID_FILE6              5055
-#define wxID_FILE7              5056
-#define wxID_FILE8              5057
-#define wxID_FILE9              5058
-
-#define wxID_OK                 5100
-#define wxID_CANCEL             5101
-#define wxID_APPLY              5102
-#define wxID_YES                5103
-#define wxID_NO                 5104
-#define wxID_STATIC             5105
-
-#define wxID_HIGHEST            5999
-
 // Mapping modes (as per Windows)
 #define wxMM_TEXT             1
 #define wxMM_LOMETRIC         2
@@ -1265,9 +1406,14 @@ typedef enum {
     wxPRINT_MODE_PRINTER = 3    // Send to printer
 } wxPrintMode;
 
+// ---------------------------------------------------------------------------
+// macros that enable wxWindows apps to be compiled in absence of the
+// sytem headers, although some platform specific types are used in the
+// 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;
@@ -1300,6 +1446,27 @@ typedef void *          WXDRAWITEMSTRUCT;
 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__)
@@ -1328,6 +1495,9 @@ typedef void*           WXFont;
 typedef void*           WXImage;
 typedef void*           WXCursor;
 typedef void*           WXFontList;
+
+typedef unsigned long   Atom;  /* this might fail on a few architectures */
+
 #endif // Motif
 
 #ifdef __WXGTK__
@@ -1336,6 +1506,7 @@ typedef int            gint;
 typedef unsigned       guint;
 typedef unsigned long  gulong;
 typedef void*          gpointer;
+typedef struct _GSList GSList;
 
 /* Stand-ins for GDK types */
 typedef gulong                  GdkAtom;