]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Various VC++ 1.5 and other corrections
[wxWidgets.git] / include / wx / defs.h
index f567f81f72f5ba81a529eabe7d08413ab600e79d..5a81d4ac0cc45eae5a4df29f050a65e6d444b745 100644 (file)
     #pragma interface "defs.h"
 #endif
 
-
-// needed to handle strings with xgettext:
-#ifndef gettext_noop
-#  define gettext_noop(x) x
-#endif
-
 // ----------------------------------------------------------------------------
 // compiler and OS identification
 // ----------------------------------------------------------------------------
 
-// OS
+// OS: first test for generic Unix defines, then for particular flavours and
+//     finally for Unix-like systems
 #if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
-    defined(__LINUX__) || defined(__sgi ) || \
+    defined(__LINUX__) || defined(__sgi) || \
     defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
-    defined(__EMX__)
+    defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
 
     #define __UNIX_LIKE__
 
     #endif
 
     // Place other OS/2 compiler environment defines here
-    #define LINKAGEMODE _Optlink
+    #if defined(__VISAGECPP__)
+        // VisualAge is the only thing that understands _Optlink
+        #define LINKAGEMODE _Optlink
+    #endif
 #else   // Windows
     #ifndef __WINDOWS__
         #define __WINDOWS__
 // Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
 // so define it ourselves
 #ifdef __DECCXX
-    #define __cplusplus
+#ifndef __VMS
+# define __cplusplus
+#endif
 #endif // __DECCXX
 
 // Resolves linking problems under HP-UX
 // 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
+    #ifndef wxUSE_NORLANDER_HEADERS
+        #define wxUSE_NORLANDER_HEADERS 1
+    #endif
+#else
+    #ifndef wxUSE_NORLANDER_HEADERS
+        #define wxUSE_NORLANDER_HEADERS 0
+    #endif
 #endif
 
+// "old" GNUWIN32 is the one without Norlander's headers: it lacks the standard
+// Win32 headers and we define the used stuff ourselves for it in
+// wx/msw/gnuwin32/extra.h
+#if defined(__GNUC__) && !wxUSE_NORLANDER_HEADERS
+    #define __GNUWIN32_OLD__
+#endif
 
 //////////////////////////////////////////////////////////////////////////////////
 // Currently Only MS-Windows/NT, XView and Motif are supported
 #endif
 
 #ifdef __WXMSW__
-// wxWindows checks for WIN32, not __WIN32__
-#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__) && !defined(__WXSTUBS__))
-#define __WIN32__
+
+#if defined(_WIN32) || defined(WIN32) || defined(__NT__)
+    #ifndef __WIN32__
+        #define __WIN32__
+    #endif
 #endif
 
 #ifdef __WXWINE__
     #define __HPUX__
 #endif // HP-UX
 
-// if we're on a Unixsystem but didn't use configure (so that setup.h didn't
+// if we're on a Unix system 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__
     // NB: of course, this doesn't replace the standard type, because, for
     //     example, overloading based on bool/int parameter doesn't work and
     //     so should be avoided in portable programs
-    typedef unsigned int bool;
+#ifndef VMS
+typedef unsigned int bool;
+#endif
 #endif // bool
 
 typedef short int WXTYPE;
@@ -312,21 +326,37 @@ typedef int wxWindowID;
     #define WXUNUSED(identifier) identifier
 #endif
 
+// some arguments are only used in debug mode, but unused in release one
+#ifdef __WXDEBUG__
+    #define WXUNUSED_UNLESS_DEBUG(param)  param
+#else
+    #define WXUNUSED_UNLESS_DEBUG(param)  WXUNUSED(param)
+#endif
+
 // ----------------------------------------------------------------------------
 // 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))
+// stdcall is used for all functions called by Windows under Windows
+#ifdef __WINDOWS__
+    #if defined(__GNUWIN32__)
+        #define wxSTDCALL __attribute__((stdcall))
     #else
         // both VC++ and Borland understand this
-        #define wxCALLBACK _stdcall
+        #define wxSTDCALL _stdcall
     #endif
+
+#else // Win
+    // no such stupidness under Unix
+    #define wxSTDCALL
+#endif // platform
+
+// wxCALLBACK should be used for the functions which are called back by
+// Windows (such as compare function for wxListCtrl)
+#if defined(__WIN32__)
+    #define wxCALLBACK wxSTDCALL
 #else
-    // no stdcall under Unix
+    // no stdcall under Unix nor Win16
     #define wxCALLBACK
 #endif // platform
 
@@ -366,6 +396,22 @@ typedef int wxWindowID;
 #    define WXDLLEXPORT_CTORFN
 #  endif
 
+#elif defined(__GNUC__)
+
+#  ifdef WXMAKINGDLL
+#    define WXDLLEXPORT __declspec( dllexport )
+#    define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type
+#    define WXDLLEXPORT_CTORFN
+#  elif defined(WXUSINGDLL)
+#    define WXDLLEXPORT __declspec( dllimport )
+#    define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type
+#    define WXDLLEXPORT_CTORFN
+#  else
+#    define WXDLLEXPORT
+#    define WXDLLEXPORT_DATA(type) type
+#    define WXDLLEXPORT_CTORFN
+#  endif
+
 #elif defined(__WXPM__)
 
 #  ifdef WXMAKINGDLL
@@ -487,32 +533,32 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 // 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 and 8
-  wxBEOS,                   // BeOS
-  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
-  wxWINDOWS_OS2             // Native OS/2 PM
+    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 and 8
+    wxBEOS,                   // BeOS
+    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
+    wxWINDOWS_OS2             // Native OS/2 PM
 };
 
 // ----------------------------------------------------------------------------
@@ -586,23 +632,23 @@ enum
 #define  wxByte   wxUint8
 #define  wxWord   wxUint16
 
-// base floating point types 
+// base floating point types
 // wxFloat32 : 32 bit IEEE float ( 1 sign , 8 exponent bits , 23 fraction bits
 // wxFloat64 : 64 bit IEEE float ( 1 sign , 11 exponent bits , 52 fraction bits
 // wxDouble : native fastest representation that has at least wxFloat64
 //            precision, so use the IEEE types for storage , and this for calculations
 
-typedef float wxFloat32 ; 
-#if defined( __WXMAC__ )  && defined (__MWERKS__) 
-       typedef short double    wxFloat64;
+typedef float wxFloat32 ;
+#if defined( __WXMAC__ )  && defined (__MWERKS__)
+    typedef short double wxFloat64;
 #else
-       typedef double                  wxFloat64;
+    typedef double wxFloat64;
 #endif
 
-#if defined( __WXMAC__ )  && !defined( __POWERPC__ ) 
-       typedef long double wxDouble;
+#if defined( __WXMAC__ )  && !defined( __POWERPC__ )
+    typedef long double wxDouble;
 #else
-       typedef double wxDouble ;
+    typedef double wxDouble ;
 #endif
 
 // ----------------------------------------------------------------------------
@@ -626,30 +672,30 @@ typedef float wxFloat32 ;
 #if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh )
 // assembler versions for these
 #ifdef __POWERPC__
-       inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i ) 
-               {return (__lhbrx( &i , 0 ) ) ;}
-       inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i ) 
-               {return (__lhbrx( &i , 0 ) ) ;}
-       inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i ) 
-               {return (__lwbrx( &i , 0 ) ) ;}
-       inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i ) 
-               {return (__lwbrx( &i , 0 ) ) ;}
+    inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i )
+        {return (__lhbrx( &i , 0 ) ) ;}
+    inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i )
+        {return (__lhbrx( &i , 0 ) ) ;}
+    inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i )
+        {return (__lwbrx( &i , 0 ) ) ;}
+    inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i )
+        {return (__lwbrx( &i , 0 ) ) ;}
 #else
-       #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0)
-       pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)
-               = { 0xE158 };
-       
-       #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0)
-       pascal wxInt16 wxUINT16_SWAP_ALWAYS(wxInt16 value)
-               = { 0xE158 };
-
-       #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0)
-       pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value)
-               = { 0xE158, 0x4840, 0xE158 };
-
-       #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0)
-       pascal wxInt32 wxUINT32_SWAP_ALWAYS(wxInt32 value)
-               = { 0xE158, 0x4840, 0xE158 };
+    #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0)
+    pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)
+        = { 0xE158 };
+
+    #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0)
+    pascal wxInt16 wxUINT16_SWAP_ALWAYS(wxInt16 value)
+        = { 0xE158 };
+
+    #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0)
+    pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value)
+        = { 0xE158, 0x4840, 0xE158 };
+
+    #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0)
+    pascal wxInt32 wxUINT32_SWAP_ALWAYS(wxInt32 value)
+        = { 0xE158, 0x4840, 0xE158 };
 
 #endif
 #else // !MWERKS
@@ -800,20 +846,20 @@ enum wxStretch
 #define wxTRANSPARENT_WINDOW    0x00100000
 #define wxNO_BORDER             0x00200000
 
+// Override CTL3D etc. control colour processing to allow own background
+// colour.
+// OBSOLETE - use wxNO_3D instead
 #define wxUSER_COLOURS          0x00800000
-                                 // Override CTL3D etc. control colour processing to
-                                 // allow own background colour
-                                 // OBSOLETE - use wxNO_3D instead
+// Override CTL3D or native 3D styles for children
 #define wxNO_3D                 0x00800000
-                                 // Override CTL3D or native 3D styles for children
+
+// 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 paints the background for it)
 #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
-                                 // paints the background for it)
 
-// Add this style to a panel to get tab traversal working
-// outside of dialogs.
+// Add this style to a panel to get tab traversal working outside of dialogs
+// (on by default for wxPanel, wxDialog, wxScrolledWindow)
 #define wxTAB_TRAVERSAL         0x00080000
 
 // Add this style if the control wants to get all keyboard messages (under
@@ -827,6 +873,17 @@ enum wxStretch
 // 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
+
+/*
+ * Extra window style flags (use wxWS_EX prefix to make it clear that they
+ * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle())
+ */
+
+// by default, TransferDataTo/FromWindow() only work on direct children of the
+// window (compatible behaviour), set this flag to make them recursively
+// descend into all subwindows
+#define wxWS_EX_VALIDATE_RECURSIVELY    0x00000001
+
 /*
  * wxFrame/wxDialog style flags
  */
@@ -847,6 +904,12 @@ enum wxStretch
 // Add for normal Windows frame behaviour
 #define wxFRAME_FLOAT_ON_PARENT 0x0020
 
+/*
+ * MDI parent frame style flags
+ * Can overlap with some of the above.
+ */
+
+#define wxFRAME_NO_WINDOW_MENU  0x0100
 
 #if WXWIN_COMPATIBILITY
 #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
@@ -880,13 +943,13 @@ enum wxStretch
 /*
  * wxToolBar style flags
  */
-#define wxTB_3DBUTTONS          0x8000
-#define wxTB_HORIZONTAL         0x0002
-#define wxTB_VERTICAL           0x0004
+#define wxTB_HORIZONTAL         wxHORIZONTAL
+#define wxTB_VERTICAL           wxVERTICAL
+#define wxTB_3DBUTTONS          0x0010
 // Flatbar/Coolbar under Win98/ GTK 1.2
-#define wxTB_FLAT               0x0008
+#define wxTB_FLAT               0x0020
 // use native docking under GTK
-#define wxTB_DOCKABLE           0x0010
+#define wxTB_DOCKABLE           0x0040
 
 /*
  * wxMenuBar style flags
@@ -921,10 +984,9 @@ enum wxStretch
 /*
  * wxTextCtrl style flags
  */
-#define wxPROCESS_ENTER     0x0004
-#define wxPASSWORD          0x0008
-#define wxTE_PROCESS_ENTER  wxPROCESS_ENTER
-#define wxTE_PASSWORD       wxPASSWORD
+// the flag bits 0x0001, 2, 4 and 8 are free but should be used only for the
+// things which don't make sense for a text control used by wxTextEntryDialog
+// because they would otherwise conflict with wxOK, wxCANCEL, wxCENTRE
 #define wxTE_READONLY       0x0010
 #define wxTE_MULTILINE      0x0020
 #define wxTE_PROCESS_TAB    0x0040
@@ -933,6 +995,10 @@ enum wxStretch
 #define wxTE_RICH           0x0080
 #define wxTE_NO_VSCROLL     0x0100
 #define wxTE_AUTO_SCROLL    0x0200
+#define wxPROCESS_ENTER     0x0400
+#define wxPASSWORD          0x0800
+#define wxTE_PROCESS_ENTER  wxPROCESS_ENTER
+#define wxTE_PASSWORD       wxPASSWORD
 
 /*
  * wxComboBox style flags
@@ -1098,7 +1164,8 @@ enum wxStretch
 #define wxPD_AUTO_HIDE          0x0004
 #define wxPD_ELAPSED_TIME       0x0008
 #define wxPD_ESTIMATED_TIME     0x0010
-#define wxPD_REMAINING_TIME     0x0020
+// wxGA_SMOOTH = 0x0020 may also be used with wxProgressDialog
+#define wxPD_REMAINING_TIME     0x0040
 
 /*
  * wxHtmlWindow flags
@@ -1106,6 +1173,15 @@ enum wxStretch
 #define wxHW_SCROLLBAR_NEVER    0x0002
 #define wxHW_SCROLLBAR_AUTO     0x0004
 
+/*
+ * wxCalendarCtrl flags
+ */
+#define wxCAL_SUNDAY_FIRST      0x0000
+#define wxCAL_MONDAY_FIRST      0x0001
+#define wxCAL_SHOW_HOLIDAYS     0x0002
+#define wxCAL_NO_YEAR_CHANGE    0x0004
+#define wxCAL_NO_MONTH_CHANGE   0x000c // no month change => no year change
+
 /*
  * extended dialog specifiers. these values are stored in a different
  * flag and thus do not overlap with other style flags. note that these
@@ -1143,6 +1219,14 @@ enum wxStretch
 // standard IDs
 // ----------------------------------------------------------------------------
 
+// id for a separator line in the menu (invalid for normal item)
+#define wxID_SEPARATOR (-1)
+
+// this one is for compatibility only, don't use in new code
+#ifndef ID_SEPARATOR
+    #define ID_SEPARATOR    wxID_SEPARATOR
+#endif
+
 // Standard menu IDs
 #define wxID_LOWEST             4999
 
@@ -1256,6 +1340,8 @@ enum {
 
 // Brush & Pen Stippling. Note that a stippled pen cannot be dashed!!
 // Note also that stippling a Pen IS meaningfull, because a Line is
+  wxSTIPPLE_MASK_OPAQUE, //mask is used for blitting monochrome using text fore and back ground colors
+  wxSTIPPLE_MASK,        //mask is used for masking areas in the stipple bitmap (TO DO)
 // drawn with a Pen, and without any Brush -- and it can be stippled.
   wxSTIPPLE =          110,
   wxBDIAGONAL_HATCH,
@@ -1279,24 +1365,22 @@ enum {
 // Logical ops
 typedef enum
 {
-  wxCLEAR,      // 0
-  wxXOR,        // src XOR dst
-  wxINVERT,     // NOT dst
-  wxOR_REVERSE, // src OR (NOT dst)
-  wxAND_REVERSE,// src AND (NOT dst)
-  wxCOPY,       // src
-  wxAND,        // src AND dst
-  wxAND_INVERT, // (NOT src) AND dst
-  wxNO_OP,      // dst
-  wxNOR,        // (NOT src) AND (NOT dst)
-  wxEQUIV,      // (NOT src) XOR dst
-  wxSRC_INVERT, // (NOT src)
-  wxOR_INVERT,  // (NOT src) OR dst
-  wxNAND,       // (NOT src) OR (NOT dst)
-  wxOR,         // src OR dst
-  wxSET,        // 1
-  wxSRC_OR,     // source _bitmap_ OR destination
-  wxSRC_AND     // source _bitmap_ AND destination
+  wxCLEAR,        wxROP_BLACK = wxCLEAR,             wxBLIT_BLACKNESS = wxCLEAR,        // 0
+  wxXOR,          wxROP_XORPEN = wxXOR,              wxBLIT_SRCINVERT = wxXOR,          // src XOR dst
+  wxINVERT,       wxROP_NOT = wxINVERT,              wxBLIT_DSTINVERT = wxINVERT,       // NOT dst
+  wxOR_REVERSE,   wxROP_MERGEPENNOT = wxOR_REVERSE,  wxBLIT_00DD0228 = wxOR_REVERSE,    // src OR (NOT dst)
+  wxAND_REVERSE,  wxROP_MASKPENNOT = wxAND_REVERSE,  wxBLIT_SRCERASE = wxAND_REVERSE,   // src AND (NOT dst)
+  wxCOPY,         wxROP_COPYPEN = wxCOPY,            wxBLIT_SRCCOPY = wxCOPY,           // src
+  wxAND,          wxROP_MASKPEN = wxAND,             wxBLIT_SRCAND = wxAND,             // src AND dst
+  wxAND_INVERT,   wxROP_MASKNOTPEN = wxAND_INVERT,   wxBLIT_00220326 = wxAND_INVERT,    // (NOT src) AND dst
+  wxNO_OP,        wxROP_NOP = wxNO_OP,               wxBLIT_00AA0029 = wxNO_OP,         // dst
+  wxNOR,          wxROP_NOTMERGEPEN = wxNOR,         wxBLIT_NOTSRCERASE = wxNOR,        // (NOT src) AND (NOT dst)
+  wxEQUIV,        wxROP_NOTXORPEN = wxEQUIV,         wxBLIT_00990066 = wxEQUIV,         // (NOT src) XOR dst
+  wxSRC_INVERT,   wxROP_NOTCOPYPEN = wxSRC_INVERT,   wxBLIT_NOTSCRCOPY = wxSRC_INVERT,  // (NOT src)
+  wxOR_INVERT,    wxROP_MERGENOTPEN = wxOR_INVERT,   wxBLIT_MERGEPAINT = wxOR_INVERT,   // (NOT src) OR dst
+  wxNAND,         wxROP_NOTMASKPEN = wxNAND,         wxBLIT_007700E6 = wxNAND,          // (NOT src) OR (NOT dst)
+  wxOR,           wxROP_MERGEPEN = wxOR,             wxBLIT_SRCPAINT = wxOR,            // src OR dst
+  wxSET,          wxROP_WHITE = wxSET,               wxBLIT_WHITENESS = wxSET           // 1
 } form_ops_t;
 
 /* Flood styles */
@@ -1591,28 +1675,28 @@ typedef enum {
 
 #ifdef __WXMAC__
 
-typedef WindowPtr      WXHWND;
-typedef Handle                         WXHANDLE;
-typedef CIconHandle            WXHICON;
+typedef WindowPtr       WXHWND;
+typedef Handle               WXHANDLE;
+typedef CIconHandle        WXHICON;
 //typedef unsigned long   WXHFONT;
-typedef MenuHandle     WXHMENU;
+typedef MenuHandle       WXHMENU;
 //typedef unsigned long   WXHPEN;
 //typedef unsigned long   WXHBRUSH;
 //typedef unsigned long   WXHPALETTE;
-typedef CursHandle     WXHCURSOR;
-typedef RgnHandle      WXHRGN;
+typedef CursHandle       WXHCURSOR;
+typedef RgnHandle       WXHRGN;
 //typedef unsigned long   WXHACCEL;
 //typedef unsigned long   WXHINSTANCE;
 typedef GWorldPtr   WXHBITMAP;
 //typedef unsigned long   WXHIMAGELIST;
 //typedef unsigned long   WXHGLOBAL;
-typedef GrafPtr                WXHDC;
+typedef GrafPtr           WXHDC;
 typedef unsigned int    WXUINT;
 typedef unsigned long   WXDWORD;
 typedef unsigned short  WXWORD;
 //typedef unsigned int    WXWPARAM;
 //typedef long            WXLPARAM;
-typedef RGBColor               WXCOLORREF;
+typedef RGBColor           WXCOLORREF;
 //typedef void *          WXRGNDATA;
 //typedef void *          WXMSG;
 //typedef unsigned long   WXHCONV;
@@ -1676,7 +1760,6 @@ 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;
@@ -1690,7 +1773,33 @@ typedef unsigned long   HIMAGELIST;
 typedef unsigned long   HGLOBAL;
 typedef unsigned long   DWORD;
 typedef unsigned short  WORD;
-#endif
+
+// WIN32 graphics types for OS/2 GPI
+
+// RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def
+#define OS2RGB(r,g,b) ((DWORD ((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(b)) << 16)))
+
+typedef unsigned long COLORREF;
+#define GetBValue(rgb) ((BYTE)((rgb) >> 16))
+#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
+#define GetRValue(rgb) ((BYTE)(rgb))
+#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
+#define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b))
+// OS2's RGB/RGB2 is backwards from this
+typedef struct tagPALETTEENTRY
+{
+    char bRed;
+    char bGreen;
+    char bBlue;
+    char bFlags;
+} PALETTEENTRY;
+typedef struct tagLOGPALETTE
+{
+    WORD palVersion;
+    WORD palNumentries;
+    WORD PALETTEENTRY[1];
+} LOGPALETTE;
+#endif //__WXPM__
 
 #if defined(__GNUWIN32__) || defined(__WXWINE__)
     typedef int (*WXFARPROC)();
@@ -1711,6 +1820,20 @@ typedef WXHWND WXWidget;
 #endif
 #endif
 
+// the keywords needed for WinMain() declaration
+
+#ifdef __WIN16__
+        #ifdef __VISUALC__
+            #define WXFAR __far
+        #else // !VC++
+            #define WXFAR _far
+        #endif
+#else // Win32
+    #ifndef WXFAR
+        #define WXFAR
+    #endif
+#endif // Win16/32
+
 #endif // MSW
 
 #ifdef __WXMOTIF__
@@ -1749,12 +1872,22 @@ typedef struct _GdkColor        GdkColor;
 typedef struct _GdkColormap     GdkColormap;
 typedef struct _GdkFont         GdkFont;
 typedef struct _GdkGC           GdkGC;
-typedef struct _GdkWindow       GdkWindow;
-typedef struct _GdkWindow       GdkBitmap;
-typedef struct _GdkWindow       GdkPixmap;
+#ifdef __WXGTK13__
+    typedef struct _GdkDrawable     GdkWindow;
+    typedef struct _GdkDrawable     GdkBitmap;
+    typedef struct _GdkDrawable     GdkPixmap;
+#else
+    typedef struct _GdkWindow       GdkWindow;
+    typedef struct _GdkWindow       GdkBitmap;
+    typedef struct _GdkWindow       GdkPixmap;
+#endif
 typedef struct _GdkCursor       GdkCursor;
 typedef struct _GdkRegion       GdkRegion;
 typedef struct _GdkDragContext  GdkDragContext;
+#ifdef HAVE_XIM
+typedef struct _GdkIC           GdkIC;
+typedef struct _GdkICAttr       GdkICAttr;
+#endif
 
 /* Stand-ins for GTK types */
 typedef struct _GtkWidget         GtkWidget;
@@ -1766,8 +1899,8 @@ typedef struct _GtkTooltips       GtkTooltips;
 typedef struct _GtkNotebook       GtkNotebook;
 typedef struct _GtkNotebookPage   GtkNotebookPage;
 typedef struct _GtkAccelGroup     GtkAccelGroup;
-typedef        struct _GtkItemFactory    GtkItemFactory;
-typedef        struct _GtkSelectionData  GtkSelectionData;
+typedef struct _GtkItemFactory    GtkItemFactory;
+typedef struct _GtkSelectionData  GtkSelectionData;
 
 typedef GtkWidget *WXWidget;
 #endif // GTK