From fc7a2a602b4bd9308be21bc07e40a680f483438e Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Tue, 22 Jul 2003 00:24:07 +0000
Subject: [PATCH] undisable many warnings for VC++ in defs.h and fixed several
 thousands of them in the sources

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 include/wx/bmpbuttn.h          |   5 +-
 include/wx/busyinfo.h          |   3 +
 include/wx/button.h            |   4 ++
 include/wx/calctrl.h           |   2 +-
 include/wx/checkbox.h          |   5 ++
 include/wx/checklst.h          |   4 ++
 include/wx/choice.h            |   7 ++-
 include/wx/control.h           |   4 ++
 include/wx/cshelp.h            |   2 +-
 include/wx/ctrlsub.h           |   3 +
 include/wx/dataobj.h           |  10 ++++
 include/wx/datetime.h          |   5 +-
 include/wx/dc.h                |   4 ++
 include/wx/dcbuffer.h          |   2 +
 include/wx/dcmirror.h          |   2 +
 include/wx/defs.h              |   7 +--
 include/wx/dialog.h            |   1 +
 include/wx/dnd.h               |   6 ++
 include/wx/event.h             | 104 +++++++++++++++------------------
 include/wx/fdrepdlg.h          |   2 +-
 include/wx/fontdlg.h           |   2 +
 include/wx/gauge.h             |   3 +
 include/wx/generic/choicdgg.h  |   4 +-
 include/wx/generic/grid.h      |  20 +++++--
 include/wx/generic/gridctrl.h  |   4 ++
 include/wx/generic/panelg.h    |   2 +-
 include/wx/generic/scrolwin.h  |   2 +-
 include/wx/generic/splitter.h  |   2 +-
 include/wx/hash.h              |   2 +
 include/wx/html/htmlcell.h     |   6 ++
 include/wx/html/m_templ.h      |   1 +
 include/wx/listbase.h          |   2 +-
 include/wx/listbox.h           |   7 ++-
 include/wx/listctrl.h          |   2 +-
 include/wx/log.h               |   3 +
 include/wx/memconf.h           |   2 +
 include/wx/memtext.h           |   3 +
 include/wx/msw/app.h           |   1 +
 include/wx/msw/bmpbuttn.h      |   2 +-
 include/wx/msw/button.h        |   2 +-
 include/wx/msw/caret.h         |   2 +
 include/wx/msw/checkbox.h      |   2 +-
 include/wx/msw/checklst.h      |   2 +-
 include/wx/msw/choice.h        |   4 +-
 include/wx/msw/colordlg.h      |   2 +-
 include/wx/msw/combobox.h      |   5 +-
 include/wx/msw/control.h       |  14 ++---
 include/wx/msw/dc.h            |   3 +
 include/wx/msw/dcclient.h      |   6 +-
 include/wx/msw/dcmemory.h      |   2 +-
 include/wx/msw/dcprint.h       |   2 +-
 include/wx/msw/dcscreen.h      |   2 +-
 include/wx/msw/dirdlg.h        |   2 +-
 include/wx/msw/fontdlg.h       |   2 +-
 include/wx/msw/frame.h         |   2 +-
 include/wx/msw/gauge95.h       |   5 +-
 include/wx/msw/listbox.h       |   2 +-
 include/wx/msw/mdi.h           |   4 +-
 include/wx/msw/menu.h          |   4 +-
 include/wx/msw/menuitem.h      |   2 +-
 include/wx/msw/notebook.h      |   2 +-
 include/wx/msw/ole/dataobj2.h  |   8 +++
 include/wx/msw/popupwin.h      |   2 +-
 include/wx/msw/printwin.h      |   5 +-
 include/wx/msw/radiobut.h      |   2 +-
 include/wx/msw/scrolbar.h      |   3 +-
 include/wx/msw/slider95.h      |   2 +-
 include/wx/msw/spinbutt.h      |   2 +-
 include/wx/msw/statbox.h       |   2 +-
 include/wx/msw/statbr95.h      |   2 +-
 include/wx/msw/statline.h      |   4 +-
 include/wx/msw/stattext.h      |   2 +-
 include/wx/msw/taskbar.h       |   2 +-
 include/wx/msw/textctrl.h      |   2 +-
 include/wx/msw/timer.h         |   2 +-
 include/wx/notebook.h          |   5 +-
 include/wx/object.h            |   9 +++
 include/wx/popupwin.h          |   2 +
 include/wx/prntbase.h          |   1 +
 include/wx/process.h           |   2 +-
 include/wx/protocol/file.h     |   2 +-
 include/wx/protocol/ftp.h      |   2 +-
 include/wx/protocol/protocol.h |   2 +-
 include/wx/renderer.h          |   2 +
 include/wx/sckstrm.h           |   2 +
 include/wx/scrolbar.h          |   5 ++
 include/wx/scrolwin.h          |   3 +-
 include/wx/slider.h            |   4 ++
 include/wx/socket.h            |   2 +-
 include/wx/spinbutt.h          |   4 +-
 include/wx/statbmp.h           |   5 +-
 include/wx/statbox.h           |   5 ++
 include/wx/statline.h          |   2 +
 include/wx/stattext.h          |   7 ++-
 include/wx/stream.h            |   6 ++
 include/wx/taskbar.h           |   8 +++
 include/wx/tbarbase.h          |   2 +-
 include/wx/textctrl.h          |   4 +-
 include/wx/textfile.h          |   3 +
 include/wx/timer.h             |   4 +-
 include/wx/toplevel.h          |   7 +--
 include/wx/treebase.h          |   2 +-
 include/wx/txtstrm.h           |   3 +
 include/wx/wfstream.h          |  23 ++++++--
 include/wx/wizard.h            |   9 ++-
 src/common/appcmn.cpp          |   2 +-
 src/common/artstd.cpp          |   2 +-
 src/common/dircmn.cpp          |   2 +
 src/common/fldlgcmn.cpp        |   2 +-
 src/common/fontmap.cpp         |   2 +
 src/common/init.cpp            |   8 +++
 src/common/sckipc.cpp          |   1 +
 src/common/strconv.cpp         |   2 +
 src/common/tbarbase.cpp        |   2 -
 src/common/textcmn.cpp         |   2 +
 src/generic/tipdlg.cpp         |   2 +
 src/html/helpdata.cpp          |   5 ++
 src/html/htmlcell.cpp          |  10 ++--
 src/html/htmlwin.cpp           |   6 +-
 src/html/m_dflist.cpp          |   2 +
 src/html/m_fonts.cpp           |   9 +++
 src/html/m_hline.cpp           |   3 +
 src/html/m_image.cpp           |   6 ++
 src/html/m_layout.cpp          |  11 +++-
 src/html/m_links.cpp           |   3 +
 src/html/m_list.cpp            |   2 +
 src/html/m_pre.cpp             |   1 +
 src/html/m_style.cpp           |   1 +
 src/msw/notebook.cpp           |   3 +
 src/msw/treectrl.cpp           |   4 ++
 130 files changed, 421 insertions(+), 174 deletions(-)

diff --git a/include/wx/bmpbuttn.h b/include/wx/bmpbuttn.h
index abe3cb7632..ebaafefda3 100644
--- a/include/wx/bmpbuttn.h
+++ b/include/wx/bmpbuttn.h
@@ -74,10 +74,13 @@ protected:
     // the margins around the bitmap
     int m_marginX,
         m_marginY;
+
 private:
     // Prevent Virtual function hiding warnings
     void SetLabel(const wxString& rsLabel)
-    { wxWindowBase::SetLabel(rsLabel); }
+        { wxWindowBase::SetLabel(rsLabel); }
+
+    DECLARE_NO_COPY_CLASS(wxBitmapButtonBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/busyinfo.h b/include/wx/busyinfo.h
index b4a902dc15..2ec17ec88a 100644
--- a/include/wx/busyinfo.h
+++ b/include/wx/busyinfo.h
@@ -28,6 +28,9 @@ class WXDLLEXPORT wxInfoFrame : public wxFrame
 {
 public:
     wxInfoFrame(wxWindow *parent, const wxString& message);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxInfoFrame)
 };
 
 
diff --git a/include/wx/button.h b/include/wx/button.h
index 443402f23a..d4032a3b6c 100644
--- a/include/wx/button.h
+++ b/include/wx/button.h
@@ -48,6 +48,8 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxButtonNameStr;
 class WXDLLEXPORT wxButtonBase : public wxControl
 {
 public:
+    wxButtonBase() { }
+
     // show the image in the button in addition to the label
     virtual void SetImageLabel(const wxBitmap& WXUNUSED(bitmap)) { }
 
@@ -60,6 +62,8 @@ public:
 
     // returns the default button size for this platform
     static wxSize GetDefaultSize();
+
+    DECLARE_NO_COPY_CLASS(wxButtonBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/calctrl.h b/include/wx/calctrl.h
index 39c8e6ba0c..4aa3baee2f 100644
--- a/include/wx/calctrl.h
+++ b/include/wx/calctrl.h
@@ -178,7 +178,7 @@ private:
     wxDateTime m_date;
     wxDateTime::WeekDay m_wday;
 
-    DECLARE_DYNAMIC_CLASS(wxCalendarEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxCalendarEvent)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/checkbox.h b/include/wx/checkbox.h
index 8ccb6539e3..a011252b43 100644
--- a/include/wx/checkbox.h
+++ b/include/wx/checkbox.h
@@ -27,11 +27,16 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxCheckBoxNameStr;
 class WXDLLEXPORT wxCheckBoxBase : public wxControl
 {
 public:
+    wxCheckBoxBase() { }
+
     // set/get the checked status of the listbox
     virtual void SetValue(bool value) = 0;
     virtual bool GetValue() const = 0;
 
     bool IsChecked() const { return GetValue(); }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxCheckBoxBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/checklst.h b/include/wx/checklst.h
index 22f76f3812..ce34f6cbcd 100644
--- a/include/wx/checklst.h
+++ b/include/wx/checklst.h
@@ -23,9 +23,13 @@
 class WXDLLEXPORT wxCheckListBoxBase : public wxListBox
 {
 public:
+    wxCheckListBoxBase() { }
+
     // check list box specific methods
     virtual bool IsChecked(size_t item) const = 0;
     virtual void Check(size_t item, bool check = TRUE) = 0;
+
+    DECLARE_NO_COPY_CLASS(wxCheckListBoxBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/choice.h b/include/wx/choice.h
index 9decf2b785..a86635b080 100644
--- a/include/wx/choice.h
+++ b/include/wx/choice.h
@@ -37,9 +37,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxChoiceNameStr;
 class WXDLLEXPORT wxChoiceBase : public wxControlWithItems
 {
 public:
-    // all generic methods are in wxControlWithItems
+    wxChoiceBase() { }
     virtual ~wxChoiceBase();
 
+    // all generic methods are in wxControlWithItems
+
     // single selection logic
     virtual void SetSelection(int n) = 0;
     virtual bool SetStringSelection(const wxString& s);
@@ -54,6 +56,9 @@ public:
 
     // emulate selecting the item event.GetInt()
     void Command(wxCommandEvent& event);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxChoiceBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/control.h b/include/wx/control.h
index e4bd239801..901615d51e 100644
--- a/include/wx/control.h
+++ b/include/wx/control.h
@@ -35,6 +35,8 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxControlNameStr;
 class WXDLLEXPORT wxControlBase : public wxWindow
 {
 public:
+    wxControlBase() { }
+
     virtual ~wxControlBase();
 
     // Create() function adds the validator parameter
@@ -68,6 +70,8 @@ protected:
 
     // initialize the common fields of wxCommandEvent
     void InitCommandEvent(wxCommandEvent& event) const;
+
+    DECLARE_NO_COPY_CLASS(wxControlBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/cshelp.h b/include/wx/cshelp.h
index 99169934b1..31d6e205c3 100644
--- a/include/wx/cshelp.h
+++ b/include/wx/cshelp.h
@@ -79,7 +79,7 @@ public:
     void OnContextHelp(wxCommandEvent& event);
 
 private:
-    DECLARE_CLASS(wxContextHelpButton)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxContextHelpButton)
     DECLARE_EVENT_TABLE()
 };
 
diff --git a/include/wx/ctrlsub.h b/include/wx/ctrlsub.h
index 20c3e5b5a4..6716e7ca81 100644
--- a/include/wx/ctrlsub.h
+++ b/include/wx/ctrlsub.h
@@ -161,6 +161,9 @@ public:
     {
         return wxItemContainer::GetClientObject(n);
     }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxControlWithItems);
 };
 
 #endif // wxUSE_CONTROLS
diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h
index a80b6a4c6e..631ba6246e 100644
--- a/include/wx/dataobj.h
+++ b/include/wx/dataobj.h
@@ -241,6 +241,8 @@ public:
 private:
     // the one and only format we support
     wxDataFormat m_format;
+
+    DECLARE_NO_COPY_CLASS(wxDataObjectSimple)
 };
 
 // ----------------------------------------------------------------------------
@@ -294,6 +296,8 @@ private:
     // the index of the preferred one (0 initially, so by default the first
     // one is the preferred)
     size_t m_preferred;
+
+    DECLARE_NO_COPY_CLASS(wxDataObjectComposite)
 };
 
 // ============================================================================
@@ -341,6 +345,8 @@ private:
         { return(wxDataObjectSimple::GetDataHere(format, pBuf)); }
     bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf)
         { return(wxDataObjectSimple::SetData(format, nLen, pBuf)); }
+
+    DECLARE_NO_COPY_CLASS(wxTextDataObject)
 };
 
 // ----------------------------------------------------------------------------
@@ -364,6 +370,8 @@ public:
 
 protected:
     wxBitmap m_bitmap;
+
+    DECLARE_NO_COPY_CLASS(wxBitmapDataObjectBase)
 };
 
 // ----------------------------------------------------------------------------
@@ -395,6 +403,8 @@ private:
         { return(wxDataObjectSimple::GetDataSize(format)); }
     bool GetDataHere(const wxDataFormat& format, void* pBuf) const
         { return(wxDataObjectSimple::GetDataHere(format, pBuf)); }
+
+    DECLARE_NO_COPY_CLASS(wxFileDataObjectBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/datetime.h b/include/wx/datetime.h
index 55a7e992e8..39c60d954f 100644
--- a/include/wx/datetime.h
+++ b/include/wx/datetime.h
@@ -1490,8 +1490,9 @@ inline bool wxDateTime::SetToLastWeekDay(WeekDay weekday,
     return SetToWeekDay(weekday, -1, month, year);
 }
 
-inline wxDateTime wxDateTime::GetWeekDayInSameWeek(WeekDay weekday,
-                                                   WeekFlags flags) const
+inline wxDateTime
+wxDateTime::GetWeekDayInSameWeek(WeekDay weekday,
+                                 WeekFlags WXUNUSED(flags)) const
 {
     MODIFY_AND_RETURN( SetToWeekDayInSameWeek(weekday) );
 }
diff --git a/include/wx/dc.h b/include/wx/dc.h
index 39d9c5563b..3cbf773cd7 100644
--- a/include/wx/dc.h
+++ b/include/wx/dc.h
@@ -790,6 +790,8 @@ private:
     wxDC& m_dc;
 
     wxColour m_colFgOld;
+
+    DECLARE_NO_COPY_CLASS(wxDCTextColourChanger)
 };
 
 // ----------------------------------------------------------------------------
@@ -809,6 +811,8 @@ public:
 
 private:
     wxDC& m_dc;
+
+    DECLARE_NO_COPY_CLASS(wxDCClipper)
 };
 
 #endif
diff --git a/include/wx/dcbuffer.h b/include/wx/dcbuffer.h
index 431dd95cfc..a46dd51d94 100644
--- a/include/wx/dcbuffer.h
+++ b/include/wx/dcbuffer.h
@@ -98,6 +98,8 @@ public:
     // default copy ctor ok.
 
     ~wxBufferedPaintDC();
+
+    DECLARE_NO_COPY_CLASS(wxBufferedPaintDC)
 };
 
 
diff --git a/include/wx/dcmirror.h b/include/wx/dcmirror.h
index acf88579cd..5b3a13988c 100644
--- a/include/wx/dcmirror.h
+++ b/include/wx/dcmirror.h
@@ -278,6 +278,8 @@ private:
     wxMirrorDC& m_dc;
 
     bool m_mirror;
+
+    DECLARE_NO_COPY_CLASS(wxMirrorDC)
 };
 
 #endif // _WX_DCMIRROR_H_
diff --git a/include/wx/defs.h b/include/wx/defs.h
index 0796f7ffcf..59a096dad6 100644
--- a/include/wx/defs.h
+++ b/include/wx/defs.h
@@ -54,13 +54,10 @@
 
 // suppress some Visual C++ warnings
 #ifdef __VISUALC__
+    // the only "real" warning here is 4244 but there arej ust too many of them
+    // in our code... one day someone should go and fix them but until then...
 #   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
-#   pragma warning(disable:4699)    // using precompiled header
-#   pragma warning(disable:4134)    // conversion between pointers to members of same class
 #   pragma warning(disable:4710)    // function not inlined
 #   pragma warning(disable:4097)    // typedef used as class
 #ifndef WIN32
diff --git a/include/wx/dialog.h b/include/wx/dialog.h
index f13cc11a5f..fe3959626e 100644
--- a/include/wx/dialog.h
+++ b/include/wx/dialog.h
@@ -50,6 +50,7 @@ protected:
     // the return code from modal dialog
     int m_returnCode;
 
+    DECLARE_NO_COPY_CLASS(wxDialogBase)
     DECLARE_EVENT_TABLE()
     WX_DECLARE_CONTROL_CONTAINER();
 };
diff --git a/include/wx/dnd.h b/include/wx/dnd.h
index 46826d45a7..d7a4010276 100644
--- a/include/wx/dnd.h
+++ b/include/wx/dnd.h
@@ -231,6 +231,9 @@ public:
     virtual bool OnDropText(wxCoord x, wxCoord y, const wxString& text) = 0;
 
     virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxTextDropTarget)
 };
 
 // A drop target which accepts files (dragged from File Manager or Explorer)
@@ -244,6 +247,9 @@ public:
                              const wxArrayString& filenames) = 0;
 
     virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxFileDropTarget)
 };
 
 #endif // wxUSE_DRAG_AND_DROP
diff --git a/include/wx/event.h b/include/wx/event.h
index a4d7b5685a..61a0634053 100644
--- a/include/wx/event.h
+++ b/include/wx/event.h
@@ -459,6 +459,8 @@ public:
 private:
     wxEvent& m_event;
     int m_propagationLevelOld;
+
+    DECLARE_NO_COPY_CLASS(wxPropagationDisabler)
 };
 
 /*
@@ -482,6 +484,8 @@ public:
 
 private:
     wxEvent& m_event;
+
+    DECLARE_NO_COPY_CLASS(wxPropagateOnce)
 };
 
 #if wxUSE_GUI
@@ -508,9 +512,6 @@ private:
 
 class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent
 {
-private:
-    wxCommandEvent& operator=(const wxCommandEvent& event);
-
 public:
     wxCommandEvent(wxEventType commandType = wxEVT_NULL, int winid = 0);
 
@@ -564,7 +565,7 @@ public:
     wxClientData*     m_clientObject;  // Arbitrary client object
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxCommandEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCommandEvent)
 };
 
 // this class adds a possibility to react (from the user) code to a control
@@ -595,7 +596,7 @@ private:
     bool m_bAllow;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxNotifyEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxNotifyEvent)
 };
 
 // Scroll event class, derived form wxCommandEvent. wxScrollEvents are
@@ -626,7 +627,7 @@ public:
     virtual wxEvent *Clone() const { return new wxScrollEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxScrollEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxScrollEvent)
 };
 
 // ScrollWin event class, derived fom wxEvent. wxScrollWinEvents
@@ -663,7 +664,7 @@ public:
     long              m_extraLong;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxScrollWinEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxScrollWinEvent)
 };
 
 // Mouse event class
@@ -904,7 +905,7 @@ private:
     wxCursor m_cursor;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxSetCursorEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSetCursorEvent)
 };
 
 // Keyboard input event class
@@ -1051,7 +1052,7 @@ public:
     wxRect m_rect; // Used for wxEVT_SIZING
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxSizeEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSizeEvent)
 };
 
 // Move event class
@@ -1088,7 +1089,7 @@ public:
     wxRect m_rect;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxMoveEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMoveEvent)
 };
 
 // Paint event class
@@ -1125,7 +1126,7 @@ public:
     virtual wxEvent *Clone() const { return new wxPaintEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxPaintEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxPaintEvent)
 };
 
 class WXDLLIMPEXP_CORE wxNcPaintEvent : public wxEvent
@@ -1138,7 +1139,7 @@ public:
     virtual wxEvent *Clone() const { return new wxNcPaintEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxNcPaintEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxNcPaintEvent)
 };
 
 // Erase background event class
@@ -1148,9 +1149,6 @@ private:
 
 class WXDLLIMPEXP_CORE wxEraseEvent : public wxEvent
 {
-private:
-    wxEraseEvent& operator=(const wxEraseEvent& event);
-
 public:
     wxEraseEvent(int Id = 0, wxDC *dc = (wxDC *) NULL)
         : wxEvent(Id, wxEVT_ERASE_BACKGROUND),
@@ -1169,7 +1167,7 @@ public:
     wxDC *m_dc;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxEraseEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxEraseEvent)
 };
 
 // Focus event class
@@ -1180,9 +1178,6 @@ private:
 
 class WXDLLIMPEXP_CORE wxFocusEvent : public wxEvent
 {
-private:
-    wxFocusEvent& operator=(const wxFocusEvent& event);
-
 public:
     wxFocusEvent(wxEventType type = wxEVT_NULL, int winid = 0)
         : wxEvent(winid, type)
@@ -1204,7 +1199,7 @@ private:
     wxWindow *m_win;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxFocusEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxFocusEvent)
 };
 
 // wxChildFocusEvent notifies the parent that a child has got the focus: unlike
@@ -1219,7 +1214,7 @@ public:
     virtual wxEvent *Clone() const { return new wxChildFocusEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxChildFocusEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxChildFocusEvent)
 };
 
 // Activate event class
@@ -1246,7 +1241,7 @@ private:
     bool m_active;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxActivateEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxActivateEvent)
 };
 
 // InitDialog event class
@@ -1264,7 +1259,7 @@ public:
     virtual wxEvent *Clone() const { return new wxInitDialogEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxInitDialogEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxInitDialogEvent)
 };
 
 // Miscellaneous menu event class
@@ -1279,7 +1274,7 @@ class WXDLLIMPEXP_CORE wxMenuEvent : public wxEvent
 public:
     wxMenuEvent(wxEventType type = wxEVT_NULL, int winid = 0, wxMenu* menu = NULL)
         : wxEvent(winid, type)
-        { m_menuId = winid; m_menu = NULL; }
+        { m_menuId = winid; m_menu = menu; }
     wxMenuEvent(const wxMenuEvent & event)
         : wxEvent(event)
     { m_menuId = event.m_menuId; m_menu = event.m_menu; }
@@ -1299,7 +1294,7 @@ private:
     int     m_menuId;
     wxMenu* m_menu;
 
-    DECLARE_DYNAMIC_CLASS(wxMenuEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMenuEvent)
 };
 
 // Window close or session close event class
@@ -1368,7 +1363,7 @@ protected:
 #endif
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxCloseEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCloseEvent)
 
 };
 
@@ -1395,7 +1390,7 @@ protected:
     bool m_show;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxShowEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxShowEvent)
 };
 
 /*
@@ -1421,7 +1416,7 @@ protected:
     bool m_iconized;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxIconizeEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIconizeEvent)
 };
 /*
  wxEVT_MAXIMIZE
@@ -1437,7 +1432,7 @@ public:
     virtual wxEvent *Clone() const { return new wxMaximizeEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxMaximizeEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMaximizeEvent)
 };
 
 // Joystick event class
@@ -1535,7 +1530,7 @@ public:
     virtual wxEvent *Clone() const { return new wxJoystickEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxJoystickEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxJoystickEvent)
 };
 
 // Drop files event class
@@ -1545,9 +1540,6 @@ private:
 
 class WXDLLIMPEXP_CORE wxDropFilesEvent : public wxEvent
 {
-private:
-    wxDropFilesEvent& operator=(const wxDropFilesEvent& event);
-
 public:
     int       m_noFiles;
     wxPoint   m_pos;
@@ -1588,7 +1580,7 @@ public:
     virtual wxEvent *Clone() const { return new wxDropFilesEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxDropFilesEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDropFilesEvent)
 };
 
 // Update UI event
@@ -1681,7 +1673,7 @@ protected:
     static wxUpdateUIMode   sm_updateMode;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxUpdateUIEvent)
 };
 
 /*
@@ -1699,7 +1691,7 @@ public:
     virtual wxEvent *Clone() const { return new wxSysColourChangedEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxSysColourChangedEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSysColourChangedEvent)
 };
 
 /*
@@ -1710,9 +1702,6 @@ private:
 
 class WXDLLIMPEXP_CORE wxMouseCaptureChangedEvent : public wxEvent
 {
-private:
-    wxMouseCaptureChangedEvent operator=(const wxMouseCaptureChangedEvent& event);
-
 public:
     wxMouseCaptureChangedEvent(wxWindowID winid = 0, wxWindow* gainedCapture = NULL)
         : wxEvent(winid, wxEVT_MOUSE_CAPTURE_CHANGED),
@@ -1730,7 +1719,8 @@ public:
 
 private:
     wxWindow* m_gainedCapture;
-    DECLARE_DYNAMIC_CLASS(wxMouseCaptureChangedEvent)
+
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMouseCaptureChangedEvent)
 };
 
 /*
@@ -1739,7 +1729,7 @@ private:
 class WXDLLIMPEXP_CORE wxDisplayChangedEvent : public wxEvent
 {
 private:
-    DECLARE_DYNAMIC_CLASS(wxDisplayChangedEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDisplayChangedEvent)
 
 public:
     wxDisplayChangedEvent()
@@ -1755,9 +1745,6 @@ public:
 
 class WXDLLIMPEXP_CORE wxPaletteChangedEvent : public wxEvent
 {
-private:
-    wxPaletteChangedEvent& operator=(const wxPaletteChangedEvent& event);
-
 public:
     wxPaletteChangedEvent(wxWindowID winid = 0)
         : wxEvent(winid, wxEVT_PALETTE_CHANGED),
@@ -1778,7 +1765,7 @@ protected:
     wxWindow*     m_changedWindow;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxPaletteChangedEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxPaletteChangedEvent)
 };
 
 /*
@@ -1808,7 +1795,7 @@ protected:
     bool m_paletteRealized;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxQueryNewPaletteEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxQueryNewPaletteEvent)
 };
 
 /*
@@ -1818,9 +1805,6 @@ private:
 // NB: don't derive from command event to avoid being propagated to the parent
 class WXDLLIMPEXP_CORE wxNavigationKeyEvent : public wxEvent
 {
-private:
-    wxNavigationKeyEvent& operator=(const wxNavigationKeyEvent& event);
-
 public:
     wxNavigationKeyEvent()
         : wxEvent(0, wxEVT_NAVIGATION_KEY),
@@ -1874,7 +1858,7 @@ private:
     wxWindow *m_focus;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxNavigationKeyEvent)
 };
 
 // Window creation/destruction events: the first is sent as soon as window is
@@ -1897,7 +1881,7 @@ public:
     virtual wxEvent *Clone() const { return new wxWindowCreateEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxWindowCreateEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxWindowCreateEvent)
 };
 
 class WXDLLIMPEXP_CORE wxWindowDestroyEvent : public wxCommandEvent
@@ -1910,7 +1894,7 @@ public:
     virtual wxEvent *Clone() const { return new wxWindowDestroyEvent(*this); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxWindowDestroyEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxWindowDestroyEvent)
 };
 
 // A help event is sent when the user clicks on a window in context-help mode.
@@ -1955,7 +1939,7 @@ protected:
     wxString  m_link;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxHelpEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHelpEvent)
 };
 
 // A Context event is sent when the user right clicks on a window or
@@ -1990,7 +1974,7 @@ protected:
     wxPoint   m_pos;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxContextMenuEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxContextMenuEvent)
 };
 
 // Idle event
@@ -2045,7 +2029,7 @@ protected:
     static wxIdleMode sm_idleMode;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxIdleEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIdleEvent)
 };
 
 #endif // wxUSE_GUI
@@ -2138,6 +2122,9 @@ struct WXDLLIMPEXP_BASE wxEventTableEntry : public wxEventTableEntryBase
     // objects will have been initialized (including the event type constants)
     // and so it will have the correct value when it is needed
     const int& m_eventType;
+
+private:
+    wxEventTableEntry& operator=(const wxEventTableEntry&);
 };
 
 class WXDLLIMPEXP_BASE wxEvtHandler;
@@ -2161,6 +2148,8 @@ struct WXDLLIMPEXP_BASE wxDynamicEventTableEntry : public wxEventTableEntryBase
     // EventFunction is always a member of the EventHandler receiving the 
     // message
     wxEvtHandler* m_eventSink;
+
+    DECLARE_NO_COPY_CLASS(wxDynamicEventTableEntry)
 };
 
 #endif // !WXWIN_COMPATIBILITY_EVENT_TYPES
@@ -2223,6 +2212,8 @@ protected:
 
     size_t                 m_size;
     EventTypeTablePointer *m_eventTypeTable;
+
+    DECLARE_NO_COPY_CLASS(wxEventHashTable)
 };
 
 // ----------------------------------------------------------------------------
@@ -2389,8 +2380,7 @@ protected:
     virtual void *DoGetClientData() const;
 
 private:
-    DECLARE_NO_COPY_CLASS(wxEvtHandler)
-    DECLARE_DYNAMIC_CLASS(wxEvtHandler)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxEvtHandler)
 };
 
 // Post a message to the given eventhandler which will be processed during the
diff --git a/include/wx/fdrepdlg.h b/include/wx/fdrepdlg.h
index f7b3d94185..d5688d5090 100644
--- a/include/wx/fdrepdlg.h
+++ b/include/wx/fdrepdlg.h
@@ -163,7 +163,7 @@ public:
 private:
     wxString m_strReplace;
 
-    DECLARE_DYNAMIC_CLASS(wxFindDialogEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxFindDialogEvent)
 };
 
 BEGIN_DECLARE_EVENT_TYPES()
diff --git a/include/wx/fontdlg.h b/include/wx/fontdlg.h
index 0c65857e38..b400315a40 100644
--- a/include/wx/fontdlg.h
+++ b/include/wx/fontdlg.h
@@ -57,6 +57,8 @@ protected:
         { if ( data ) m_fontData = *data; }
 
     wxFontData m_fontData;
+
+    DECLARE_NO_COPY_CLASS(wxFontDialogBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/gauge.h b/include/wx/gauge.h
index 830fecf778..e80001d060 100644
--- a/include/wx/gauge.h
+++ b/include/wx/gauge.h
@@ -31,6 +31,7 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxGaugeNameStr;
 class WXDLLEXPORT wxGaugeBase : public wxControl
 {
 public:
+    wxGaugeBase() { }
     virtual ~wxGaugeBase();
 
     bool Create(wxWindow *parent,
@@ -67,6 +68,8 @@ protected:
 
     // the current position
     int m_gaugePos;
+
+    DECLARE_NO_COPY_CLASS(wxGaugeBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/generic/choicdgg.h b/include/wx/generic/choicdgg.h
index c2e3cc51dc..430ebe2cd8 100644
--- a/include/wx/generic/choicdgg.h
+++ b/include/wx/generic/choicdgg.h
@@ -131,7 +131,7 @@ protected:
     wxString    m_stringSelection;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxSingleChoiceDialog)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxSingleChoiceDialog)
     DECLARE_EVENT_TABLE()
 };
 
@@ -173,7 +173,7 @@ protected:
     wxArrayInt m_selections;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxMultiChoiceDialog)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMultiChoiceDialog)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h
index 05451555f0..c66bfc6bd9 100644
--- a/include/wx/generic/grid.h
+++ b/include/wx/generic/grid.h
@@ -430,6 +430,8 @@ protected:
 private:
     size_t   m_maxChars;        // max number of chars allowed
     wxString m_startValue;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellTextEditor)
 };
 
 // the editor for numeric (long) data
@@ -475,6 +477,8 @@ private:
         m_max;
 
     long m_valueOld;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellNumberEditor)
 };
 
 // the editor for floating point numbers (double) data
@@ -508,6 +512,8 @@ private:
     int m_width,
         m_precision;
     double m_valueOld;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellFloatEditor)
 };
 
 #endif // wxUSE_TEXTCTRL
@@ -518,6 +524,8 @@ private:
 class WXDLLEXPORT wxGridCellBoolEditor : public wxGridCellEditor
 {
 public:
+    wxGridCellBoolEditor() { }
+
     virtual void Create(wxWindow* parent,
                         wxWindowID id,
                         wxEvtHandler* evtHandler);
@@ -543,6 +551,8 @@ protected:
 
 private:
     bool m_startValue;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellBoolEditor)
 };
 
 #endif // wxUSE_CHECKBOX
@@ -586,6 +596,8 @@ protected:
     wxString        m_startValue;
     wxArrayString   m_choices;
     bool            m_allowOthers;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellChoiceEditor)
 };
 
 #endif // wxUSE_COMBOBOX
@@ -974,7 +986,7 @@ private:
     wxArrayString     m_rowLabels;
     wxArrayString     m_colLabels;
 
-    DECLARE_DYNAMIC_CLASS( wxGridStringTable )
+    DECLARE_DYNAMIC_CLASS_NO_COPY( wxGridStringTable )
 };
 
 
@@ -1937,7 +1949,7 @@ protected:
     bool        m_shift;
     bool        m_alt;
 
-    DECLARE_DYNAMIC_CLASS(wxGridEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxGridEvent)
 };
 
 class WXDLLEXPORT wxGridSizeEvent : public wxNotifyEvent
@@ -1969,7 +1981,7 @@ protected:
     bool        m_shift;
     bool        m_alt;
 
-    DECLARE_DYNAMIC_CLASS(wxGridSizeEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxGridSizeEvent)
 };
 
 
@@ -2016,7 +2028,7 @@ protected:
     bool              m_shift;
     bool              m_alt;
 
-    DECLARE_DYNAMIC_CLASS(wxGridRangeSelectEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxGridRangeSelectEvent)
 };
 
 
diff --git a/include/wx/generic/gridctrl.h b/include/wx/generic/gridctrl.h
index 5df562eb3c..9699f0476b 100644
--- a/include/wx/generic/gridctrl.h
+++ b/include/wx/generic/gridctrl.h
@@ -110,6 +110,8 @@ public:
 
 private:
     long int   m_startint;
+
+    DECLARE_NO_COPY_CLASS(wxGridCellEnumEditor)
 };
 
 #endif // wxUSE_COMBOBOX
@@ -124,6 +126,8 @@ public:
 
     virtual wxGridCellEditor *Clone() const
         { return new wxGridCellAutoWrapStringEditor; }
+
+    DECLARE_NO_COPY_CLASS(wxGridCellAutoWrapStringEditor)
 };
 
 class WXDLLEXPORT wxGridCellAutoWrapStringRenderer : public wxGridCellStringRenderer
diff --git a/include/wx/generic/panelg.h b/include/wx/generic/panelg.h
index b6bc8cb2a4..947d9a4b22 100644
--- a/include/wx/generic/panelg.h
+++ b/include/wx/generic/panelg.h
@@ -93,7 +93,7 @@ protected:
     void Init();
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxPanel)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxPanel)
     DECLARE_EVENT_TABLE()
 };
 
diff --git a/include/wx/generic/scrolwin.h b/include/wx/generic/scrolwin.h
index 3ce3d59e28..85cd9e8e06 100644
--- a/include/wx/generic/scrolwin.h
+++ b/include/wx/generic/scrolwin.h
@@ -94,7 +94,7 @@ protected:
 #endif // __WXMSW__
 
 private:
-    DECLARE_ABSTRACT_CLASS(wxGenericScrolledWindow)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxGenericScrolledWindow)
     DECLARE_EVENT_TABLE()
 };
 
diff --git a/include/wx/generic/splitter.h b/include/wx/generic/splitter.h
index 699b9bee8a..40a07464de 100644
--- a/include/wx/generic/splitter.h
+++ b/include/wx/generic/splitter.h
@@ -350,7 +350,7 @@ private:
         } pt;               // position of double click for DCLICK event
     } m_data;
 
-    DECLARE_DYNAMIC_CLASS(wxSplitterEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxSplitterEvent)
 };
 
 typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&);
diff --git a/include/wx/hash.h b/include/wx/hash.h
index 472c6aa264..8c8d0813e8 100644
--- a/include/wx/hash.h
+++ b/include/wx/hash.h
@@ -584,6 +584,8 @@ private:
             ((listclass *)m_hashTable[slot])->Append(value, data);             \
             m_count++;                                                         \
         }                                                                      \
+                                                                               \
+        DECLARE_NO_COPY_CLASS(hashclass)                                       \
     }
 
 #endif
diff --git a/include/wx/html/htmlcell.h b/include/wx/html/htmlcell.h
index 61e748c14d..06a553cf2a 100644
--- a/include/wx/html/htmlcell.h
+++ b/include/wx/html/htmlcell.h
@@ -348,6 +348,8 @@ protected:
     
     wxString m_Word;
     bool     m_allowLinebreak;
+
+    DECLARE_NO_COPY_CLASS(wxHtmlWordCell)
 };
 
 
@@ -482,6 +484,8 @@ public:
 protected:
     wxColour m_Colour;
     unsigned m_Flags;
+
+    DECLARE_NO_COPY_CLASS(wxHtmlColourCell)
 };
 
 
@@ -503,6 +507,8 @@ public:
 
 protected:
     wxFont m_Font;
+
+    DECLARE_NO_COPY_CLASS(wxHtmlFontCell)
 };
 
 
diff --git a/include/wx/html/m_templ.h b/include/wx/html/m_templ.h
index 7dc0e16227..b50c31b1a1 100644
--- a/include/wx/html/m_templ.h
+++ b/include/wx/html/m_templ.h
@@ -51,6 +51,7 @@ I STRONGLY recommend reading and understanding these macros!!
 
 
 #define TAG_HANDLER_END(name)                                             \
+        DECLARE_NO_COPY_CLASS(HTML_Handler_##name)                        \
     };
 
 
diff --git a/include/wx/listbase.h b/include/wx/listbase.h
index 2117b3dc64..04f6efd971 100644
--- a/include/wx/listbase.h
+++ b/include/wx/listbase.h
@@ -394,7 +394,7 @@ public:
     wxListItem    m_item;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxListEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxListEvent)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/listbox.h b/include/wx/listbox.h
index 1c8c397b24..ef66d8ea3c 100644
--- a/include/wx/listbox.h
+++ b/include/wx/listbox.h
@@ -43,10 +43,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxListBoxNameStr;
 class WXDLLEXPORT wxListBoxBase : public wxControlWithItems
 {
 public:
-    // all generic methods are in wxControlWithItems, except for the following
-    // ones which are not yet implemented by wxChoice/wxCombobox
+    wxListBoxBase() { }
     virtual ~wxListBoxBase();
 
+    // all generic methods are in wxControlWithItems, except for the following
+    // ones which are not yet implemented by wxChoice/wxCombobox
     void Insert(const wxString& item, int pos)
         { DoInsert(item, pos); }
     void Insert(const wxString& item, int pos, void *clientData)
@@ -117,6 +118,8 @@ protected:
     virtual void DoSetItems(const wxArrayString& items, void **clientData) = 0;
 
     virtual void DoSetFirstItem(int n) = 0;
+
+    DECLARE_NO_COPY_CLASS(wxListBoxBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/listctrl.h b/include/wx/listctrl.h
index e1840f1fcb..6d1f51802b 100644
--- a/include/wx/listctrl.h
+++ b/include/wx/listctrl.h
@@ -97,7 +97,7 @@ public:
     void ClearColumnImage(int col) { SetColumnImage(col, -1); }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxListView)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxListView)
 };
 
 #endif // wxUSE_LISTCTRL
diff --git a/include/wx/log.h b/include/wx/log.h
index 74d1684ef9..a2f304a907 100644
--- a/include/wx/log.h
+++ b/include/wx/log.h
@@ -381,6 +381,9 @@ class WXDLLIMPEXP_BASE wxLogPassThrough : public wxLogChain
 {
 public:
     wxLogPassThrough();
+
+private:
+    DECLARE_NO_COPY_CLASS(wxLogPassThrough)
 };
 
 #if wxUSE_GUI
diff --git a/include/wx/memconf.h b/include/wx/memconf.h
index e10a1359d4..c0d46e7fee 100644
--- a/include/wx/memconf.h
+++ b/include/wx/memconf.h
@@ -47,6 +47,8 @@ public:
                                     0)              // don't use any files
     {
     }
+
+    DECLARE_NO_COPY_CLASS(wxMemoryConfig)
 };
 
 #endif // wxUSE_CONFIG
diff --git a/include/wx/memtext.h b/include/wx/memtext.h
index caa03fc9c8..44567134b8 100644
--- a/include/wx/memtext.h
+++ b/include/wx/memtext.h
@@ -43,6 +43,9 @@ protected:
     virtual bool OnWrite(wxTextFileType WXUNUSED(typeNew),
                          wxMBConv& WXUNUSED(conv) = wxConvUTF8)
         { return TRUE; }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxMemoryText)
 };
 
 #endif // wxUSE_TEXTBUFFER
diff --git a/include/wx/msw/app.h b/include/wx/msw/app.h
index 17e363b6b3..a66a531090 100644
--- a/include/wx/msw/app.h
+++ b/include/wx/msw/app.h
@@ -102,6 +102,7 @@ protected:
     bool m_keepGoing;
 
     DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxApp)
 };
 
 int WXDLLEXPORT wxEntry(WXHINSTANCE hInstance, WXHINSTANCE hPrevInstance,
diff --git a/include/wx/msw/bmpbuttn.h b/include/wx/msw/bmpbuttn.h
index 8551941d1c..c2ebd22f76 100644
--- a/include/wx/msw/bmpbuttn.h
+++ b/include/wx/msw/bmpbuttn.h
@@ -59,7 +59,7 @@ public:
     virtual void DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg );
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxBitmapButton)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxBitmapButton)
 };
 
 #endif
diff --git a/include/wx/msw/button.h b/include/wx/msw/button.h
index 5caf45782a..15bdaf3482 100644
--- a/include/wx/msw/button.h
+++ b/include/wx/msw/button.h
@@ -81,7 +81,7 @@ protected:
     virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const ;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxButton)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxButton)
 };
 
 #endif
diff --git a/include/wx/msw/caret.h b/include/wx/msw/caret.h
index 29c00938e9..19d91f4bcf 100644
--- a/include/wx/msw/caret.h
+++ b/include/wx/msw/caret.h
@@ -59,6 +59,8 @@ protected:
 
 private:
     bool m_hasCaret;
+
+    DECLARE_NO_COPY_CLASS(wxCaret)
 };
 
 #endif // _WX_CARET_H_
diff --git a/include/wx/msw/checkbox.h b/include/wx/msw/checkbox.h
index 57603fc9a0..803084bdcf 100644
--- a/include/wx/msw/checkbox.h
+++ b/include/wx/msw/checkbox.h
@@ -54,7 +54,7 @@ protected:
     virtual wxSize DoGetBestSize() const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxCheckBox)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckBox)
 };
 
 #endif
diff --git a/include/wx/msw/checklst.h b/include/wx/msw/checklst.h
index ffc70a0a51..7bb7852532 100644
--- a/include/wx/msw/checklst.h
+++ b/include/wx/msw/checklst.h
@@ -78,7 +78,7 @@ private:
   size_t    m_nItemHeight;  // height of checklistbox items (the same for all)
 
   DECLARE_EVENT_TABLE()
-  DECLARE_DYNAMIC_CLASS(wxCheckListBox)
+  DECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckListBox)
 };
 
 #endif    //_CHECKLST_H
diff --git a/include/wx/msw/choice.h b/include/wx/msw/choice.h
index 9ca576cd7c..f637232317 100644
--- a/include/wx/msw/choice.h
+++ b/include/wx/msw/choice.h
@@ -22,8 +22,6 @@
 
 class WXDLLEXPORT wxChoice : public wxChoiceBase
 {
-    DECLARE_DYNAMIC_CLASS(wxChoice)
-
 public:
     // ctors
     wxChoice() { }
@@ -85,6 +83,8 @@ protected:
 
     // free all memory we have (used by Clear() and dtor)
     void Free();
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxChoice)
 };
 
 #endif // _WX_CHOICE_H_
diff --git a/include/wx/msw/colordlg.h b/include/wx/msw/colordlg.h
index af068a631e..86d4b3b983 100644
--- a/include/wx/msw/colordlg.h
+++ b/include/wx/msw/colordlg.h
@@ -54,7 +54,7 @@ protected:
 
     wxPoint             m_pos;
 
-    DECLARE_DYNAMIC_CLASS(wxColourDialog)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxColourDialog)
 };
 
 #endif
diff --git a/include/wx/msw/combobox.h b/include/wx/msw/combobox.h
index d143bdf367..7a36ba1db0 100644
--- a/include/wx/msw/combobox.h
+++ b/include/wx/msw/combobox.h
@@ -26,8 +26,6 @@
 
 class WXDLLEXPORT wxComboBox: public wxChoice
 {
-    DECLARE_DYNAMIC_CLASS(wxComboBox)
-
 public:
     wxComboBox() { }
 
@@ -81,6 +79,9 @@ public:
             WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
 
     WXHWND GetEditHWND() const;
+
+private:
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox)
 };
 
 #endif // wxUSE_COMBOBOX
diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h
index 8c2310844d..9ba8a0c3a7 100644
--- a/include/wx/msw/control.h
+++ b/include/wx/msw/control.h
@@ -22,12 +22,12 @@
 class WXDLLEXPORT wxControl : public wxControlBase
 {
 public:
-   wxControl();
-   wxControl(wxWindow *parent, wxWindowID id,
-             const wxPoint& pos = wxDefaultPosition,
-             const wxSize& size = wxDefaultSize, long style = 0,
-             const wxValidator& validator = wxDefaultValidator,
-             const wxString& name = wxControlNameStr)
+    wxControl();
+    wxControl(wxWindow *parent, wxWindowID id,
+              const wxPoint& pos = wxDefaultPosition,
+              const wxSize& size = wxDefaultSize, long style = 0,
+              const wxValidator& validator = wxDefaultValidator,
+              const wxString& name = wxControlNameStr)
     {
         Create(parent, id, pos, size, style, validator, name);
     }
@@ -119,7 +119,7 @@ protected:
     wxArrayLong m_subControls;
 
 private:
-    DECLARE_ABSTRACT_CLASS(wxControl)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxControl)
     DECLARE_EVENT_TABLE()
 };
 
diff --git a/include/wx/msw/dc.h b/include/wx/msw/dc.h
index ac1f0a3989..51c3bfdf94 100644
--- a/include/wx/msw/dc.h
+++ b/include/wx/msw/dc.h
@@ -254,6 +254,9 @@ class WXDLLEXPORT wxDCTemp : public wxDC
 public:
     wxDCTemp(WXHDC hdc) { SetHDC(hdc); }
     virtual ~wxDCTemp() { SetHDC((WXHDC)NULL); }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxDCTemp)
 };
 
 #endif
diff --git a/include/wx/msw/dcclient.h b/include/wx/msw/dcclient.h
index 766b28cd28..48ee0851d0 100644
--- a/include/wx/msw/dcclient.h
+++ b/include/wx/msw/dcclient.h
@@ -53,7 +53,7 @@ protected:
     virtual void DoGetSize(int *width, int *height) const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxWindowDC)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxWindowDC)
 };
 
 class WXDLLEXPORT wxClientDC : public wxWindowDC
@@ -74,7 +74,7 @@ protected:
     virtual void DoGetSize(int *width, int *height) const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxClientDC)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxClientDC)
 };
 
 class WXDLLEXPORT wxPaintDC : public wxClientDC
@@ -97,7 +97,7 @@ protected:
     wxPaintDCInfo *FindInCache(size_t *index = NULL) const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxPaintDC)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxPaintDC)
 };
 
 #endif
diff --git a/include/wx/msw/dcmemory.h b/include/wx/msw/dcmemory.h
index 01f37663aa..ce32f1f5da 100644
--- a/include/wx/msw/dcmemory.h
+++ b/include/wx/msw/dcmemory.h
@@ -38,7 +38,7 @@ protected:
     void Init();
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxMemoryDC)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMemoryDC)
 };
 
 #endif
diff --git a/include/wx/msw/dcprint.h b/include/wx/msw/dcprint.h
index 245a6a49be..08601a2dbf 100644
--- a/include/wx/msw/dcprint.h
+++ b/include/wx/msw/dcprint.h
@@ -52,7 +52,7 @@ protected:
     wxPrintData m_printData;
 
 private:
-    DECLARE_CLASS(wxPrinterDC)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxPrinterDC)
 };
 
 // Gets an HDC for the default printer configuration
diff --git a/include/wx/msw/dcscreen.h b/include/wx/msw/dcscreen.h
index 3517e78b61..d17960062b 100644
--- a/include/wx/msw/dcscreen.h
+++ b/include/wx/msw/dcscreen.h
@@ -33,7 +33,7 @@ protected:
     virtual void DoGetSize(int *width, int *height) const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxScreenDC)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxScreenDC)
 };
 
 #endif
diff --git a/include/wx/msw/dirdlg.h b/include/wx/msw/dirdlg.h
index 8a6e53b4e4..ad213bdacd 100644
--- a/include/wx/msw/dirdlg.h
+++ b/include/wx/msw/dirdlg.h
@@ -42,7 +42,7 @@ protected:
     wxString    m_path;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxDirDialog)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDirDialog)
 };
 
 #endif
diff --git a/include/wx/msw/fontdlg.h b/include/wx/msw/fontdlg.h
index cc5d046254..0d0d5b6873 100644
--- a/include/wx/msw/fontdlg.h
+++ b/include/wx/msw/fontdlg.h
@@ -36,7 +36,7 @@ public:
         : wxFontDialogBase(parent, data) { Create(parent, data); }
 
 protected:
-    DECLARE_DYNAMIC_CLASS(wxFontDialog)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxFontDialog)
 };
 
 #endif
diff --git a/include/wx/msw/frame.h b/include/wx/msw/frame.h
index cc8bd90b35..7222108b45 100644
--- a/include/wx/msw/frame.h
+++ b/include/wx/msw/frame.h
@@ -154,7 +154,7 @@ private:
     bool m_wasMinimized;
 
     DECLARE_EVENT_TABLE()
-    DECLARE_DYNAMIC_CLASS(wxFrame)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxFrame)
 };
 
 #endif
diff --git a/include/wx/msw/gauge95.h b/include/wx/msw/gauge95.h
index c1ab4ab1d0..2681094ee9 100644
--- a/include/wx/msw/gauge95.h
+++ b/include/wx/msw/gauge95.h
@@ -25,8 +25,6 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxGaugeNameStr;
 // Group box
 class WXDLLEXPORT wxGauge95 : public wxControl
 {
-    DECLARE_DYNAMIC_CLASS(wxGauge95)
-
 public:
     wxGauge95(void) { m_rangeMax = 0; m_gaugePos = 0; }
 
@@ -75,6 +73,9 @@ public:
 protected:
     int      m_rangeMax;
     int      m_gaugePos;
+
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxGauge95)
 };
 
 #endif // wxUSE_GAUGE
diff --git a/include/wx/msw/listbox.h b/include/wx/msw/listbox.h
index dc2659dac3..3a187be870 100644
--- a/include/wx/msw/listbox.h
+++ b/include/wx/msw/listbox.h
@@ -129,7 +129,7 @@ protected:
 #endif
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxListBox)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxListBox)
 };
 
 #endif // wxUSE_LISTBOX
diff --git a/include/wx/msw/mdi.h b/include/wx/msw/mdi.h
index dec7df2826..031c8fd743 100644
--- a/include/wx/msw/mdi.h
+++ b/include/wx/msw/mdi.h
@@ -189,7 +189,7 @@ private:
     bool m_needsResize; // flag which tells us to artificially resize the frame
 
     DECLARE_EVENT_TABLE()
-    DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMDIChildFrame)
 };
 
 // ---------------------------------------------------------------------------
@@ -224,7 +224,7 @@ protected:
 
 private:
     DECLARE_EVENT_TABLE()
-    DECLARE_DYNAMIC_CLASS(wxMDIClientWindow)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMDIClientWindow)
 };
 
 #endif
diff --git a/include/wx/msw/menu.h b/include/wx/msw/menu.h
index 5e2fa12938..8ef7acf09a 100644
--- a/include/wx/msw/menu.h
+++ b/include/wx/msw/menu.h
@@ -116,7 +116,7 @@ private:
     wxAcceleratorArray m_accels;
 #endif // wxUSE_ACCEL
 
-    DECLARE_DYNAMIC_CLASS(wxMenu)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenu)
 };
 
 // ----------------------------------------------------------------------------
@@ -206,7 +206,7 @@ protected:
 #endif
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxMenuBar)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenuBar)
 };
 
 #endif // _WX_MENU_H_
diff --git a/include/wx/msw/menuitem.h b/include/wx/msw/menuitem.h
index d0288b9628..d89e821603 100644
--- a/include/wx/msw/menuitem.h
+++ b/include/wx/msw/menuitem.h
@@ -90,7 +90,7 @@ private:
     // does this item start a radio group?
     bool m_isRadioGroupStart;
 
-    DECLARE_DYNAMIC_CLASS(wxMenuItem)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenuItem)
 };
 
 #endif  //_MENUITEM_H
diff --git a/include/wx/msw/notebook.h b/include/wx/msw/notebook.h
index d85e7ce96c..a0782fb3cb 100644
--- a/include/wx/msw/notebook.h
+++ b/include/wx/msw/notebook.h
@@ -153,7 +153,7 @@ protected:
   int m_nSelection;
 
 
-  DECLARE_DYNAMIC_CLASS(wxNotebook)
+  DECLARE_DYNAMIC_CLASS_NO_COPY(wxNotebook)
   DECLARE_EVENT_TABLE()
 };
 
diff --git a/include/wx/msw/ole/dataobj2.h b/include/wx/msw/ole/dataobj2.h
index 2444d0b1da..753d1329d7 100644
--- a/include/wx/msw/ole/dataobj2.h
+++ b/include/wx/msw/ole/dataobj2.h
@@ -64,6 +64,9 @@ public:
     virtual size_t GetDataSize() const;
     virtual bool GetDataHere(void *buf) const;
     virtual bool SetData(size_t len, const void *buf);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxBitmapDataObject2)
 };
 
 // ----------------------------------------------------------------------------
@@ -73,11 +76,16 @@ public:
 class WXDLLEXPORT wxFileDataObject : public wxFileDataObjectBase
 {
 public:
+    wxFileDataObject() { }
+
     // implement base class pure virtuals
     virtual bool SetData(size_t len, const void *buf);
     virtual size_t GetDataSize() const;
     virtual bool GetDataHere(void *pData) const;
     virtual void AddFile(const wxString& file);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxFileDataObject)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/msw/popupwin.h b/include/wx/msw/popupwin.h
index 1dffaa67ee..6175150627 100644
--- a/include/wx/msw/popupwin.h
+++ b/include/wx/msw/popupwin.h
@@ -42,7 +42,7 @@ protected:
     // get the HWND to be used as parent of this window with CreateWindow()
     virtual WXHWND MSWGetParent() const;
 
-    DECLARE_DYNAMIC_CLASS(wxPopupWindow)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxPopupWindow)
 };
 
 #endif // _WX_MSW_POPUPWIN_H_
diff --git a/include/wx/msw/printwin.h b/include/wx/msw/printwin.h
index b5947de4fb..b3cd849f03 100644
--- a/include/wx/msw/printwin.h
+++ b/include/wx/msw/printwin.h
@@ -49,8 +49,6 @@ private:
 
 class WXDLLEXPORT wxWindowsPrintPreview : public wxPrintPreviewBase
 {
-    DECLARE_CLASS(wxWindowsPrintPreview)
-
 public:
     wxWindowsPrintPreview(wxPrintout *printout,
                           wxPrintout *printoutForPrinting = NULL,
@@ -62,6 +60,9 @@ public:
 
     virtual bool Print(bool interactive);
     virtual void DetermineScaling();
+
+private:
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxWindowsPrintPreview)
 };
 
 #endif
diff --git a/include/wx/msw/radiobut.h b/include/wx/msw/radiobut.h
index ea577bca88..723a99ba72 100644
--- a/include/wx/msw/radiobut.h
+++ b/include/wx/msw/radiobut.h
@@ -66,7 +66,7 @@ private:
     // see the comments in SetFocus()
     bool m_focusJustSet;
 
-    DECLARE_DYNAMIC_CLASS(wxRadioButton)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxRadioButton)
 };
 
 #endif
diff --git a/include/wx/msw/scrolbar.h b/include/wx/msw/scrolbar.h
index bf601b2883..b99cbf77e4 100644
--- a/include/wx/msw/scrolbar.h
+++ b/include/wx/msw/scrolbar.h
@@ -19,8 +19,6 @@
 // Scrollbar item
 class WXDLLEXPORT wxScrollBar: public wxScrollBarBase
 {
-    DECLARE_DYNAMIC_CLASS(wxScrollBar)
-
 public:
     wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; }
     ~wxScrollBar();
@@ -81,6 +79,7 @@ protected:
     int m_objectSize;
 
     DECLARE_EVENT_TABLE()
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxScrollBar)
 };
 
 #endif
diff --git a/include/wx/msw/slider95.h b/include/wx/msw/slider95.h
index 5c1d103e02..626efc0125 100644
--- a/include/wx/msw/slider95.h
+++ b/include/wx/msw/slider95.h
@@ -101,7 +101,7 @@ protected:
                            int width, int height,
                            int sizeFlags = wxSIZE_AUTO);
 
-    DECLARE_DYNAMIC_CLASS(wxSlider95)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxSlider95)
 };
 
 #endif
diff --git a/include/wx/msw/spinbutt.h b/include/wx/msw/spinbutt.h
index 295ea3867d..721ae2017a 100644
--- a/include/wx/msw/spinbutt.h
+++ b/include/wx/msw/spinbutt.h
@@ -63,7 +63,7 @@ protected:
    virtual wxSize DoGetBestSize() const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxSpinButton)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxSpinButton)
 };
 
 #endif
diff --git a/include/wx/msw/statbox.h b/include/wx/msw/statbox.h
index 2e18c72266..56556a4c06 100644
--- a/include/wx/msw/statbox.h
+++ b/include/wx/msw/statbox.h
@@ -51,7 +51,7 @@ protected:
     virtual wxSize DoGetBestSize() const;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxStaticBox)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxStaticBox)
 };
 
 #endif
diff --git a/include/wx/msw/statbr95.h b/include/wx/msw/statbr95.h
index f6f56cfe1d..eee21f8152 100644
--- a/include/wx/msw/statbr95.h
+++ b/include/wx/msw/statbr95.h
@@ -66,7 +66,7 @@ protected:
     void DoMoveWindow(int x, int y, int width, int height);
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxStatusBar95);
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxStatusBar95);
 };
 
 #endif  // wxUSE_NATIVE_STATUSBAR
diff --git a/include/wx/msw/statline.h b/include/wx/msw/statline.h
index 36d6a5897a..3deda43eac 100644
--- a/include/wx/msw/statline.h
+++ b/include/wx/msw/statline.h
@@ -21,8 +21,6 @@
 
 class WXDLLEXPORT wxStaticLine : public wxStaticLineBase
 {
-    DECLARE_DYNAMIC_CLASS(wxStaticLine)
-
 public:
     // constructors and pseudo-constructors
     wxStaticLine() { }
@@ -50,6 +48,8 @@ public:
 protected:
     // usually overridden base class virtuals
     virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxStaticLine)
 };
 
 #endif // _WX_MSW_STATLINE_H_
diff --git a/include/wx/msw/stattext.h b/include/wx/msw/stattext.h
index 311f731f55..80d3f50a54 100644
--- a/include/wx/msw/stattext.h
+++ b/include/wx/msw/stattext.h
@@ -52,7 +52,7 @@ protected:
     virtual wxSize DoGetBestSize() const;
     virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle = NULL) const;
 
-    DECLARE_DYNAMIC_CLASS(wxStaticText)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxStaticText)
 };
 
 #endif
diff --git a/include/wx/msw/taskbar.h b/include/wx/msw/taskbar.h
index c0b32f262c..2430745192 100644
--- a/include/wx/msw/taskbar.h
+++ b/include/wx/msw/taskbar.h
@@ -26,7 +26,7 @@ WX_DECLARE_EXPORTED_LIST(wxTaskBarIcon, wxTaskBarIconList);
 
 class WXDLLEXPORT wxTaskBarIcon: public wxTaskBarIconBase
 {
-    DECLARE_DYNAMIC_CLASS(wxTaskBarIcon)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTaskBarIcon)
 public:
     wxTaskBarIcon(void);
     virtual ~wxTaskBarIcon(void);
diff --git a/include/wx/msw/textctrl.h b/include/wx/msw/textctrl.h
index 76e578e49f..bc47dbd9f8 100644
--- a/include/wx/msw/textctrl.h
+++ b/include/wx/msw/textctrl.h
@@ -251,7 +251,7 @@ protected:
 
 private:
     DECLARE_EVENT_TABLE()
-    DECLARE_DYNAMIC_CLASS(wxTextCtrl)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextCtrl)
 
     wxMenu* m_privateContextMenu;
 
diff --git a/include/wx/msw/timer.h b/include/wx/msw/timer.h
index 104a7fffb0..afcd4c21e6 100644
--- a/include/wx/msw/timer.h
+++ b/include/wx/msw/timer.h
@@ -37,7 +37,7 @@ protected:
     long m_id;
 
 private:
-    DECLARE_ABSTRACT_CLASS(wxTimer)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTimer)
 };
 
 #endif
diff --git a/include/wx/notebook.h b/include/wx/notebook.h
index b4692d7094..aac71c2032 100644
--- a/include/wx/notebook.h
+++ b/include/wx/notebook.h
@@ -159,7 +159,8 @@ public:
 
     // hit test, returns which tab is hit and, optionally, where (icon, label)
     // (not implemented on all platforms)
-    virtual int HitTest(const wxPoint& pt, long *flags = NULL) const
+    virtual int HitTest(const wxPoint& WXUNUSED(pt),
+                        long * WXUNUSED(flags) = NULL) const
     {
         return wxNOT_FOUND;
     }
@@ -218,7 +219,7 @@ private:
     int m_nSel,     // currently selected page
         m_nOldSel;  // previously selected page
 
-    DECLARE_DYNAMIC_CLASS(wxNotebookEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxNotebookEvent)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/object.h b/include/wx/object.h
index 92f759609d..bfecd72a2a 100644
--- a/include/wx/object.h
+++ b/include/wx/object.h
@@ -145,6 +145,15 @@ WXDLLIMPEXP_BASE wxObject *wxCreateDynamicObject(const wxChar *name);
   virtual wxClassInfo *GetClassInfo() const   \
    { return &name::sm_class##name; }
 
+#define DECLARE_DYNAMIC_CLASS_NO_ASSIGN(name)   \
+    private:                                    \
+        name& operator=(const name&);           \
+    DECLARE_DYNAMIC_CLASS(name)
+
+#define DECLARE_DYNAMIC_CLASS_NO_COPY(name)   \
+    DECLARE_NO_COPY_CLASS(name)               \
+    DECLARE_DYNAMIC_CLASS(name)
+
 #define DECLARE_ABSTRACT_CLASS(name) DECLARE_DYNAMIC_CLASS(name)
 #define DECLARE_CLASS(name) DECLARE_DYNAMIC_CLASS(name)
 
diff --git a/include/wx/popupwin.h b/include/wx/popupwin.h
index a0bca8f512..b9a7df5155 100644
--- a/include/wx/popupwin.h
+++ b/include/wx/popupwin.h
@@ -45,6 +45,8 @@ public:
     // the point must be given in screen coordinates!
     virtual void Position(const wxPoint& ptOrigin,
                           const wxSize& size);
+
+    DECLARE_NO_COPY_CLASS(wxPopupWindowBase)
 };
 
 
diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h
index 51430ffa1b..2f3c3726fa 100644
--- a/include/wx/prntbase.h
+++ b/include/wx/prntbase.h
@@ -407,6 +407,7 @@ public:
 
 private:
     DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxPrintAbortDialog)
 };
 
 #endif // wxUSE_PRINTING_ARCHITECTURE
diff --git a/include/wx/process.h b/include/wx/process.h
index 57d507d49a..4c3b1b1c74 100644
--- a/include/wx/process.h
+++ b/include/wx/process.h
@@ -163,7 +163,7 @@ public:
     int m_pid,
         m_exitcode;
 
-    DECLARE_DYNAMIC_CLASS(wxProcessEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxProcessEvent)
 };
 
 typedef void (wxEvtHandler::*wxProcessEventFunction)(wxProcessEvent&);
diff --git a/include/wx/protocol/file.h b/include/wx/protocol/file.h
index 762c1bff9a..b9474e44e5 100644
--- a/include/wx/protocol/file.h
+++ b/include/wx/protocol/file.h
@@ -24,7 +24,7 @@
 #include "wx/url.h"
 
 class WXDLLIMPEXP_BASE wxFileProto: public wxProtocol {
-  DECLARE_DYNAMIC_CLASS(wxFileProto)
+  DECLARE_DYNAMIC_CLASS_NO_COPY(wxFileProto)
   DECLARE_PROTOCOL(wxFileProto)
 protected:
   wxProtocolError m_error;
diff --git a/include/wx/protocol/ftp.h b/include/wx/protocol/ftp.h
index f9bdf27da2..9626397036 100644
--- a/include/wx/protocol/ftp.h
+++ b/include/wx/protocol/ftp.h
@@ -156,7 +156,7 @@ protected:
     friend class wxInputFTPStream;
     friend class wxOutputFTPStream;
 
-    DECLARE_DYNAMIC_CLASS(wxFTP)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxFTP)
     DECLARE_PROTOCOL(wxFTP)
 };
 
diff --git a/include/wx/protocol/protocol.h b/include/wx/protocol/protocol.h
index f7a09b73d0..0e823616e0 100644
--- a/include/wx/protocol/protocol.h
+++ b/include/wx/protocol/protocol.h
@@ -82,7 +82,7 @@ public:
     virtual void SetPassword(const wxString& WXUNUSED(passwd) ) {}
 
 private:
-    DECLARE_ABSTRACT_CLASS(wxProtocol)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxProtocol)
 };
 
 #if wxUSE_SOCKETS
diff --git a/include/wx/renderer.h b/include/wx/renderer.h
index 20c06d29ad..338bc47c10 100644
--- a/include/wx/renderer.h
+++ b/include/wx/renderer.h
@@ -150,6 +150,8 @@ public:
 
 protected:
     wxRendererNative& m_rendererNative;
+
+    DECLARE_NO_COPY_CLASS(wxDelegateRendererNative)
 };
 
 #endif // _WX_RENDERER_H_
diff --git a/include/wx/sckstrm.h b/include/wx/sckstrm.h
index 0dc11427de..de42898eac 100644
--- a/include/wx/sckstrm.h
+++ b/include/wx/sckstrm.h
@@ -65,6 +65,8 @@ class WXDLLIMPEXP_BASE wxSocketStream : public wxSocketInputStream,
  public:
   wxSocketStream(wxSocketBase& s);
   ~wxSocketStream();
+
+  DECLARE_NO_COPY_CLASS(wxSocketStream)
 };
 
 #endif
diff --git a/include/wx/scrolbar.h b/include/wx/scrolbar.h
index 72e37cfcca..7411fabf39 100644
--- a/include/wx/scrolbar.h
+++ b/include/wx/scrolbar.h
@@ -14,6 +14,8 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxScrollBarNameStr;
 class WXDLLEXPORT wxScrollBarBase : public wxControl
 {
 public:
+    wxScrollBarBase() { }
+
     // scrollbar construction
     bool Create(wxWindow *parent,
                 wxWindowID id,
@@ -36,6 +38,9 @@ public:
     virtual void SetScrollbar(int position, int thumbSize,
                               int range, int pageSize,
                               bool refresh = TRUE) = 0;
+
+private:
+    DECLARE_NO_COPY_CLASS(wxScrollBarBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/scrolwin.h b/include/wx/scrolwin.h
index 319b2dd841..72c158d392 100644
--- a/include/wx/scrolwin.h
+++ b/include/wx/scrolwin.h
@@ -229,7 +229,7 @@ protected:
         }
 
     private:
-        DECLARE_CLASS(wxScrolledWindow)
+        DECLARE_DYNAMIC_CLASS_NO_COPY(wxScrolledWindow)
     };
 
     #define wxSCROLLED_WINDOW_IS_GENERIC 1
@@ -238,4 +238,3 @@ protected:
 #endif
     // _WX_SCROLWIN_H_BASE_
 
-// vi:sts=4:sw=4:et
diff --git a/include/wx/slider.h b/include/wx/slider.h
index 8cd9a9dd1c..09cd35c8b5 100644
--- a/include/wx/slider.h
+++ b/include/wx/slider.h
@@ -42,6 +42,7 @@ public:
              const wxValidator& validator = wxDefaultValidator,
              const wxString& name = wxSliderNameStr);
     */
+    wxSliderBase() { }
 
     // get/set the current slider value (should be in range)
     virtual int GetValue() const = 0;
@@ -76,6 +77,9 @@ public:
     virtual int GetSelEnd() const { return GetMin(); }
     virtual int GetSelStart() const { return GetMax(); }
     virtual void SetSelection(int WXUNUSED(min), int WXUNUSED(max)) { }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxSliderBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/socket.h b/include/wx/socket.h
index fdabf97f2a..ca7c8fa490 100644
--- a/include/wx/socket.h
+++ b/include/wx/socket.h
@@ -361,7 +361,7 @@ public:
   wxSocketNotify  m_event;
   void           *m_clientData;
 
-  DECLARE_DYNAMIC_CLASS(wxSocketEvent)
+  DECLARE_DYNAMIC_CLASS_NO_COPY(wxSocketEvent)
 };
 
 
diff --git a/include/wx/spinbutt.h b/include/wx/spinbutt.h
index 2db0d6880d..3624f51c36 100644
--- a/include/wx/spinbutt.h
+++ b/include/wx/spinbutt.h
@@ -68,6 +68,8 @@ protected:
     // the range value
     int   m_min;
     int   m_max;
+
+    DECLARE_NO_COPY_CLASS(wxSpinButtonBase)
 };
 
 // ----------------------------------------------------------------------------
@@ -107,7 +109,7 @@ public:
     void SetPosition(int pos) { m_commandInt = pos; }
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxSpinEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxSpinEvent)
 };
 
 typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&);
diff --git a/include/wx/statbmp.h b/include/wx/statbmp.h
index 7481a381af..3c81aa4781 100644
--- a/include/wx/statbmp.h
+++ b/include/wx/statbmp.h
@@ -31,7 +31,8 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxStaticBitmapNameStr;
 // a control showing an icon or a bitmap
 class WXDLLEXPORT wxStaticBitmapBase : public wxControl
 {
- public:
+public:
+    wxStaticBitmapBase() { }
     virtual ~wxStaticBitmapBase();
     
     // our interface
@@ -44,6 +45,8 @@ class WXDLLEXPORT wxStaticBitmapBase : public wxControl
 
 protected:
     virtual wxSize DoGetBestClientSize() const;
+
+    DECLARE_NO_COPY_CLASS(wxStaticBitmapBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/statbox.h b/include/wx/statbox.h
index 7effb7b4a2..c0a5ed5da3 100644
--- a/include/wx/statbox.h
+++ b/include/wx/statbox.h
@@ -14,8 +14,13 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxStaticBoxNameStr;
 class WXDLLEXPORT wxStaticBoxBase : public wxControl
 {
 public:
+    wxStaticBoxBase() { }
+
     // overriden base class virtuals
     virtual bool AcceptsFocus() const { return FALSE; }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxStaticBoxBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/statline.h b/include/wx/statline.h
index d3757e45cf..6a8b7db0d5 100644
--- a/include/wx/statline.h
+++ b/include/wx/statline.h
@@ -72,6 +72,8 @@ protected:
     {
         return AdjustSize(wxDefaultSize);
     }
+
+    DECLARE_NO_COPY_CLASS(wxStaticLineBase)
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/stattext.h b/include/wx/stattext.h
index 60fd8ede0a..6af02942a7 100644
--- a/include/wx/stattext.h
+++ b/include/wx/stattext.h
@@ -10,8 +10,13 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxStaticTextNameStr;
 class WXDLLEXPORT wxStaticTextBase : public wxControl
 {
 public:
-    // overriden base class virtuals
+    wxStaticTextBase() { }
+
+    // overriden base cirtuals
     virtual bool AcceptsFocus() const { return FALSE; }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxStaticTextBase)
 };
 
 #if defined(__WXUNIVERSAL__)
diff --git a/include/wx/stream.h b/include/wx/stream.h
index 151dd0bca4..264db502b0 100644
--- a/include/wx/stream.h
+++ b/include/wx/stream.h
@@ -232,6 +232,8 @@ protected:
     size_t m_wbackcur;
 
     friend class wxStreamBuffer;
+
+    DECLARE_NO_COPY_CLASS(wxInputStream)
 };
 
 // ----------------------------------------------------------------------------
@@ -264,6 +266,8 @@ protected:
     virtual size_t OnSysWrite(const void *buffer, size_t bufsize);
 
     friend class wxStreamBuffer;
+
+    DECLARE_NO_COPY_CLASS(wxOutputStream)
 };
 
 // ============================================================================
@@ -288,6 +292,8 @@ protected:
     virtual off_t OnSysTell() const;
 
     size_t m_currentPos;
+
+    DECLARE_NO_COPY_CLASS(wxCountingOutputStream)
 };
 
 // ---------------------------------------------------------------------------
diff --git a/include/wx/taskbar.h b/include/wx/taskbar.h
index 3c829f61a5..de482f4dcd 100644
--- a/include/wx/taskbar.h
+++ b/include/wx/taskbar.h
@@ -13,6 +13,11 @@
 
 class WXDLLEXPORT wxTaskBarIconBase : public wxEvtHandler
 {
+public:
+    wxTaskBarIconBase() { }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxTaskBarIconBase)
 };
 
 
@@ -40,6 +45,9 @@ public:
     }
 
     virtual wxEvent *Clone() const { return new wxTaskBarIconEvent(*this); }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxTaskBarIconEvent)
 };
 
 BEGIN_DECLARE_EVENT_TYPES()
diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h
index 252e43e6f5..5992b11817 100644
--- a/include/wx/tbarbase.h
+++ b/include/wx/tbarbase.h
@@ -606,7 +606,7 @@ protected:
 
 private:
     DECLARE_EVENT_TABLE()
-    DECLARE_CLASS(wxToolBarBase)
+    DECLARE_NO_COPY_CLASS(wxToolBarBase)
 };
 
 // Helper function for creating the image for disabled buttons
diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h
index 9e12d0a49d..06c1ee23d6 100644
--- a/include/wx/textctrl.h
+++ b/include/wx/textctrl.h
@@ -349,6 +349,8 @@ protected:
 
     // the text style which will be used for any new text added to the control
     wxTextAttr m_defaultStyle;
+
+    DECLARE_NO_COPY_CLASS(wxTextCtrlBase)
 };
 
 // ----------------------------------------------------------------------------
@@ -415,7 +417,7 @@ protected:
          m_end;
 
 private:
-    DECLARE_DYNAMIC_CLASS(wxTextUrlEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextUrlEvent)
 
 public:
     // for wxWin RTTI only, don't use
diff --git a/include/wx/textfile.h b/include/wx/textfile.h
index cace95502d..8481707a92 100644
--- a/include/wx/textfile.h
+++ b/include/wx/textfile.h
@@ -47,7 +47,10 @@ protected:
     virtual bool OnWrite(wxTextFileType typeNew, wxMBConv& conv);
 
 private:
+
     wxFile m_file;
+
+    DECLARE_NO_COPY_CLASS(wxTextFile)
 };
 
 #else // !wxUSE_TEXTFILE
diff --git a/include/wx/timer.h b/include/wx/timer.h
index 3c0b0b7f37..cc33886ea1 100644
--- a/include/wx/timer.h
+++ b/include/wx/timer.h
@@ -156,6 +156,8 @@ public:
 
 private:
     wxTimer& m_timer;
+
+    DECLARE_NO_COPY_CLASS(wxTimerRunner)
 };
 
 // ----------------------------------------------------------------------------
@@ -181,7 +183,7 @@ public:
 private:
     int m_interval;
 
-    DECLARE_DYNAMIC_CLASS(wxTimerEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxTimerEvent)
 };
 
 typedef void (wxEvtHandler::*wxTimerEventFunction)(wxTimerEvent&);
diff --git a/include/wx/toplevel.h b/include/wx/toplevel.h
index c6241a9704..40bb3a49d6 100644
--- a/include/wx/toplevel.h
+++ b/include/wx/toplevel.h
@@ -111,7 +111,7 @@ public:
     // Set the shape of the window to the given region.
     // Returns TRUE if the platform supports this feature (and the
     // operation is successful.)
-    virtual bool SetShape(const wxRegion& region) { return FALSE; }
+    virtual bool SetShape(const wxRegion& WXUNUSED(region)) { return FALSE; }
 
     // old functions, use the new ones instead!
 #if WXWIN_COMPATIBILITY_2
@@ -158,6 +158,7 @@ protected:
     // the frame icon
     wxIconBundle m_icons;
 
+    DECLARE_NO_COPY_CLASS(wxTopLevelWindowBase)
     DECLARE_EVENT_TABLE()
 };
 
@@ -210,12 +211,10 @@ protected:
                 Create(parent, winid, title, pos, size, style, name);
             }
 
-            DECLARE_DYNAMIC_CLASS(wxTopLevelWindow)
+            DECLARE_DYNAMIC_CLASS_NO_COPY(wxTopLevelWindow)
         };
     #endif // wxTopLevelWindowNative
 #endif // __WXUNIVERSAL__/!__WXUNIVERSAL__
 
 
 #endif // _WX_TOPLEVEL_BASE_H_
-
-// vi:sts=4:sw=4:et
diff --git a/include/wx/treebase.h b/include/wx/treebase.h
index b74c64b520..623dd52508 100644
--- a/include/wx/treebase.h
+++ b/include/wx/treebase.h
@@ -291,7 +291,7 @@ private:
     friend class WXDLLEXPORT wxTreeCtrl;
     friend class WXDLLEXPORT wxGenericTreeCtrl;
 
-    DECLARE_DYNAMIC_CLASS(wxTreeEvent);
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTreeEvent);
 };
 
 typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&);
diff --git a/include/wx/txtstrm.h b/include/wx/txtstrm.h
index c974b6f12b..2e880a8ac2 100644
--- a/include/wx/txtstrm.h
+++ b/include/wx/txtstrm.h
@@ -86,6 +86,8 @@ protected:
     // returns EOT (\4) if there is a stream error, or end of file
     wxChar NextChar();   // this should be used instead of GetC() because of Unicode issues
     wxChar NextNonSeparators();
+
+    DECLARE_NO_COPY_CLASS(wxTextInputStream)
 };
 
 typedef enum
@@ -135,6 +137,7 @@ protected:
     wxMBConv &m_conv;
 #endif
 
+    DECLARE_NO_COPY_CLASS(wxTextOutputStream)
 };
 
 #endif
diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h
index 753e46fed1..9778a6cda9 100644
--- a/include/wx/wfstream.h
+++ b/include/wx/wfstream.h
@@ -85,9 +85,14 @@ class WXDLLIMPEXP_BASE wxFileOutputStream: public wxOutputStream {
     DECLARE_NO_COPY_CLASS(wxFileOutputStream)
 };
 
-class WXDLLIMPEXP_BASE wxFileStream: public wxFileInputStream, public wxFileOutputStream {
- public:
-  wxFileStream(const wxString& fileName);
+class WXDLLIMPEXP_BASE wxFileStream : public wxFileInputStream,
+                                      public wxFileOutputStream
+{
+public:
+    wxFileStream(const wxString& fileName);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxFileStream)
 };
 
 // ----------------------------------------------------------------------------
@@ -149,10 +154,16 @@ class WXDLLIMPEXP_BASE wxFFileOutputStream: public wxOutputStream {
     DECLARE_NO_COPY_CLASS(wxFFileOutputStream)
 };
 
-class WXDLLIMPEXP_BASE wxFFileStream: public wxFFileInputStream, public wxFFileOutputStream {
- public:
-  wxFFileStream(const wxString& fileName);
+class WXDLLIMPEXP_BASE wxFFileStream : public wxFFileInputStream,
+                                       public wxFFileOutputStream
+{
+public:
+    wxFFileStream(const wxString& fileName);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxFFileStream)
 };
+
 #endif
   // wxUSE_STREAMS && wxUSE_FILE
 
diff --git a/include/wx/wizard.h b/include/wx/wizard.h
index 4ff5fad252..d1747e8fa2 100644
--- a/include/wx/wizard.h
+++ b/include/wx/wizard.h
@@ -81,7 +81,7 @@ protected:
     wxBitmap m_bitmap;
 
 private:
-    DECLARE_ABSTRACT_CLASS(wxWizardPage)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxWizardPage)
 };
 
 // ----------------------------------------------------------------------------
@@ -149,8 +149,7 @@ private:
     wxWizardPage *m_prev,
                  *m_next;
 
-    DECLARE_DYNAMIC_CLASS(wxWizardPageSimple)
-    DECLARE_NO_COPY_CLASS(wxWizardPageSimple)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxWizardPageSimple)
 };
 
 // ----------------------------------------------------------------------------
@@ -171,6 +170,7 @@ public:
                  const wxPoint& pos = wxDefaultPosition,
                  long style = wxDEFAULT_DIALOG_STYLE);
     */
+    wxWizardBase() { }
 
     // executes the wizard starting from the given page, returns TRUE if it was
     // successfully finished, FALSE if user cancelled it
@@ -221,6 +221,9 @@ public:
 
     virtual bool HasPrevPage(wxWizardPage *page)
         { return page->GetPrev() != NULL; }
+
+private:
+    DECLARE_NO_COPY_CLASS(wxWizardBase)
 };
 
 // include the real class declaration
diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp
index ad464891f6..dd1636b598 100644
--- a/src/common/appcmn.cpp
+++ b/src/common/appcmn.cpp
@@ -260,7 +260,7 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
     return needMore;
 }
 
-void wxAppBase::OnIdle(wxIdleEvent& event)
+void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event))
 {
     // If there are pending events, we must process them: pending events
     // are either events to the threads other than main or events posted
diff --git a/src/common/artstd.cpp b/src/common/artstd.cpp
index 8349c70cb2..7e8abec577 100644
--- a/src/common/artstd.cpp
+++ b/src/common/artstd.cpp
@@ -147,7 +147,7 @@ protected:
 // ----------------------------------------------------------------------------
 
 wxBitmap wxDefaultArtProvider::CreateBitmap(const wxArtID& id,
-                                            const wxArtClient& client,
+                                            const wxArtClient& WXUNUSED(client),
                                             const wxSize& WXUNUSED(size))
 {
     // wxMessageBox icons:
diff --git a/src/common/dircmn.cpp b/src/common/dircmn.cpp
index d491ed9d53..8f2dd8e27b 100644
--- a/src/common/dircmn.cpp
+++ b/src/common/dircmn.cpp
@@ -217,6 +217,8 @@ public:
 
 private:
     wxArrayString& m_files;
+
+    DECLARE_NO_COPY_CLASS(wxDirTraverserSimple)
 };
 
 /* static */
diff --git a/src/common/fldlgcmn.cpp b/src/common/fldlgcmn.cpp
index 512c5a3a70..bbdbe0d468 100644
--- a/src/common/fldlgcmn.cpp
+++ b/src/common/fldlgcmn.cpp
@@ -42,7 +42,7 @@ wxFileDialogBase::wxFileDialogBase(wxWindow *parent,
                                    const wxString& defaultFile,
                                    const wxString& wildCard,
                                    long style,
-                                   const wxPoint& pos)
+                                   const wxPoint& WXUNUSED(pos))
 {
     m_parent = parent;
     m_message = message;
diff --git a/src/common/fontmap.cpp b/src/common/fontmap.cpp
index ed0b001b0d..18fc3917c2 100644
--- a/src/common/fontmap.cpp
+++ b/src/common/fontmap.cpp
@@ -85,6 +85,8 @@ public:
 private:
     bool m_flagOld;
     bool& m_flag;
+
+    DECLARE_NO_COPY_CLASS(ReentrancyBlocker)
 };
 
 // ============================================================================
diff --git a/src/common/init.cpp b/src/common/init.cpp
index 5f90f482b5..bc304d3be8 100644
--- a/src/common/init.cpp
+++ b/src/common/init.cpp
@@ -59,7 +59,11 @@
 class wxDummyConsoleApp : public wxAppConsole
 {
 public:
+    wxDummyConsoleApp() { }
+
     virtual int OnRun() { wxFAIL_MSG( _T("unreachable code") ); return 0; }
+
+    DECLARE_NO_COPY_CLASS(wxDummyConsoleApp)
 };
 
 // we need a special kind of auto pointer to wxApp which not only deletes the
@@ -87,6 +91,8 @@ public:
 
         wxTheApp = ptr;
     }
+
+    DECLARE_NO_COPY_CLASS(wxAppPtr)
 };
 
 // class to ensure that wxAppBase::CleanUp() is called if our Initialize()
@@ -152,6 +158,8 @@ static struct InitData
     // free it when doing cleanup to avoid memory leaks
     wchar_t **argv;
 #endif // wxUSE_UNICODE
+
+    DECLARE_NO_COPY_CLASS(InitData)
 } gs_initData;
 
 // ============================================================================
diff --git a/src/common/sckipc.cpp b/src/common/sckipc.cpp
index 385cc76651..ceeaec71fa 100644
--- a/src/common/sckipc.cpp
+++ b/src/common/sckipc.cpp
@@ -125,6 +125,7 @@ public:
   void Server_OnRequest(wxSocketEvent& event);
 
   DECLARE_EVENT_TABLE()
+  DECLARE_NO_COPY_CLASS(wxTCPEventHandler)
 };
 
 enum
diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp
index 68c41c7148..2279100d93 100644
--- a/src/common/strconv.cpp
+++ b/src/common/strconv.cpp
@@ -846,6 +846,8 @@ public:
 
     // were we initialized successfully?
     bool m_ok;
+
+    DECLARE_NO_COPY_CLASS(EC_CharSet)
 };
 
 #endif // wxUSE_FONTMAP
diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp
index 636d4133cf..b52d9476d1 100644
--- a/src/common/tbarbase.cpp
+++ b/src/common/tbarbase.cpp
@@ -44,8 +44,6 @@
 // wxWindows macros
 // ----------------------------------------------------------------------------
 
-IMPLEMENT_CLASS(wxToolBarBase, wxControl)
-
 BEGIN_EVENT_TABLE(wxToolBarBase, wxControl)
 END_EVENT_TABLE()
 
diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp
index ff02305ca2..5b8d40343e 100644
--- a/src/common/textcmn.cpp
+++ b/src/common/textcmn.cpp
@@ -436,6 +436,8 @@ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event)
 
         return TRUE;
     }
+#else
+    event;
 #endif // !__WIN32__
 
     return FALSE;
diff --git a/src/generic/tipdlg.cpp b/src/generic/tipdlg.cpp
index d9d19cd600..9e450d4bad 100644
--- a/src/generic/tipdlg.cpp
+++ b/src/generic/tipdlg.cpp
@@ -70,6 +70,8 @@ public:
 
 private:
     wxTextFile m_textfile;
+
+    DECLARE_NO_COPY_CLASS(wxFileTipProvider)
 };
 
 #ifdef __WIN32__
diff --git a/src/html/helpdata.cpp b/src/html/helpdata.cpp
index b08700cbaa..1327d261b5 100644
--- a/src/html/helpdata.cpp
+++ b/src/html/helpdata.cpp
@@ -85,9 +85,14 @@ wxHtmlHelpIndexCompareFunc(const void *a, const void *b)
 class HP_Parser : public wxHtmlParser
 {
 public:
+    HP_Parser() { }
+
     wxObject* GetProduct() { return NULL; }
+
 protected:
     virtual void AddText(const wxChar* WXUNUSED(txt)) {}
+
+    DECLARE_NO_COPY_CLASS(HP_Parser)
 };
 
 
diff --git a/src/html/htmlcell.cpp b/src/html/htmlcell.cpp
index 4f71ab0fdf..e692487a1d 100644
--- a/src/html/htmlcell.cpp
+++ b/src/html/htmlcell.cpp
@@ -68,14 +68,16 @@ void wxHtmlSelection::Set(const wxHtmlCell *fromCell, const wxHtmlCell *toCell)
     Set(p1, fromCell, p2, toCell);
 }
 
-wxColour wxDefaultHtmlRenderingStyle::GetSelectedTextColour(
-                                        const wxColour& clr)
+wxColour
+wxDefaultHtmlRenderingStyle::
+GetSelectedTextColour(const wxColour& WXUNUSED(clr))
 {
     return wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
 }
 
-wxColour wxDefaultHtmlRenderingStyle::GetSelectedTextBgColour(
-                                        const wxColour& WXUNUSED(clr))
+wxColour
+wxDefaultHtmlRenderingStyle::
+GetSelectedTextBgColour(const wxColour& WXUNUSED(clr))
 {
     return wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
 }
diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp
index c51d80c296..2f5f65d49e 100644
--- a/src/html/htmlwin.cpp
+++ b/src/html/htmlwin.cpp
@@ -805,7 +805,7 @@ void wxHtmlWindow::OnCellMouseHover(wxHtmlCell * WXUNUSED(cell),
     // do nothing here
 }
 
-void wxHtmlWindow::OnEraseBackground(wxEraseEvent& event)
+void wxHtmlWindow::OnEraseBackground(wxEraseEvent& WXUNUSED(event))
 {
 }
 
@@ -897,7 +897,7 @@ void wxHtmlWindow::OnSize(wxSizeEvent& event)
 }
 
 
-void wxHtmlWindow::OnMouseMove(wxMouseEvent& event)
+void wxHtmlWindow::OnMouseMove(wxMouseEvent& WXUNUSED(event))
 {
     m_tmpMouseMoved = true;
 }
@@ -1218,7 +1218,7 @@ void wxHtmlWindow::OnKeyUp(wxKeyEvent& event)
     }
 }
 
-void wxHtmlWindow::OnCopy(wxCommandEvent& event)
+void wxHtmlWindow::OnCopy(wxCommandEvent& WXUNUSED(event))
 {
     if ( m_selection )
         CopySelection();
diff --git a/src/html/m_dflist.cpp b/src/html/m_dflist.cpp
index 6c767aed91..a2832c96d4 100644
--- a/src/html/m_dflist.cpp
+++ b/src/html/m_dflist.cpp
@@ -36,6 +36,8 @@ FORCE_LINK_ME(m_dflist)
 
 TAG_HANDLER_BEGIN(DEFLIST, "DL,DT,DD" )
 
+    TAG_HANDLER_CONSTR(DEFLIST) { }
+
     TAG_HANDLER_PROC(tag)
     {
         wxHtmlContainerCell *c;
diff --git a/src/html/m_fonts.cpp b/src/html/m_fonts.cpp
index 7ec96a0b50..977949dab9 100644
--- a/src/html/m_fonts.cpp
+++ b/src/html/m_fonts.cpp
@@ -36,6 +36,8 @@ TAG_HANDLER_BEGIN(FONT, "FONT" )
     TAG_HANDLER_VARS
         wxArrayString m_Faces;
 
+    TAG_HANDLER_CONSTR(FONT) { }
+
     TAG_HANDLER_PROC(tag)
     {
         wxColour oldclr = m_WParser->GetActualColor();
@@ -114,6 +116,8 @@ TAG_HANDLER_END(FONT)
 
 TAG_HANDLER_BEGIN(FACES_U, "U,STRIKE")
 
+    TAG_HANDLER_CONSTR(FACES_U) { }
+
     TAG_HANDLER_PROC(tag)
     {
         int underlined = m_WParser->GetFontUnderlined();
@@ -136,6 +140,7 @@ TAG_HANDLER_END(FACES_U)
 
 
 TAG_HANDLER_BEGIN(FACES_B, "B,STRONG")
+    TAG_HANDLER_CONSTR(FACES_B) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -159,6 +164,7 @@ TAG_HANDLER_END(FACES_B)
 
 
 TAG_HANDLER_BEGIN(FACES_I, "I,EM,CITE,ADDRESS")
+    TAG_HANDLER_CONSTR(FACES_I) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -182,6 +188,7 @@ TAG_HANDLER_END(FACES_I)
 
 
 TAG_HANDLER_BEGIN(FACES_TT, "TT,CODE,KBD,SAMP")
+    TAG_HANDLER_CONSTR(FACES_TT) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -206,6 +213,7 @@ TAG_HANDLER_END(FACES_TT)
 
 
 TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
+    TAG_HANDLER_CONSTR(Hx) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -282,6 +290,7 @@ TAG_HANDLER_END(Hx)
 
 
 TAG_HANDLER_BEGIN(BIGSMALL, "BIG,SMALL")
+    TAG_HANDLER_CONSTR(BIGSMALL) { }
 
     TAG_HANDLER_PROC(tag)
     {
diff --git a/src/html/m_hline.cpp b/src/html/m_hline.cpp
index b81880687e..8ba3037749 100644
--- a/src/html/m_hline.cpp
+++ b/src/html/m_hline.cpp
@@ -50,6 +50,8 @@ class wxHtmlLineCell : public wxHtmlCell
     private:
         // Should we draw 3-D shading or not
       bool m_HasShading;
+
+      DECLARE_NO_COPY_CLASS(wxHtmlLineCell)
 };
 
 
@@ -73,6 +75,7 @@ void wxHtmlLineCell::Draw(wxDC& dc, int x, int y,
 
 
 TAG_HANDLER_BEGIN(HR, "HR")
+    TAG_HANDLER_CONSTR(HR) { }
 
     TAG_HANDLER_PROC(tag)
     {
diff --git a/src/html/m_image.cpp b/src/html/m_image.cpp
index 3a24f08ecb..071d7d4167 100644
--- a/src/html/m_image.cpp
+++ b/src/html/m_image.cpp
@@ -71,6 +71,9 @@ class wxHtmlImageMapAreaCell : public wxHtmlCell
                   int WXUNUSED(x), int WXUNUSED(y),
                   int WXUNUSED(view_y1), int WXUNUSED(view_y2),
                   wxHtmlRenderingInfo& WXUNUSED(info)) {}
+
+
+    DECLARE_NO_COPY_CLASS(wxHtmlImageMapAreaCell)
 };
 
 
@@ -247,6 +250,8 @@ class wxHtmlImageMapCell : public wxHtmlCell
                   int WXUNUSED(x), int WXUNUSED(y),
                   int WXUNUSED(view_y1), int WXUNUSED(view_y2),
                   wxHtmlRenderingInfo& WXUNUSED(info)) {}
+
+    DECLARE_NO_COPY_CLASS(wxHtmlImageMapCell)
 };
 
 
@@ -589,6 +594,7 @@ wxHtmlLinkInfo *wxHtmlImageCell::GetLink( int x, int y ) const
 //--------------------------------------------------------------------------------
 
 TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
+    TAG_HANDLER_CONSTR(IMG) { }
 
     TAG_HANDLER_PROC(tag)
     {
diff --git a/src/html/m_layout.cpp b/src/html/m_layout.cpp
index b524a9db1c..3b18c44a57 100644
--- a/src/html/m_layout.cpp
+++ b/src/html/m_layout.cpp
@@ -133,6 +133,7 @@ bool wxHtmlPageBreakCell::AdjustPagebreak(int* pagebreak, int* known_pagebreaks,
 }
 
 TAG_HANDLER_BEGIN(P, "P")
+    TAG_HANDLER_CONSTR(P) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -151,6 +152,7 @@ TAG_HANDLER_END(P)
 
 
 TAG_HANDLER_BEGIN(BR, "BR")
+    TAG_HANDLER_CONSTR(BR) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -170,6 +172,7 @@ TAG_HANDLER_END(BR)
 
 
 TAG_HANDLER_BEGIN(CENTER, "CENTER")
+    TAG_HANDLER_CONSTR(CENTER) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -208,6 +211,7 @@ TAG_HANDLER_END(CENTER)
 
 
 TAG_HANDLER_BEGIN(DIV, "DIV")
+    TAG_HANDLER_CONSTR(DIV) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -270,6 +274,7 @@ TAG_HANDLER_END(DIV)
 
 
 TAG_HANDLER_BEGIN(TITLE, "TITLE")
+    TAG_HANDLER_CONSTR(TITLE) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -292,6 +297,7 @@ TAG_HANDLER_END(TITLE)
 
 
 TAG_HANDLER_BEGIN(BODY, "BODY")
+    TAG_HANDLER_CONSTR(BODY) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -321,6 +327,7 @@ TAG_HANDLER_END(BODY)
 
 
 TAG_HANDLER_BEGIN(BLOCKQUOTE, "BLOCKQUOTE")
+    TAG_HANDLER_CONSTR(BLOCKQUOTE) { }
 
     TAG_HANDLER_PROC(tag)
     {
@@ -351,7 +358,9 @@ TAG_HANDLER_END(BLOCKQUOTE)
 // Tag handler for tags that we have to ignore, otherwise non-text data
 // would show up as text:
 TAG_HANDLER_BEGIN(DoNothing, "SCRIPT")
-    TAG_HANDLER_PROC(tag)
+    TAG_HANDLER_CONSTR(DoNothing) { }
+
+    TAG_HANDLER_PROC(WXUNUSED(tag))
     {
         return true;
     }
diff --git a/src/html/m_links.cpp b/src/html/m_links.cpp
index b1f0d0876f..7ae39b983a 100644
--- a/src/html/m_links.cpp
+++ b/src/html/m_links.cpp
@@ -55,11 +55,14 @@ public:
             return wxHtmlCell::Find(condition, param);
         }
     }
+
+    DECLARE_NO_COPY_CLASS(wxHtmlAnchorCell)
 };
 
 
 
 TAG_HANDLER_BEGIN(A, "A")
+    TAG_HANDLER_CONSTR(A) { }
 
     TAG_HANDLER_PROC(tag)
     {
diff --git a/src/html/m_list.cpp b/src/html/m_list.cpp
index bb6b0299a4..85ea4b35c5 100644
--- a/src/html/m_list.cpp
+++ b/src/html/m_list.cpp
@@ -45,6 +45,8 @@ class wxHtmlListmarkCell : public wxHtmlCell
         wxHtmlListmarkCell(wxDC *dc, const wxColour& clr);
         void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2,
                   wxHtmlRenderingInfo& info);
+
+    DECLARE_NO_COPY_CLASS(wxHtmlListmarkCell)
 };
 
 wxHtmlListmarkCell::wxHtmlListmarkCell(wxDC* dc, const wxColour& clr) : wxHtmlCell(), m_Brush(clr, wxSOLID)
diff --git a/src/html/m_pre.cpp b/src/html/m_pre.cpp
index 313d8a88bc..27fa27a31a 100644
--- a/src/html/m_pre.cpp
+++ b/src/html/m_pre.cpp
@@ -69,6 +69,7 @@ static wxString LINKAGEMODE HtmlizeWhitespaces(const wxString& str)
 
 
 TAG_HANDLER_BEGIN(PRE, "PRE")
+    TAG_HANDLER_CONSTR(PRE) { }
 
     TAG_HANDLER_PROC(tag)
     {
diff --git a/src/html/m_style.cpp b/src/html/m_style.cpp
index 9913b83703..b2bcecfc80 100644
--- a/src/html/m_style.cpp
+++ b/src/html/m_style.cpp
@@ -31,6 +31,7 @@ FORCE_LINK_ME(m_style)
 
 
 TAG_HANDLER_BEGIN(STYLE, "STYLE")
+    TAG_HANDLER_CONSTR(STYLE) { }
 
     TAG_HANDLER_PROC(WXUNUSED(tag))
     {
diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp
index c09e5fc085..1fe45847f0 100644
--- a/src/msw/notebook.cpp
+++ b/src/msw/notebook.cpp
@@ -827,6 +827,9 @@ void wxNotebook::ApplyThemeBackground(wxWindow* window, const wxColour& colour)
         wxWindow *child = node->GetData();
         ApplyThemeBackground(child, colour);
     }
+#else
+    window;
+    colour;
 #endif
 }
 
diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp
index f64ea0651c..b8a78965fd 100644
--- a/src/msw/treectrl.cpp
+++ b/src/msw/treectrl.cpp
@@ -398,6 +398,8 @@ public:
 
 private:
     wxArrayTreeItemIds& m_selections;
+
+    DECLARE_NO_COPY_CLASS(TraverseSelections)
 };
 
 // internal class for counting tree items
@@ -425,6 +427,8 @@ public:
 
 private:
     size_t m_count;
+
+    DECLARE_NO_COPY_CLASS(TraverseCounter)
 };
 
 // ----------------------------------------------------------------------------
-- 
2.47.2