]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Unicode changes.
[wxWidgets.git] / include / wx / defs.h
index 90ac41fb0ab3afc5cf2c2317e63b1a24aceebc34..1e17c22014d0830be32aa31e3feea69c57f56282 100644 (file)
@@ -28,7 +28,8 @@
 // OS
 #if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
     defined(__LINUX__) || defined(__sgi ) || \
-    defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX)
+    defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
+    defined(__EMX__)
 
     #ifndef __UNIX__
         #define __UNIX__
@@ -53,7 +54,7 @@
         #endif
     #endif // Sun
 
-    #ifdef __hpux
+    #if defined(__hpux) && !defined(__HPUX__)
         #define __HPUX__
     #endif // HP-UX
 
 #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
 //////////////////////////////////////////////////////////////////////////////////
 // Currently Only MS-Windows/NT, XView and Motif are supported
 //
-#if defined(__HPUX__) && !defined(__WXMOTIF__)
-# define __WXMOTIF__
+#if defined(__HPUX__) && !defined(__WXGTK__)
+    #ifndef __WXMOTIF__
+        #define __WXMOTIF__
+    #endif // __WXMOTIF__
 #endif
+
 #if defined(__WXMOTIF__)
-define __X__
+    #define __X__
 #endif
 
 #ifdef __WXMSW__
 #define __WIN32__
 #endif
 
+#ifdef __WXWINE__
+  #ifndef __WIN32__
+    #define __WIN32__
+  #endif
+  #ifndef __WIN95__
+    #define __WIN95__
+  #endif
+  #ifndef STRICT
+    #define STRICT
+  #endif
+#endif
+
 #ifndef __WIN32__
 #define __WIN16__
 #endif
         // in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed)
         // but not implemented, so we must #define it
         #define bool unsigned int
+    #elif defined(__VISUALC__) && (__VISUALC__ == 1010)
+        // For VisualC++ 4.1, we need to define
+        // bool as something between 4.0 & 5.0...
+        typedef unsigned int wxbool;
+        #define bool wxbool
+        #define HAVE_BOOL
     #elif defined(__VISUALC__) && (__VISUALC__ > 1020)
         // VC++ supports bool since 4.2
         #define HAVE_BOOL
     #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
         // Watcom 11+ supports bool
         #define HAVE_BOOL
+    #elif defined(__GNUWIN32__)
+        // Cygwin supports bool
+        #define HAVE_BOOL
     #endif // compilers
 #endif // HAVE_BOOL
 
     typedef unsigned int bool;
 #endif // bool
 
-typedef unsigned char wxByte;
 typedef short int WXTYPE;
+
+// special care should be taken with this type under Windows where the real
+// window id is unsigned, so we must always do the cast before comparing them
+// (or else they would be always different!). Usign wxGetWindowId() which does
+// the cast itself is recommended. Note that this type can't be unsigned
+// because -1 is a valid (and largely used) value for window id.
 typedef int wxWindowID;
 
 // Macro to cut down on compiler warnings.
@@ -327,8 +364,133 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse;
 // Callback function type definition
 typedef void (*wxFunction) (wxObject&, wxEvent&);
 
+// ----------------------------------------------------------------------------
+// machine specific settings
+// ----------------------------------------------------------------------------
+
+// fixed length types
+
+typedef  char    signed  wxInt8;
+typedef  char  unsigned  wxUint8;
+
+#ifdef __WIN16__
+typedef  int     signed  wxInt16;
+typedef  int   unsigned  wxUint16;
+typedef  long    signed  wxInt32;
+typedef  long  unsigned  wxUint32;
+#endif
+
+#ifdef __WIN32__
+typedef  short   signed  wxInt16;
+typedef  short unsigned  wxUint16;
+typedef  int     signed  wxInt32;
+typedef  int   unsigned  wxUint32;
+#endif
+
+#ifdef __WXMAC__
+typedef  short   signed  wxInt16;
+typedef  short unsigned  wxUint16;
+typedef  int     signed  wxInt32;
+typedef  int   unsigned  wxUint32;
+#endif
+
+#ifdef __WXOS2__
+typedef  short   signed  wxInt16;
+typedef  short unsigned  wxUint16;
+typedef  int     signed  wxInt32;
+typedef  int   unsigned  wxUint32;
+#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
+  #else
+    typedef  short   signed  wxInt16;
+    typedef  short unsigned  wxUint16;
+    typedef  int     signed  wxInt32;
+    typedef  int   unsigned  wxUint32;
+  #endif
+#endif
+
+typedef  wxUint8         wxByte;
+typedef  wxUint16        wxWord;
+
+// byte sex
+
+#define  wxBIG_ENDIAN     4321
+#define  wxLITTLE_ENDIAN  1234
+#define  wxPDP_ENDIAN     3412
+
+#ifdef WORDS_BIGENDIAN
+#define  wxBYTE_ORDER  wxBIG_ENDIAN
+#else
+#define  wxBYTE_ORDER  wxLITTLE_ENDIAN
+#endif
+
+// byte swapping
+
+#define wxUINT16_SWAP_ALWAYS(val) \
+   ((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) | \
+    (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \
+    (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \
+    (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
+
+#define wxINT32_SWAP_ALWAYS(val) \
+   ((wxInt32) ( \
+    (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
+    (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \
+    (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \
+    (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
+
+// machine specific byte swapping
+
+#ifdef WORDS_BIGENDIAN
+  #define wxUINT16_SWAP_ON_BE(val)  wxUINT16_SWAP_ALWAYS(val)
+  #define wxINT16_SWAP_ON_BE(val)   wxINT16_SWAP_ALWAYS(val)
+  #define wxUINT16_SWAP_ON_LE(val)  (val)
+  #define wxINT16_SWAP_ON_LE(val)   (val)
+  #define wxUINT32_SWAP_ON_BE(val)  wxUINT32_SWAP_ALWAYS(val)
+  #define wxINT32_SWAP_ON_BE(val)   wxINT32_SWAP_ALWAYS(val)
+  #define wxUINT32_SWAP_ON_LE(val)  (val)
+  #define wxINT32_SWAP_ON_LE(val)   (val)
+#else
+  #define wxUINT16_SWAP_ON_LE(val)  wxUINT16_SWAP_ALWAYS(val)
+  #define wxINT16_SWAP_ON_LE(val)   wxINT16_SWAP_ALWAYS(val)
+  #define wxUINT16_SWAP_ON_BE(val)  (val)
+  #define wxINT16_SWAP_ON_BE(val)   (val)
+  #define wxUINT32_SWAP_ON_LE(val)  wxUINT32_SWAP_ALWAYS(val)
+  #define wxINT32_SWAP_ON_LE(val)   wxINT32_SWAP_ALWAYS(val)
+  #define wxUINT32_SWAP_ON_BE(val)  (val)
+  #define wxINT32_SWAP_ON_BE(val)   (val)
+#endif
+
+// ----------------------------------------------------------------------------
+// Window style flags
+// ----------------------------------------------------------------------------
+
 /*
- * Window style flags.
  * Values are chosen so they can be |'ed in a bit list.
  * Some styles are used across more than one group,
  * so the values mustn't clash with others in the group.
@@ -353,7 +515,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxSUNKEN_BORDER     0x08000000
 #define wxRAISED_BORDER     0x04000000
 #define wxBORDER            0x02000000
-#define wxSIMPLE_BORDER     0x02000000
+#define wxSIMPLE_BORDER     wxBORDER
 #define wxSTATIC_BORDER     0x01000000
 #define wxTRANSPARENT_WINDOW 0x00100000
 #define wxNO_BORDER         0x00200000
@@ -374,10 +536,18 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 // outside of dialogs.
 #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
+
 // Orientations
-#define wxHORIZONTAL     0x01
-#define wxVERTICAL       0x02
-#define wxBOTH           (wxVERTICAL|wxHORIZONTAL)
+enum wxOrientation
+{
+    wxHORIZONTAL = 0x01,
+    wxVERTICAL   = 0x02,
+    wxBOTH       = (wxVERTICAL | wxHORIZONTAL)
+};
+
 #define wxCENTER_FRAME   0x04  /* centering into frame rather than screen */
 
 /*
@@ -397,14 +567,24 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxRESIZE_BORDER         0x0040
 #define wxDIALOG_MODAL          0x0020
 #define wxDIALOG_MODELESS       0x0000
+/* Add for normal Windows frame behaviour */
+#define wxFRAME_FLOAT_ON_PARENT 0x0020
 
-#define wxDEFAULT_FRAME_STYLE    (wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
 
 #if WXWIN_COMPATIBILITY
 #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
 #endif
 
-#define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME)
+#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)
+#else
+// Under Unix, the dialogs don't have a system menu. Specifying
+// wxSYSTEM_MENU here, will make a close button appear.
+#   define wxDEFAULT_DIALOG_STYLE  (wxCAPTION)
+#endif
+
 
 /*
  * Subwindow style flags
@@ -498,6 +678,8 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxGA_PROGRESSBAR     0x0004
 #define wxGA_HORIZONTAL      wxHORIZONTAL
 #define wxGA_VERTICAL        wxVERTICAL
+/* Windows only */
+#define wxGA_SMOOTH          0x0008
 
 /*
  * wxSlider flags
@@ -523,7 +705,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxSB_VERTICAL        wxVERTICAL
 
 /*
- * wxButton flags
+ * wxButton flags (Win32 only)
  */
 #define wxBU_AUTODRAW        0x0004
 #define wxBU_NOAUTODRAW      0x0000
@@ -535,6 +717,11 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxTR_EDIT_LABELS     0x0008
 #define wxTR_LINES_AT_ROOT   0x0010
 
+#define wxTR_SINGLE          0x0000
+#define wxTR_MULTIPLE        0x0020
+#define wxTR_EXTENDED        0x0040
+#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080
+
 /*
  * wxListCtrl flags
  */
@@ -579,6 +766,8 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxSP_NOBORDER       0x0000
 #define wxSP_3D             0x0004
 #define wxSP_BORDER         0x0008
+#define wxSP_PERMIT_UNSPLIT 0x0010
+#define wxSP_LIVE_UPDATE    0x0020
 
 /*
  * wxFrame extra flags
@@ -607,6 +796,19 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 
 #define wxST_SIZEGRIP       0x0002
 
+/*
+ * wxStaticLine flags
+ */
+#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
+
 /*
  * GDI descriptions
  */
@@ -708,11 +910,12 @@ typedef enum
 #define wxCANCEL            0x0004
 #define wxYES               0x0008
 #define wxNO                0x0010
-
-#define wxICON_EXCLAMATION  0x0020
-#define wxICON_HAND         0x0040
-#define wxICON_QUESTION     0x0080
-#define wxICON_INFORMATION  0x0100
+#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
@@ -737,9 +940,7 @@ typedef enum
 // Don't do parent client adjustments (for implementation only)
 #define wxSIZE_NO_ADJUSTMENTS   0x0008
 
-#ifndef __WXGTK__
-
-enum wxDataFormat
+enum wxDataFormatId
 {
   wxDF_INVALID =          0,
   wxDF_TEXT =             1,  /* CF_TEXT */
@@ -758,91 +959,119 @@ enum wxDataFormat
   wxDF_ENHMETAFILE =      14,
   wxDF_FILENAME =         15, /* CF_HDROP */
   wxDF_LOCALE =           16,
-  wxDF_PRIVATE =          20
+  wxDF_PRIVATE =          20,
+  wxDF_MAX
 };
 
-#endif
-
 /* Virtual keycodes */
 
 enum wxKeyCode
 {
- WXK_BACK    =   8,
- WXK_TAB     =   9,
- WXK_RETURN  =    13,
- WXK_ESCAPE  =    27,
- WXK_SPACE   =    32,
- WXK_DELETE  = 127,
-
- WXK_START   = 300,
- WXK_LBUTTON,
- WXK_RBUTTON,
- WXK_CANCEL,
- WXK_MBUTTON,
- WXK_CLEAR,
- WXK_SHIFT,
- WXK_CONTROL,
- WXK_MENU,
- WXK_PAUSE,
- WXK_CAPITAL,
- WXK_PRIOR,  /* Page up */
- WXK_NEXT,   /* Page down */
- WXK_END,
- WXK_HOME,
- WXK_LEFT,
- WXK_UP,
- WXK_RIGHT,
- WXK_DOWN,
- WXK_SELECT,
- WXK_PRINT,
- WXK_EXECUTE,
- WXK_SNAPSHOT,
- WXK_INSERT,
- WXK_HELP,
- WXK_NUMPAD0,
- WXK_NUMPAD1,
- WXK_NUMPAD2,
- WXK_NUMPAD3,
- WXK_NUMPAD4,
- WXK_NUMPAD5,
- WXK_NUMPAD6,
- WXK_NUMPAD7,
- WXK_NUMPAD8,
- WXK_NUMPAD9,
- WXK_MULTIPLY,
- WXK_ADD,
- WXK_SEPARATOR,
- WXK_SUBTRACT,
- WXK_DECIMAL,
- WXK_DIVIDE,
- WXK_F1,
- WXK_F2,
- WXK_F3,
- WXK_F4,
- WXK_F5,
- WXK_F6,
- WXK_F7,
- WXK_F8,
- WXK_F9,
- WXK_F10,
- WXK_F11,
- WXK_F12,
- WXK_F13,
- WXK_F14,
- WXK_F15,
- WXK_F16,
- WXK_F17,
- WXK_F18,
- WXK_F19,
- WXK_F20,
- WXK_F21,
- WXK_F22,
- WXK_F23,
- WXK_F24,
- WXK_NUMLOCK,
- WXK_SCROLL,
- WXK_PAGEUP,
- WXK_PAGEDOWN
+  WXK_BACK    =    8,
+  WXK_TAB     =    9,
+  WXK_RETURN  =    13,
+  WXK_ESCAPE  =    27,
+  WXK_SPACE   =    32,
+  WXK_DELETE  =    127,
+
+  WXK_START   = 300,
+  WXK_LBUTTON,
+  WXK_RBUTTON,
+  WXK_CANCEL,
+  WXK_MBUTTON,
+  WXK_CLEAR,
+  WXK_SHIFT,
+  WXK_ALT,
+  WXK_CONTROL,
+  WXK_MENU,
+  WXK_PAUSE,
+  WXK_CAPITAL,
+  WXK_PRIOR,  /* Page up */
+  WXK_NEXT,   /* Page down */
+  WXK_END,
+  WXK_HOME,
+  WXK_LEFT,
+  WXK_UP,
+  WXK_RIGHT,
+  WXK_DOWN,
+  WXK_SELECT,
+  WXK_PRINT,
+  WXK_EXECUTE,
+  WXK_SNAPSHOT,
+  WXK_INSERT,
+  WXK_HELP,
+  WXK_NUMPAD0,
+  WXK_NUMPAD1,
+  WXK_NUMPAD2,
+  WXK_NUMPAD3,
+  WXK_NUMPAD4,
+  WXK_NUMPAD5,
+  WXK_NUMPAD6,
+  WXK_NUMPAD7,
+  WXK_NUMPAD8,
+  WXK_NUMPAD9,
+  WXK_MULTIPLY,
+  WXK_ADD,
+  WXK_SEPARATOR,
+  WXK_SUBTRACT,
+  WXK_DECIMAL,
+  WXK_DIVIDE,
+  WXK_F1,
+  WXK_F2,
+  WXK_F3,
+  WXK_F4,
+  WXK_F5,
+  WXK_F6,
+  WXK_F7,
+  WXK_F8,
+  WXK_F9,
+  WXK_F10,
+  WXK_F11,
+  WXK_F12,
+  WXK_F13,
+  WXK_F14,
+  WXK_F15,
+  WXK_F16,
+  WXK_F17,
+  WXK_F18,
+  WXK_F19,
+  WXK_F20,
+  WXK_F21,
+  WXK_F22,
+  WXK_F23,
+  WXK_F24,
+  WXK_NUMLOCK,
+  WXK_SCROLL,
+  WXK_PAGEUP,
+  WXK_PAGEDOWN,
+
+  WXK_NUMPAD_SPACE,
+  WXK_NUMPAD_TAB,
+  WXK_NUMPAD_ENTER,
+  WXK_NUMPAD_F1,
+  WXK_NUMPAD_F2,
+  WXK_NUMPAD_F3,
+  WXK_NUMPAD_F4,
+  WXK_NUMPAD_HOME,
+  WXK_NUMPAD_LEFT,
+  WXK_NUMPAD_UP,
+  WXK_NUMPAD_RIGHT,
+  WXK_NUMPAD_DOWN,
+  WXK_NUMPAD_PRIOR,
+  WXK_NUMPAD_PAGEUP,
+  WXK_NUMPAD_NEXT,
+  WXK_NUMPAD_PAGEDOWN,
+  WXK_NUMPAD_END,
+  WXK_NUMPAD_BEGIN,
+  WXK_NUMPAD_INSERT,
+  WXK_NUMPAD_DELETE,
+  WXK_NUMPAD_EQUAL,
+  WXK_NUMPAD_MULTIPLY,
+  WXK_NUMPAD_ADD,
+  WXK_NUMPAD_SEPARATOR,
+  WXK_NUMPAD_SUBTRACT,
+  WXK_NUMPAD_DECIMAL,
+  WXK_NUMPAD_DIVIDE
 };
 
 /* OS mnemonics -- Identify the running OS (useful for Windows)
@@ -1043,8 +1272,7 @@ typedef enum {
 
 
 #ifdef __WXMSW__
-/* Stand-ins for Windows types, to avoid
- * #including all of windows.h */
+// Stand-ins for Windows types, to avoid #including all of windows.h
 typedef unsigned long   WXHWND;
 typedef unsigned long   WXHANDLE;
 typedef unsigned long   WXHICON;
@@ -1072,18 +1300,21 @@ typedef void *          WXMSG;
 typedef unsigned long   WXHCONV;
 typedef unsigned long   WXHKEY;
 typedef unsigned long   WXHTREEITEM;
+
 typedef void *          WXDRAWITEMSTRUCT;
 typedef void *          WXMEASUREITEMSTRUCT;
 typedef void *          WXLPCREATESTRUCT;
-#ifdef __GNUWIN32__
-typedef int (*WXFARPROC)();
+
+#if defined(__GNUWIN32__) || defined(__WXWINE__)
+    typedef int (*WXFARPROC)();
 #elif defined(__WIN32__)
-typedef int (__stdcall *WXFARPROC)();
+    typedef int (__stdcall *WXFARPROC)();
 #else
-typedef int (*WXFARPROC)();
+    typedef int (*WXFARPROC)();
 #endif
 
-#endif
+typedef WXHWND WXWidget;
+#endif // MSW
 
 #ifdef __WXMOTIF__
 /* Stand-ins for X/Xt/Motif types */
@@ -1102,7 +1333,7 @@ typedef void*           WXFont;
 typedef void*           WXImage;
 typedef void*           WXCursor;
 typedef void*           WXFontList;
-#endif
+#endif // Motif
 
 #ifdef __WXGTK__
 /* Stand-ins for GLIB types */
@@ -1137,7 +1368,8 @@ typedef struct _GtkAccelGroup     GtkAccelGroup;
 typedef        struct _GtkItemFactory    GtkItemFactory;
 typedef        struct _GtkSelectionData  GtkSelectionData;
 
-#endif
+typedef GtkWidget *WXWidget;
+#endif // GTK
 
 // This is required because of clashing macros in windows.h, which may be
 // included before or after wxWindows classes, and therefore must be
@@ -1173,5 +1405,14 @@ typedef  struct _GtkSelectionData  GtkSelectionData;
 #endif
   // __WXMSW__
 
+// ---------------------------------------------------------------------------
+// macro to define a class without copy ctor nor assignment operator
+// ---------------------------------------------------------------------------
+
+#define DECLARE_NO_COPY_CLASS(classname)        \
+    private:                                    \
+        classname(const classname&);            \
+        classname& operator=(const classname&)
+
 #endif
     // _WX_DEFS_H_