]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
*** empty log message ***
[wxWidgets.git] / include / wx / defs.h
index 1fc466a7dce0565e3f520e7ddbf2dd57936c2a8f..d17af9918c8f572363ae57bdb32651f9fbc6b84a 100644 (file)
 #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
 // ----------------------------------------------------------------------------
@@ -39,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: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
 
@@ -259,11 +300,42 @@ typedef int wxWindowID;
     #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__)
@@ -282,6 +354,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
@@ -393,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
@@ -408,9 +497,10 @@ enum
   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
 };
 
 // ----------------------------------------------------------------------------
@@ -420,53 +510,53 @@ enum
 // 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
 
@@ -486,12 +576,12 @@ enum
    ((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) | \
@@ -528,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
 // ----------------------------------------------------------------------------
@@ -583,9 +734,12 @@ enum
 #define wxWANTS_CHARS           0x00040000
 
 // Make window retained (mostly Motif, I think)
-#define wxRETAINED              0x0002000
+#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
 /*
  * wxFrame/wxDialog style flags
  */
@@ -662,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
@@ -693,6 +841,11 @@ enum
 #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
+#define wxTE_NO_VSCROLL     0x0100
+#define wxTE_AUTO_SCROLL    0x0200
 
 /*
  * wxComboBox style flags
@@ -703,18 +856,18 @@ enum
 #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
 
 /*
@@ -724,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
@@ -765,7 +918,7 @@ enum
 #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
@@ -830,6 +983,9 @@ enum
  * wxNotebook flags
  */
 #define wxNB_FIXEDWIDTH       0x0008
+#define wxNB_LEFT             0x0020
+#define wxNB_RIGHT            0x0040
+#define wxNB_BOTTOM           0x0080
 
 /*
  * wxStatusBar95 flags
@@ -853,38 +1009,43 @@ enum
 #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
@@ -944,33 +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 
-#define wxCENTER_FRAME          0x0004  
-
-
 // ----------------------------------------------------------------------------
 // Possible SetSize flags
 // ----------------------------------------------------------------------------
@@ -1348,8 +1486,8 @@ typedef enum {
 // 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;
@@ -1369,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;
@@ -1382,6 +1527,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__)
@@ -1421,6 +1587,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;