From: Václav Slavík <vslavik@fastmail.fm>
Date: Mon, 9 Jul 2007 10:09:52 +0000 (+0000)
Subject: added WXDLLIMPEXP_FWD_FOO macros in addition to WXDLLIMPEXP_FOO for use with forward... 
X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b5dbe15d0bacde245539f54c4d97af6b4696f01f

added WXDLLIMPEXP_FWD_FOO macros in addition to WXDLLIMPEXP_FOO for use with forward declarations (in preparation for GCC visibility support)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---

diff --git a/docs/tech/tn0016.txt b/docs/tech/tn0016.txt
index e7623f4868..fdd01cbff0 100644
--- a/docs/tech/tn0016.txt
+++ b/docs/tech/tn0016.txt
@@ -201,6 +201,7 @@ g) Update dlimpexp.h to define WXMAKINGDLL_FOO if WXMAKINGDLL is defined (add
             #define WXDLLIMPEXP_NET
             #define WXDLLIMPEXP_DATA_NET(type) type
         #endif
+   Don't forget to add WXDLLIMPEXP_FWD_FOO definitions too.
    Use WXDLLIMPEXP_FOO when declaring wxFoo classes and functions.
 
 h) Add this code to one of wxFoo's files (the more often used, the better):
diff --git a/include/wx/accel.h b/include/wx/accel.h
index 80f35ede71..025b51b375 100644
--- a/include/wx/accel.h
+++ b/include/wx/accel.h
@@ -18,9 +18,9 @@
 
 #include "wx/object.h"
 
-class WXDLLEXPORT wxAcceleratorTable;
-class WXDLLEXPORT wxMenuItem;
-class WXDLLEXPORT wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable;
+class WXDLLIMPEXP_FWD_CORE wxMenuItem;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
 
 // ----------------------------------------------------------------------------
 // constants
@@ -137,7 +137,7 @@ private:
     wxMenuItem *m_item;
 
     // for compatibility with old code, use accessors now!
-    friend class WXDLLEXPORT wxMenu;
+    friend class WXDLLIMPEXP_FWD_CORE wxMenu;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/access.h b/include/wx/access.h
index ffb3931f5b..2e7c772250 100644
--- a/include/wx/access.h
+++ b/include/wx/access.h
@@ -224,10 +224,10 @@ typedef enum
 // All functions return an indication of success, failure, or not implemented.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxAccessible;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxPoint;
-class WXDLLEXPORT wxRect;
+class WXDLLIMPEXP_FWD_CORE wxAccessible;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxPoint;
+class WXDLLIMPEXP_FWD_CORE wxRect;
 class WXDLLEXPORT wxAccessibleBase : public wxObject
 {
     DECLARE_NO_COPY_CLASS(wxAccessibleBase)
diff --git a/include/wx/animate.h b/include/wx/animate.h
index bf25d5aa2e..7722660469 100644
--- a/include/wx/animate.h
+++ b/include/wx/animate.h
@@ -21,7 +21,7 @@
 #include "wx/timer.h"
 #include "wx/bitmap.h"
 
-class WXDLLIMPEXP_ADV wxAnimation;
+class WXDLLIMPEXP_FWD_ADV wxAnimation;
 
 extern WXDLLIMPEXP_DATA_ADV(wxAnimation) wxNullAnimation;
 extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxAnimationCtrlNameStr[];
diff --git a/include/wx/animdecod.h b/include/wx/animdecod.h
index 37655d549e..2194643578 100644
--- a/include/wx/animdecod.h
+++ b/include/wx/animdecod.h
@@ -17,8 +17,8 @@
 #include "wx/colour.h"
 #include "wx/gdicmn.h"
 
-class WXDLLIMPEXP_BASE wxInputStream;
-class WXDLLIMPEXP_CORE wxImage;
+class WXDLLIMPEXP_FWD_BASE wxInputStream;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 /*
 
diff --git a/include/wx/app.h b/include/wx/app.h
index b5542f913a..03bbad845a 100644
--- a/include/wx/app.h
+++ b/include/wx/app.h
@@ -22,15 +22,15 @@
 #include "wx/init.h"        // we must declare wxEntry()
 #include "wx/intl.h"        // for wxLayoutDirection
 
-class WXDLLIMPEXP_BASE wxAppConsole;
-class WXDLLIMPEXP_BASE wxAppTraits;
-class WXDLLIMPEXP_BASE wxCmdLineParser;
-class WXDLLIMPEXP_BASE wxEventLoopBase;
-class WXDLLIMPEXP_BASE wxLog;
-class WXDLLIMPEXP_BASE wxMessageOutput;
+class WXDLLIMPEXP_FWD_BASE wxAppConsole;
+class WXDLLIMPEXP_FWD_BASE wxAppTraits;
+class WXDLLIMPEXP_FWD_BASE wxCmdLineParser;
+class WXDLLIMPEXP_FWD_BASE wxEventLoopBase;
+class WXDLLIMPEXP_FWD_BASE wxLog;
+class WXDLLIMPEXP_FWD_BASE wxMessageOutput;
 
 #if wxUSE_GUI
-    struct WXDLLIMPEXP_CORE wxVideoMode;
+    struct WXDLLIMPEXP_FWD_CORE wxVideoMode;
 #endif
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/apptrait.h b/include/wx/apptrait.h
index 596c29d3f4..aca979f67a 100644
--- a/include/wx/apptrait.h
+++ b/include/wx/apptrait.h
@@ -15,20 +15,20 @@
 #include "wx/string.h"
 #include "wx/platinfo.h"
 
-class WXDLLIMPEXP_BASE wxArrayString;
-class WXDLLIMPEXP_BASE wxConfigBase;
-class WXDLLIMPEXP_BASE wxEventLoopBase;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxConfigBase;
+class WXDLLIMPEXP_FWD_BASE wxEventLoopBase;
 #if wxUSE_FONTMAP
-    class WXDLLEXPORT wxFontMapper;
+    class WXDLLIMPEXP_FWD_CORE wxFontMapper;
 #endif // wxUSE_FONTMAP
-class WXDLLIMPEXP_BASE wxLog;
-class WXDLLIMPEXP_BASE wxMessageOutput;
-class WXDLLIMPEXP_BASE wxObject;
-class WXDLLEXPORT wxRendererNative;
-class WXDLLIMPEXP_BASE wxStandardPathsBase;
-class WXDLLIMPEXP_BASE wxString;
-class WXDLLIMPEXP_BASE wxTimer;
-class WXDLLIMPEXP_BASE wxTimerImpl;
+class WXDLLIMPEXP_FWD_BASE wxLog;
+class WXDLLIMPEXP_FWD_BASE wxMessageOutput;
+class WXDLLIMPEXP_FWD_BASE wxObject;
+class WXDLLIMPEXP_FWD_CORE wxRendererNative;
+class WXDLLIMPEXP_FWD_BASE wxStandardPathsBase;
+class WXDLLIMPEXP_FWD_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxTimer;
+class WXDLLIMPEXP_FWD_BASE wxTimerImpl;
 
 class GSocketGUIFunctionsTable;
 
diff --git a/include/wx/artprov.h b/include/wx/artprov.h
index e98bd41182..e841dba099 100644
--- a/include/wx/artprov.h
+++ b/include/wx/artprov.h
@@ -17,8 +17,8 @@
 #include "wx/icon.h"
 #include "wx/iconbndl.h"
 
-class WXDLLEXPORT wxArtProvidersList;
-class WXDLLEXPORT wxArtProviderCache;
+class WXDLLIMPEXP_FWD_CORE wxArtProvidersList;
+class WXDLLIMPEXP_FWD_CORE wxArtProviderCache;
 class wxArtProviderModule;
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/aui/framemanager.h b/include/wx/aui/framemanager.h
index d0acf97a42..ec1af11fcc 100644
--- a/include/wx/aui/framemanager.h
+++ b/include/wx/aui/framemanager.h
@@ -417,7 +417,7 @@ public:
 
 
 
-class WXDLLIMPEXP_AUI wxAuiFloatingFrame;
+class WXDLLIMPEXP_FWD_AUI wxAuiFloatingFrame;
 
 class WXDLLIMPEXP_AUI wxAuiManager : public wxEvtHandler
 {
diff --git a/include/wx/aui/tabmdi.h b/include/wx/aui/tabmdi.h
index a4f6a93820..b677a0fdf2 100644
--- a/include/wx/aui/tabmdi.h
+++ b/include/wx/aui/tabmdi.h
@@ -28,9 +28,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_AUI wxAuiMDIParentFrame;
-class WXDLLIMPEXP_AUI wxAuiMDIClientWindow;
-class WXDLLIMPEXP_AUI wxAuiMDIChildFrame;
+class WXDLLIMPEXP_FWD_AUI wxAuiMDIParentFrame;
+class WXDLLIMPEXP_FWD_AUI wxAuiMDIClientWindow;
+class WXDLLIMPEXP_FWD_AUI wxAuiMDIChildFrame;
 
 //-----------------------------------------------------------------------------
 // wxAuiMDIParentFrame
diff --git a/include/wx/bitmap.h b/include/wx/bitmap.h
index 4153de3a39..cbe474153d 100644
--- a/include/wx/bitmap.h
+++ b/include/wx/bitmap.h
@@ -20,12 +20,12 @@
 #include "wx/gdicmn.h"  // for wxBitmapType
 #include "wx/colour.h"
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxBitmapHandler;
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxMask;
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxMask;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 // ----------------------------------------------------------------------------
 // wxVariant support
diff --git a/include/wx/bookctrl.h b/include/wx/bookctrl.h
index 3fce57b2d8..181946ae04 100644
--- a/include/wx/bookctrl.h
+++ b/include/wx/bookctrl.h
@@ -25,8 +25,8 @@
 
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxWindow *, wxArrayPages);
 
-class WXDLLEXPORT wxImageList;
-class WXDLLEXPORT wxBookCtrlBaseEvent;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxBookCtrlBaseEvent;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/buffer.h b/include/wx/buffer.h
index 8e7fd8dbb1..3d7d6403f6 100644
--- a/include/wx/buffer.h
+++ b/include/wx/buffer.h
@@ -17,7 +17,7 @@
 
 #include <stdlib.h>             // malloc() and free()
 
-class WXDLLIMPEXP_BASE wxCStrData;
+class WXDLLIMPEXP_FWD_BASE wxCStrData;
 
 // ----------------------------------------------------------------------------
 // Special classes for (wide) character strings: they use malloc/free instead
diff --git a/include/wx/button.h b/include/wx/button.h
index 89bef2b6b5..0959a68e37 100644
--- a/include/wx/button.h
+++ b/include/wx/button.h
@@ -45,7 +45,7 @@
 
 #include "wx/control.h"
 
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxButtonNameStr[];
 
diff --git a/include/wx/calctrl.h b/include/wx/calctrl.h
index 9e1add8920..5e6dd98436 100644
--- a/include/wx/calctrl.h
+++ b/include/wx/calctrl.h
@@ -159,7 +159,7 @@ private:
 // wxCalendarCtrl events
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxCalendarCtrl;
+class WXDLLIMPEXP_FWD_ADV wxCalendarCtrl;
 
 class WXDLLIMPEXP_ADV wxCalendarEvent : public wxDateEvent
 {
diff --git a/include/wx/caret.h b/include/wx/caret.h
index ff5071ca78..c3d3ebd2bd 100644
--- a/include/wx/caret.h
+++ b/include/wx/caret.h
@@ -20,8 +20,8 @@
 // forward declarations
 // ---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindowBase;
 
 // ----------------------------------------------------------------------------
 // headers we have to include
diff --git a/include/wx/choicebk.h b/include/wx/choicebk.h
index d3e0ae14f7..0c06f3c5ff 100644
--- a/include/wx/choicebk.h
+++ b/include/wx/choicebk.h
@@ -19,7 +19,7 @@
 #include "wx/bookctrl.h"
 #include "wx/choice.h"
 
-class WXDLLEXPORT wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
 
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED;
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING;
diff --git a/include/wx/clipbrd.h b/include/wx/clipbrd.h
index 122bbf7227..886ac3871c 100644
--- a/include/wx/clipbrd.h
+++ b/include/wx/clipbrd.h
@@ -20,9 +20,9 @@
 #include "wx/object.h"
 #include "wx/chartype.h"
 
-class WXDLLEXPORT wxDataFormat;
-class WXDLLEXPORT wxDataObject;
-class WXDLLEXPORT wxClipboard;
+class WXDLLIMPEXP_FWD_CORE wxDataFormat;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxClipboard;
 
 // ----------------------------------------------------------------------------
 // wxClipboard represents the system clipboard. Normally, you should use
diff --git a/include/wx/clrpicker.h b/include/wx/clrpicker.h
index 29f0c818d2..e2d52184e6 100644
--- a/include/wx/clrpicker.h
+++ b/include/wx/clrpicker.h
@@ -20,7 +20,7 @@
 #include "wx/pickerbase.h"
 
 
-class WXDLLIMPEXP_CORE wxColourPickerEvent;
+class WXDLLIMPEXP_FWD_CORE wxColourPickerEvent;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerWidgetNameStr[];
 extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerCtrlNameStr[];
diff --git a/include/wx/cmdline.h b/include/wx/cmdline.h
index 07c893eb75..54fe7fbb71 100644
--- a/include/wx/cmdline.h
+++ b/include/wx/cmdline.h
@@ -20,7 +20,7 @@
 
 #if wxUSE_CMDLINE_PARSER
 
-class WXDLLIMPEXP_BASE wxDateTime;
+class WXDLLIMPEXP_FWD_BASE wxDateTime;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/cmdproc.h b/include/wx/cmdproc.h
index cc39b0f31f..ef5929870f 100644
--- a/include/wx/cmdproc.h
+++ b/include/wx/cmdproc.h
@@ -16,7 +16,7 @@
 #include "wx/object.h"
 #include "wx/list.h"
 
-class WXDLLEXPORT wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
 
 // ----------------------------------------------------------------------------
 // wxCommand: a single command capable of performing itself
diff --git a/include/wx/cmndata.h b/include/wx/cmndata.h
index 0326128f6f..5aa5f102f7 100644
--- a/include/wx/cmndata.h
+++ b/include/wx/cmndata.h
@@ -23,7 +23,7 @@
 #endif
 
 
-class WXDLLEXPORT wxPrintNativeDataBase;
+class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase;
 
 
 class WXDLLEXPORT wxColourData: public wxObject
diff --git a/include/wx/cocoa/NSWindow.h b/include/wx/cocoa/NSWindow.h
index 4b16e5f7f0..9bbecf9fec 100644
--- a/include/wx/cocoa/NSWindow.h
+++ b/include/wx/cocoa/NSWindow.h
@@ -17,8 +17,8 @@
 
 WX_DECLARE_OBJC_HASHMAP(NSWindow);
 
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxTopLevelWindowCocoa;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxTopLevelWindowCocoa;
 
 DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem);
 DECLARE_WXCOCOA_OBJC_CLASS(wxNSWindowDelegate);
diff --git a/include/wx/cocoa/bitmap.h b/include/wx/cocoa/bitmap.h
index 0cd2cd66b1..14618f0103 100644
--- a/include/wx/cocoa/bitmap.h
+++ b/include/wx/cocoa/bitmap.h
@@ -15,11 +15,11 @@
 #include "wx/palette.h"
 
 // Bitmap
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxPixelDataBase;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
 
 // ========================================================================
 // wxMask
diff --git a/include/wx/cocoa/brush.h b/include/wx/cocoa/brush.h
index 4bf3d8a71b..31db6fc5c4 100644
--- a/include/wx/cocoa/brush.h
+++ b/include/wx/cocoa/brush.h
@@ -16,7 +16,7 @@
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 // ========================================================================
 // wxBrush
diff --git a/include/wx/cocoa/choice.h b/include/wx/cocoa/choice.h
index ae177c71da..1057527bae 100644
--- a/include/wx/cocoa/choice.h
+++ b/include/wx/cocoa/choice.h
@@ -15,7 +15,7 @@
 //#include "wx/cocoa/NSPopUpButton.h"
 #include "wx/cocoa/NSMenu.h"
 
-class WXDLLIMPEXP_BASE wxSortedArrayString;
+class WXDLLIMPEXP_FWD_BASE wxSortedArrayString;
 
 // ========================================================================
 // wxChoice
diff --git a/include/wx/cocoa/cursor.h b/include/wx/cocoa/cursor.h
index 523c90b439..f7c5b65ab0 100644
--- a/include/wx/cocoa/cursor.h
+++ b/include/wx/cocoa/cursor.h
@@ -18,8 +18,8 @@ class WXDLLEXPORT wxCursorRefData: public wxObjectRefData
 {
     DECLARE_NO_COPY_CLASS(wxCursorRefData)
 
-    friend class WXDLLEXPORT wxBitmap;
-    friend class WXDLLEXPORT wxCursor;
+    friend class WXDLLIMPEXP_FWD_CORE wxBitmap;
+    friend class WXDLLIMPEXP_FWD_CORE wxCursor;
 public:
     wxCursorRefData();
     virtual ~wxCursorRefData();
diff --git a/include/wx/cocoa/dc.h b/include/wx/cocoa/dc.h
index db5175bcbf..aaa3a6291e 100644
--- a/include/wx/cocoa/dc.h
+++ b/include/wx/cocoa/dc.h
@@ -14,7 +14,7 @@
 
 DECLARE_WXCOCOA_OBJC_CLASS(NSAffineTransform);
 
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 WX_DECLARE_LIST(wxDC, wxCocoaDCStack);
 
 //=========================================================================
diff --git a/include/wx/cocoa/font.h b/include/wx/cocoa/font.h
index b230ab76a3..419a1b1b98 100644
--- a/include/wx/cocoa/font.h
+++ b/include/wx/cocoa/font.h
@@ -14,7 +14,7 @@
 
 class WXDLLEXPORT wxFontRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxFont;
+    friend class WXDLLIMPEXP_FWD_CORE wxFont;
 public:
     wxFontRefData()
         : m_fontId(0)
diff --git a/include/wx/cocoa/frame.h b/include/wx/cocoa/frame.h
index c7f886ade5..d75c5c5a0f 100644
--- a/include/wx/cocoa/frame.h
+++ b/include/wx/cocoa/frame.h
@@ -12,8 +12,8 @@
 #ifndef _WX_COCOA_FRAME_H_
 #define _WX_COCOA_FRAME_H_
 
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxStatusBar;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxStatusBar;
 
 class WXDLLEXPORT wxFrame: public wxFrameBase
 {
diff --git a/include/wx/cocoa/glcanvas.h b/include/wx/cocoa/glcanvas.h
index c36bf9f36d..8e20a0c4eb 100644
--- a/include/wx/cocoa/glcanvas.h
+++ b/include/wx/cocoa/glcanvas.h
@@ -18,7 +18,7 @@
 // Include gl.h from the OpenGL framework
 #include <OpenGL/gl.h>
 
-class WXDLLIMPEXP_GL wxGLCanvas;
+class WXDLLIMPEXP_FWD_GL wxGLCanvas;
 DECLARE_WXCOCOA_OBJC_CLASS(NSOpenGLContext);
 DECLARE_WXCOCOA_OBJC_CLASS(NSOpenGLView);
 
diff --git a/include/wx/cocoa/mdi.h b/include/wx/cocoa/mdi.h
index 272c4508d9..4328334ca0 100644
--- a/include/wx/cocoa/mdi.h
+++ b/include/wx/cocoa/mdi.h
@@ -16,8 +16,8 @@
 
 DECLARE_WXCOCOA_OBJC_CLASS(wxMDIParentFrameObserver);
 
-class WXDLLEXPORT wxMDIChildFrame;
-class WXDLLEXPORT wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
 
 WX_DECLARE_LIST(wxMDIChildFrame, wxCocoaMDIChildFrameList);
 
@@ -26,7 +26,7 @@ WX_DECLARE_LIST(wxMDIChildFrame, wxCocoaMDIChildFrameList);
 // ========================================================================
 class WXDLLEXPORT wxMDIParentFrame: public wxFrame
 {
-    friend class WXDLLEXPORT wxMDIChildFrame;
+    friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
 // ------------------------------------------------------------------------
@@ -98,7 +98,7 @@ protected:
 // ========================================================================
 class WXDLLEXPORT wxMDIChildFrame: public wxFrame
 {
-    friend class WXDLLEXPORT wxMDIParentFrame;
+    friend class WXDLLIMPEXP_FWD_CORE wxMDIParentFrame;
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
 // ------------------------------------------------------------------------
diff --git a/include/wx/cocoa/pen.h b/include/wx/cocoa/pen.h
index 5049cda035..7599f775a7 100644
--- a/include/wx/cocoa/pen.h
+++ b/include/wx/cocoa/pen.h
@@ -15,8 +15,8 @@
 #include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
-class WXDLLEXPORT wxColour;
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 // ========================================================================
 // wxPen
diff --git a/include/wx/cocoa/radiobut.h b/include/wx/cocoa/radiobut.h
index ccd502b474..bbd0b95955 100644
--- a/include/wx/cocoa/radiobut.h
+++ b/include/wx/cocoa/radiobut.h
@@ -14,7 +14,7 @@
 
 #include "wx/cocoa/NSButton.h"
 
-class WXDLLEXPORT wxRadioButton;
+class WXDLLIMPEXP_FWD_CORE wxRadioButton;
 
 WX_DECLARE_LIST(wxRadioButton, wxRadioButtonList);
 
diff --git a/include/wx/cocoa/taskbar.h b/include/wx/cocoa/taskbar.h
index 003c4cbb17..5c9dc6366c 100644
--- a/include/wx/cocoa/taskbar.h
+++ b/include/wx/cocoa/taskbar.h
@@ -14,8 +14,8 @@
 
 #include "wx/icon.h"
 
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
 
 class wxTaskBarIconCocoaImpl;
 
diff --git a/include/wx/cocoa/toplevel.h b/include/wx/cocoa/toplevel.h
index 775c8db9c9..da0129e07d 100644
--- a/include/wx/cocoa/toplevel.h
+++ b/include/wx/cocoa/toplevel.h
@@ -15,7 +15,7 @@
 #include "wx/hashmap.h"
 #include "wx/cocoa/NSWindow.h"
 
-class WXDLLEXPORT wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
 
 // ========================================================================
 // wxTopLevelWindowCocoa
diff --git a/include/wx/colour.h b/include/wx/colour.h
index 14020d84f3..ecce9a4943 100644
--- a/include/wx/colour.h
+++ b/include/wx/colour.h
@@ -16,7 +16,7 @@
 #include "wx/gdiobj.h"
 
 
-class WXDLLEXPORT wxColour;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 // the standard wxColour constructors;
 // this macro avoids to repeat these lines across all colour.h files, since
diff --git a/include/wx/combo.h b/include/wx/combo.h
index 8d8a272ffa..7d3af18656 100644
--- a/include/wx/combo.h
+++ b/include/wx/combo.h
@@ -46,8 +46,8 @@
 #include "wx/renderer.h" // this is needed for wxCONTROL_XXX flags
 #include "wx/bitmap.h" // wxBitmap used by-value
 
-class WXDLLIMPEXP_CORE wxTextCtrl;
-class WXDLLEXPORT wxComboPopup;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxComboPopup;
 
 //
 // New window styles for wxComboCtrlBase
diff --git a/include/wx/confbase.h b/include/wx/confbase.h
index 25f6797049..cc796e9724 100644
--- a/include/wx/confbase.h
+++ b/include/wx/confbase.h
@@ -18,7 +18,7 @@
 #include "wx/string.h"
 #include "wx/object.h"
 
-class WXDLLIMPEXP_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/containr.h b/include/wx/containr.h
index e738d67907..6ac64a4616 100644
--- a/include/wx/containr.h
+++ b/include/wx/containr.h
@@ -15,8 +15,8 @@
 
 #include "wx/defs.h"
 
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindowBase;
 
 /*
    Implementation note: wxControlContainer is not a real mix-in but rather
@@ -156,8 +156,8 @@ class WXDLLEXPORT wxControlContainer : public wxControlContainerBase
 
 #else // !wxHAS_NATIVE_TAB_TRAVERSAL
 
-class WXDLLEXPORT wxFocusEvent;
-class WXDLLEXPORT wxNavigationKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxFocusEvent;
+class WXDLLIMPEXP_FWD_CORE wxNavigationKeyEvent;
 
 // ----------------------------------------------------------------------------
 // wxControlContainer for TAB navigation implemented in wx itself
diff --git a/include/wx/dataview.h b/include/wx/dataview.h
index 2dd87b0c3c..8ad75c0d26 100644
--- a/include/wx/dataview.h
+++ b/include/wx/dataview.h
@@ -38,12 +38,12 @@
 // wxDataViewCtrl globals
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxDataViewItem;
-class WXDLLIMPEXP_ADV wxDataViewModel;
-class WXDLLIMPEXP_ADV wxDataViewCtrl;
-class WXDLLIMPEXP_ADV wxDataViewColumn;
-class WXDLLIMPEXP_ADV wxDataViewRenderer;
-class WXDLLIMPEXP_ADV wxDataViewModelNotifier;
+class WXDLLIMPEXP_FWD_ADV wxDataViewItem;
+class WXDLLIMPEXP_FWD_ADV wxDataViewModel;
+class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
+class WXDLLIMPEXP_FWD_ADV wxDataViewColumn;
+class WXDLLIMPEXP_FWD_ADV wxDataViewRenderer;
+class WXDLLIMPEXP_FWD_ADV wxDataViewModelNotifier;
 class                 wxDataViewEventModelNotifier;
 
 extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxDataViewCtrlNameStr[];
diff --git a/include/wx/datetime.h b/include/wx/datetime.h
index fbab3a35c2..5acab96681 100644
--- a/include/wx/datetime.h
+++ b/include/wx/datetime.h
@@ -27,9 +27,9 @@
 
 #include "wx/longlong.h"
 
-class WXDLLIMPEXP_BASE wxDateTime;
-class WXDLLIMPEXP_BASE wxTimeSpan;
-class WXDLLIMPEXP_BASE wxDateSpan;
+class WXDLLIMPEXP_FWD_BASE wxDateTime;
+class WXDLLIMPEXP_FWD_BASE wxTimeSpan;
+class WXDLLIMPEXP_FWD_BASE wxDateSpan;
 
 #include "wx/dynarray.h"
 
@@ -125,7 +125,7 @@ WXDLLIMPEXP_BASE struct tm *wxGmtime_r(const time_t*, struct tm*);
 // argument for arguments of type wxDateTime; it is also returned by all
 // functions returning wxDateTime on failure (this is why it is also called
 // wxInvalidDateTime)
-class WXDLLIMPEXP_BASE wxDateTime;
+class WXDLLIMPEXP_FWD_BASE wxDateTime;
 
 extern WXDLLIMPEXP_DATA_BASE(const wxChar*) wxDefaultDateTimeFormat;
 extern WXDLLIMPEXP_DATA_BASE(const wxChar*) wxDefaultTimeSpanFormat;
@@ -1487,7 +1487,7 @@ WX_DECLARE_USER_EXPORTED_OBJARRAY(wxDateTime, wxDateTimeArray, WXDLLIMPEXP_BASE)
 //     virtual methods to work with the holidays they correspond to.
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxDateTimeHolidayAuthority;
+class WXDLLIMPEXP_FWD_BASE wxDateTimeHolidayAuthority;
 WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxDateTimeHolidayAuthority *,
                               wxHolidayAuthoritiesArray,
                               class WXDLLIMPEXP_BASE);
diff --git a/include/wx/dc.h b/include/wx/dc.h
index 69adc1f414..b71344643e 100644
--- a/include/wx/dc.h
+++ b/include/wx/dc.h
@@ -40,7 +40,7 @@
 // wxDCFactory
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxImplDC;
+class WXDLLIMPEXP_FWD_CORE wxImplDC;
 
 class WXDLLIMPEXP_CORE wxDCFactory
 {
@@ -977,8 +977,8 @@ private:
 #else  // wxUSE_NEW_DC
 
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxDCBase;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDCBase;
 
 class WXDLLEXPORT wxDrawObject
 {
diff --git a/include/wx/dcgraph.h b/include/wx/dcgraph.h
index 331331afbe..cce940f27a 100644
--- a/include/wx/dcgraph.h
+++ b/include/wx/dcgraph.h
@@ -18,7 +18,7 @@
 #include "wx/dynarray.h"
 #include "wx/graphics.h"
 
-class WXDLLEXPORT wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
 
 #ifdef __WXMAC__
 #define wxGCDC wxDC
diff --git a/include/wx/dde.h b/include/wx/dde.h
index 3cd4433643..cf5af6743e 100644
--- a/include/wx/dde.h
+++ b/include/wx/dde.h
@@ -14,9 +14,9 @@
 
 #include "wx/list.h"
 
-class WXDLLIMPEXP_BASE wxDDEClient;
-class WXDLLIMPEXP_BASE wxDDEServer;
-class WXDLLIMPEXP_BASE wxDDEConnection;
+class WXDLLIMPEXP_FWD_BASE wxDDEClient;
+class WXDLLIMPEXP_FWD_BASE wxDDEServer;
+class WXDLLIMPEXP_FWD_BASE wxDDEConnection;
 
 WX_DECLARE_USER_EXPORTED_LIST(wxDDEClient, wxDDEClientList, WXDLLIMPEXP_BASE);
 WX_DECLARE_USER_EXPORTED_LIST(wxDDEServer, wxDDEServerList, WXDLLIMPEXP_BASE);
diff --git a/include/wx/debug.h b/include/wx/debug.h
index 7cdaecf9c4..936755e71b 100644
--- a/include/wx/debug.h
+++ b/include/wx/debug.h
@@ -131,8 +131,8 @@
                                           const wxChar *szMsg);
 #endif /* wxUSE_UNICODE */
 
-  class WXDLLIMPEXP_BASE wxString;
-  class WXDLLIMPEXP_BASE wxCStrData;
+  class WXDLLIMPEXP_FWD_BASE wxString;
+  class WXDLLIMPEXP_FWD_BASE wxCStrData;
 
   /* these two work when szMsg passed to debug macro is a string,
      we also have to provide wxCStrData overload to resolve ambiguity
diff --git a/include/wx/debugrpt.h b/include/wx/debugrpt.h
index befd84d6f8..86ecdb5ab3 100644
--- a/include/wx/debugrpt.h
+++ b/include/wx/debugrpt.h
@@ -18,7 +18,7 @@
 #include "wx/string.h"
 #include "wx/arrstr.h"
 
-class WXDLLIMPEXP_XML wxXmlNode;
+class WXDLLIMPEXP_FWD_XML wxXmlNode;
 
 // ----------------------------------------------------------------------------
 // wxDebugReport: generate a debug report, processing is done in derived class
diff --git a/include/wx/dfb/brush.h b/include/wx/dfb/brush.h
index c799da0ece..8398b46da4 100644
--- a/include/wx/dfb/brush.h
+++ b/include/wx/dfb/brush.h
@@ -21,8 +21,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 //-----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/dfb/cursor.h b/include/wx/dfb/cursor.h
index 03efa522fa..a56b1f1afe 100644
--- a/include/wx/dfb/cursor.h
+++ b/include/wx/dfb/cursor.h
@@ -14,7 +14,7 @@
 #include "wx/object.h"
 #include "wx/gdicmn.h"
 
-class WXDLLIMPEXP_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 //-----------------------------------------------------------------------------
 // wxCursor
diff --git a/include/wx/dfb/dc.h b/include/wx/dfb/dc.h
index ef94f091f3..b96599052e 100644
--- a/include/wx/dfb/dc.h
+++ b/include/wx/dfb/dc.h
@@ -156,7 +156,7 @@ protected:
 
     double            m_mm_to_pix_x, m_mm_to_pix_y;
 
-    friend class WXDLLIMPEXP_CORE wxOverlayImpl; // for Init
+    friend class WXDLLIMPEXP_FWD_CORE wxOverlayImpl; // for Init
 
     DECLARE_DYNAMIC_CLASS(wxDC)
 };
diff --git a/include/wx/dfb/dcclient.h b/include/wx/dfb/dcclient.h
index 3847f4f2e4..6eae9c4aa9 100644
--- a/include/wx/dfb/dcclient.h
+++ b/include/wx/dfb/dcclient.h
@@ -13,7 +13,7 @@
 
 #include "wx/dc.h"
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 //-----------------------------------------------------------------------------
 // wxWindowDC
diff --git a/include/wx/dfb/pen.h b/include/wx/dfb/pen.h
index 4565d943b1..9648f98e85 100644
--- a/include/wx/dfb/pen.h
+++ b/include/wx/dfb/pen.h
@@ -21,8 +21,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxPen;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxPen;
 
 //-----------------------------------------------------------------------------
 // wxPen
diff --git a/include/wx/dfb/private/overlay.h b/include/wx/dfb/private/overlay.h
index a50a3f30e4..675ff67b3e 100644
--- a/include/wx/dfb/private/overlay.h
+++ b/include/wx/dfb/private/overlay.h
@@ -16,8 +16,8 @@
 
 wxDFB_DECLARE_INTERFACE(IDirectFBSurface);
 
-class WXDLLIMPEXP_CORE wxWindow;
-class WXDLLIMPEXP_CORE wxwindowDC;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxwindowDC;
 
 class wxOverlayImpl
 {
diff --git a/include/wx/dfb/region.h b/include/wx/dfb/region.h
index d25f4d72c5..591cb4394f 100644
--- a/include/wx/dfb/region.h
+++ b/include/wx/dfb/region.h
@@ -58,7 +58,7 @@ protected:
     virtual bool DoXor(const wxRegion& region);
 
 
-    friend class WXDLLIMPEXP_CORE wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
 
     DECLARE_DYNAMIC_CLASS(wxRegion);
 };
diff --git a/include/wx/dfb/window.h b/include/wx/dfb/window.h
index 9042d7af80..0d60daebe6 100644
--- a/include/wx/dfb/window.h
+++ b/include/wx/dfb/window.h
@@ -20,8 +20,8 @@
 wxDFB_DECLARE_INTERFACE(IDirectFBSurface);
 struct wxDFBWindowEvent;
 
-class WXDLLIMPEXP_CORE wxFont;
-class WXDLLIMPEXP_CORE wxNonOwnedWindow;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow;
 
 class wxOverlayImpl;
 class wxDfbOverlaysList;
diff --git a/include/wx/dialog.h b/include/wx/dialog.h
index 2d6f8ee580..fe52966b04 100644
--- a/include/wx/dialog.h
+++ b/include/wx/dialog.h
@@ -15,8 +15,8 @@
 #include "wx/defs.h"
 #include "wx/toplevel.h"
 
-class WXDLLEXPORT wxSizer;
-class WXDLLEXPORT wxStdDialogButtonSizer;
+class WXDLLIMPEXP_FWD_CORE wxSizer;
+class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
 
 #define wxDIALOG_NO_PARENT      0x0001  // Don't make owned by apps top window
 
diff --git a/include/wx/dialup.h b/include/wx/dialup.h
index 18b13b02a5..f50c54bf44 100644
--- a/include/wx/dialup.h
+++ b/include/wx/dialup.h
@@ -20,7 +20,7 @@
 // misc
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
 #define WXDIALUP_MANAGER_DEFAULT_BEACONHOST  wxT("www.yahoo.com")
 
diff --git a/include/wx/dir.h b/include/wx/dir.h
index d41bca30c7..14ed2ab963 100644
--- a/include/wx/dir.h
+++ b/include/wx/dir.h
@@ -15,7 +15,7 @@
 #include "wx/longlong.h"
 #include "wx/string.h"
 
-class WXDLLIMPEXP_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
 // ----------------------------------------------------------------------------
 // constants
@@ -78,7 +78,7 @@ public:
 // wxDir: portable equivalent of {open/read/close}dir functions
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxDirData;
+class WXDLLIMPEXP_FWD_BASE wxDirData;
 
 class WXDLLIMPEXP_BASE wxDir
 {
diff --git a/include/wx/display.h b/include/wx/display.h
index eea6bbb7f6..d91abbaf83 100644
--- a/include/wx/display.h
+++ b/include/wx/display.h
@@ -25,13 +25,13 @@
     extern WXDLLEXPORT_DATA(const wxVideoMode) wxDefaultVideoMode;
 #endif // wxUSE_DISPLAY
 
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxPoint;
-class WXDLLEXPORT wxRect;
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxPoint;
+class WXDLLIMPEXP_FWD_CORE wxRect;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
-class WXDLLEXPORT wxDisplayFactory;
-class WXDLLEXPORT wxDisplayImpl;
+class WXDLLIMPEXP_FWD_CORE wxDisplayFactory;
+class WXDLLIMPEXP_FWD_CORE wxDisplayImpl;
 
 // ----------------------------------------------------------------------------
 // wxDisplay: represents a display/monitor attached to the system
diff --git a/include/wx/dlimpexp.h b/include/wx/dlimpexp.h
index b3e4258db8..6a82f65610 100644
--- a/include/wx/dlimpexp.h
+++ b/include/wx/dlimpexp.h
@@ -238,6 +238,24 @@
     #define WXDLLIMPEXP_STC
 #endif
 
+/* GCC warns about using __attribute__ on forward declarations, so we need
+   another set of macros for them: */
+#define WXDLLIMPEXP_FWD_BASE      WXDLLIMPEXP_BASE
+#define WXDLLIMPEXP_FWD_NET       WXDLLIMPEXP_NET
+#define WXDLLIMPEXP_FWD_CORE      WXDLLIMPEXP_CORE
+#define WXDLLIMPEXP_FWD_ADV       WXDLLIMPEXP_ADV
+#define WXDLLIMPEXP_FWD_QA        WXDLLIMPEXP_QA
+#define WXDLLIMPEXP_FWD_ODBC      WXDLLIMPEXP_ODBC
+#define WXDLLIMPEXP_FWD_DBGRID    WXDLLIMPEXP_DBGRID
+#define WXDLLIMPEXP_FWD_HTML      WXDLLIMPEXP_HTML
+#define WXDLLIMPEXP_FWD_GL        WXDLLIMPEXP_GL
+#define WXDLLIMPEXP_FWD_XML       WXDLLIMPEXP_XML
+#define WXDLLIMPEXP_FWD_XRC       WXDLLIMPEXP_XRC
+#define WXDLLIMPEXP_FWD_AUI       WXDLLIMPEXP_AUI
+#define WXDLLIMPEXP_FWD_RICHTEXT  WXDLLIMPEXP_RICHTEXT
+#define WXDLLIMPEXP_FWD_MEDIA     WXDLLIMPEXP_MEDIA
+#define WXDLLIMPEXP_FWD_STC       WXDLLIMPEXP_STC
+
 /* for backwards compatibility, define suffix-less versions too */
 #define WXDLLEXPORT WXDLLIMPEXP_CORE
 #define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE
diff --git a/include/wx/docview.h b/include/wx/docview.h
index 92b7509823..84697a7a7a 100644
--- a/include/wx/docview.h
+++ b/include/wx/docview.h
@@ -24,15 +24,15 @@
     #include "wx/print.h"
 #endif
 
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxDocument;
-class WXDLLEXPORT wxView;
-class WXDLLEXPORT wxDocTemplate;
-class WXDLLEXPORT wxDocManager;
-class WXDLLEXPORT wxPrintInfo;
-class WXDLLEXPORT wxCommandProcessor;
-class WXDLLEXPORT wxFileHistory;
-class WXDLLEXPORT wxConfigBase;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDocument;
+class WXDLLIMPEXP_FWD_CORE wxView;
+class WXDLLIMPEXP_FWD_CORE wxDocTemplate;
+class WXDLLIMPEXP_FWD_CORE wxDocManager;
+class WXDLLIMPEXP_FWD_CORE wxPrintInfo;
+class WXDLLIMPEXP_FWD_CORE wxCommandProcessor;
+class WXDLLIMPEXP_FWD_CORE wxFileHistory;
+class WXDLLIMPEXP_FWD_CORE wxConfigBase;
 
 #if wxUSE_STD_IOSTREAM
   #include "wx/iosfwrap.h"
@@ -244,7 +244,7 @@ private:
 class WXDLLEXPORT wxDocTemplate: public wxObject
 {
 
-friend class WXDLLEXPORT wxDocManager;
+friend class WXDLLIMPEXP_FWD_CORE wxDocManager;
 
 public:
     // Associate document and view types. They're for identifying what view is
diff --git a/include/wx/dragimag.h b/include/wx/dragimag.h
index a53feb05db..f19e1c600f 100644
--- a/include/wx/dragimag.h
+++ b/include/wx/dragimag.h
@@ -14,9 +14,9 @@
 
 #if wxUSE_DRAGIMAGE
 
-class WXDLLEXPORT wxRect;
-class WXDLLEXPORT wxMemoryDC;
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxRect;
+class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 
 #if defined(__WXMSW__)
 #   if defined(__WXUNIVERSAL__)
diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h
index 4bd00cf0f9..4d5f948628 100644
--- a/include/wx/dynlib.h
+++ b/include/wx/dynlib.h
@@ -32,7 +32,7 @@
     #define wxHAVE_DYNLIB_ERROR
 #endif
 
-class WXDLLIMPEXP_BASE wxDynamicLibraryDetailsCreator;
+class WXDLLIMPEXP_FWD_BASE wxDynamicLibraryDetailsCreator;
 
 // ----------------------------------------------------------------------------
 // conditional compilation
diff --git a/include/wx/dynload.h b/include/wx/dynload.h
index fbbf6f2e91..d4c710d940 100644
--- a/include/wx/dynload.h
+++ b/include/wx/dynload.h
@@ -25,7 +25,7 @@
 #include "wx/hashmap.h"
 #include "wx/module.h"
 
-class WXDLLIMPEXP_BASE wxPluginLibrary;
+class WXDLLIMPEXP_FWD_BASE wxPluginLibrary;
 
 
 WX_DECLARE_STRING_HASH_MAP_WITH_DECL(wxPluginLibrary *, wxDLManifest,
diff --git a/include/wx/editlbox.h b/include/wx/editlbox.h
index 212028b716..59236bcf3f 100644
--- a/include/wx/editlbox.h
+++ b/include/wx/editlbox.h
@@ -17,9 +17,9 @@
 
 #include "wx/panel.h"
 
-class WXDLLEXPORT wxBitmapButton;
-class WXDLLEXPORT wxListCtrl;
-class WXDLLEXPORT wxListEvent;
+class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
+class WXDLLIMPEXP_FWD_CORE wxListCtrl;
+class WXDLLIMPEXP_FWD_CORE wxListEvent;
 
 #define wxEL_ALLOW_NEW          0x0100
 #define wxEL_ALLOW_EDIT         0x0200
diff --git a/include/wx/event.h b/include/wx/event.h
index f86816198d..1278284950 100644
--- a/include/wx/event.h
+++ b/include/wx/event.h
@@ -30,16 +30,16 @@
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxList;
+class WXDLLIMPEXP_FWD_BASE wxList;
 
 #if wxUSE_GUI
-    class WXDLLIMPEXP_CORE wxDC;
-    class WXDLLIMPEXP_CORE wxMenu;
-    class WXDLLIMPEXP_CORE wxWindow;
-    class WXDLLIMPEXP_CORE wxWindowBase;
+    class WXDLLIMPEXP_FWD_CORE wxDC;
+    class WXDLLIMPEXP_FWD_CORE wxMenu;
+    class WXDLLIMPEXP_FWD_CORE wxWindow;
+    class WXDLLIMPEXP_FWD_CORE wxWindowBase;
 #endif // wxUSE_GUI
 
-class WXDLLIMPEXP_BASE wxEvtHandler;
+class WXDLLIMPEXP_FWD_BASE wxEvtHandler;
 
 // ----------------------------------------------------------------------------
 // Event types
@@ -411,7 +411,7 @@ protected:
 
 private:
     // it needs to access our m_propagationLevel
-    friend class WXDLLIMPEXP_BASE wxPropagateOnce;
+    friend class WXDLLIMPEXP_FWD_BASE wxPropagateOnce;
 
     DECLARE_ABSTRACT_CLASS(wxEvent)
 };
diff --git a/include/wx/evtloop.h b/include/wx/evtloop.h
index 254f8fe078..f6d1b55313 100644
--- a/include/wx/evtloop.h
+++ b/include/wx/evtloop.h
@@ -121,7 +121,7 @@ protected:
     #include "wx/dfb/evtloop.h"
 #else // other platform
 
-class WXDLLEXPORT wxEventLoopImpl;
+class WXDLLIMPEXP_FWD_CORE wxEventLoopImpl;
 
 class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
 {
diff --git a/include/wx/fdrepdlg.h b/include/wx/fdrepdlg.h
index 2adda0cbbf..43e8c4cef4 100644
--- a/include/wx/fdrepdlg.h
+++ b/include/wx/fdrepdlg.h
@@ -18,10 +18,10 @@
 
 #include "wx/dialog.h"
 
-class WXDLLEXPORT wxFindDialogEvent;
-class WXDLLEXPORT wxFindReplaceDialog;
-class WXDLLEXPORT wxFindReplaceData;
-class WXDLLEXPORT wxFindReplaceDialogImpl;
+class WXDLLIMPEXP_FWD_CORE wxFindDialogEvent;
+class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialog;
+class WXDLLIMPEXP_FWD_CORE wxFindReplaceData;
+class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialogImpl;
 
 // ----------------------------------------------------------------------------
 // Flags for wxFindReplaceData.Flags
diff --git a/include/wx/fileconf.h b/include/wx/fileconf.h
index a2ab598635..68e230964b 100644
--- a/include/wx/fileconf.h
+++ b/include/wx/fileconf.h
@@ -90,13 +90,13 @@
   (it's on by default, the current status can be retrieved with
    IsExpandingEnvVars function).
 */
-class WXDLLIMPEXP_BASE wxFileConfigGroup;
-class WXDLLIMPEXP_BASE wxFileConfigEntry;
-class WXDLLIMPEXP_BASE wxFileConfigLineList;
+class WXDLLIMPEXP_FWD_BASE wxFileConfigGroup;
+class WXDLLIMPEXP_FWD_BASE wxFileConfigEntry;
+class WXDLLIMPEXP_FWD_BASE wxFileConfigLineList;
 
 #if wxUSE_STREAMS
-class WXDLLIMPEXP_BASE wxInputStream;
-class WXDLLIMPEXP_BASE wxOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxInputStream;
+class WXDLLIMPEXP_FWD_BASE wxOutputStream;
 #endif // wxUSE_STREAMS
 
 class WXDLLIMPEXP_BASE wxFileConfig : public wxConfigBase
diff --git a/include/wx/filename.h b/include/wx/filename.h
index d56d2a2d90..dd44465684 100644
--- a/include/wx/filename.h
+++ b/include/wx/filename.h
@@ -29,11 +29,11 @@
 #include "wx/intl.h"
 
 #if wxUSE_FILE
-class WXDLLIMPEXP_BASE wxFile;
+class WXDLLIMPEXP_FWD_BASE wxFile;
 #endif
 
 #if wxUSE_FFILE
-class WXDLLIMPEXP_BASE wxFFile;
+class WXDLLIMPEXP_FWD_BASE wxFFile;
 #endif
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/filepicker.h b/include/wx/filepicker.h
index 8423c65f26..a71f69f9ea 100644
--- a/include/wx/filepicker.h
+++ b/include/wx/filepicker.h
@@ -19,8 +19,8 @@
 #include "wx/pickerbase.h"
 #include "wx/filename.h"
 
-class WXDLLIMPEXP_CORE wxDialog;
-class WXDLLIMPEXP_CORE wxFileDirPickerEvent;
+class WXDLLIMPEXP_FWD_CORE wxDialog;
+class WXDLLIMPEXP_FWD_CORE wxFileDirPickerEvent;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetLabel[];
 extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetNameStr[];
diff --git a/include/wx/filesys.h b/include/wx/filesys.h
index 02ae931a03..cd2af3bbeb 100644
--- a/include/wx/filesys.h
+++ b/include/wx/filesys.h
@@ -27,9 +27,9 @@
 #include "wx/filename.h"
 #include "wx/hashmap.h"
 
-class WXDLLIMPEXP_BASE wxFSFile;
-class WXDLLIMPEXP_BASE wxFileSystemHandler;
-class WXDLLIMPEXP_BASE wxFileSystem;
+class WXDLLIMPEXP_FWD_BASE wxFSFile;
+class WXDLLIMPEXP_FWD_BASE wxFileSystemHandler;
+class WXDLLIMPEXP_FWD_BASE wxFileSystem;
 
 //--------------------------------------------------------------------------------
 // wxFSFile
diff --git a/include/wx/font.h b/include/wx/font.h
index b8300fca36..c20d2125a9 100644
--- a/include/wx/font.h
+++ b/include/wx/font.h
@@ -24,10 +24,10 @@
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFontData;
-class WXDLLEXPORT wxFontBase;
-class WXDLLEXPORT wxFont;
-class WXDLLEXPORT wxSize;
+class WXDLLIMPEXP_FWD_CORE wxFontData;
+class WXDLLIMPEXP_FWD_CORE wxFontBase;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxSize;
 
 // ----------------------------------------------------------------------------
 // font constants
@@ -105,7 +105,7 @@ enum
 // wxFontBase represents a font object
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxNativeFontInfo;
+class WXDLLIMPEXP_FWD_CORE wxNativeFontInfo;
 
 class WXDLLEXPORT wxFontBase : public wxGDIObject
 {
diff --git a/include/wx/fontmap.h b/include/wx/fontmap.h
index 3d86a887ea..3a260ce5a2 100644
--- a/include/wx/fontmap.h
+++ b/include/wx/fontmap.h
@@ -25,13 +25,13 @@
 #endif // wxUSE_GUI
 
 #if wxUSE_CONFIG && wxUSE_FILECONFIG
-    class WXDLLIMPEXP_BASE wxConfigBase;
+    class WXDLLIMPEXP_FWD_BASE wxConfigBase;
 #endif // wxUSE_CONFIG
 
-class WXDLLIMPEXP_CORE wxFontMapper;
+class WXDLLIMPEXP_FWD_CORE wxFontMapper;
 
 #if wxUSE_GUI
-    class WXDLLIMPEXP_CORE wxWindow;
+    class WXDLLIMPEXP_FWD_CORE wxWindow;
 #endif // wxUSE_GUI
 
 // ============================================================================
diff --git a/include/wx/fontpicker.h b/include/wx/fontpicker.h
index 308b20f964..2f12112fc3 100644
--- a/include/wx/fontpicker.h
+++ b/include/wx/fontpicker.h
@@ -20,7 +20,7 @@
 #include "wx/pickerbase.h"
 
 
-class WXDLLIMPEXP_CORE wxFontPickerEvent;
+class WXDLLIMPEXP_FWD_CORE wxFontPickerEvent;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxFontPickerWidgetNameStr[];
 extern WXDLLEXPORT_DATA(const wxChar) wxFontPickerCtrlNameStr[];
diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h
index 12798501f0..9cfb7d51f7 100644
--- a/include/wx/fontutil.h
+++ b/include/wx/fontutil.h
@@ -26,8 +26,8 @@
     #include "wx/msw/wrapwin.h"
 #endif
 
-class WXDLLIMPEXP_BASE wxArrayString;
-struct WXDLLEXPORT wxNativeEncodingInfo;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
+struct WXDLLIMPEXP_FWD_CORE wxNativeEncodingInfo;
 
 #if defined(_WX_X_FONTLIKE)
 
diff --git a/include/wx/frame.h b/include/wx/frame.h
index 0f65132d71..15bbfd7c35 100644
--- a/include/wx/frame.h
+++ b/include/wx/frame.h
@@ -22,10 +22,10 @@
 extern WXDLLEXPORT_DATA(const wxChar) wxStatusLineNameStr[];
 extern WXDLLEXPORT_DATA(const wxChar) wxToolBarNameStr[];
 
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxStatusBar;
-class WXDLLEXPORT wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxStatusBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/fs_mem.h b/include/wx/fs_mem.h
index fe1139b065..ad0927f42b 100644
--- a/include/wx/fs_mem.h
+++ b/include/wx/fs_mem.h
@@ -16,8 +16,8 @@
 #include "wx/filesys.h"
 
 #if wxUSE_GUI
-    class WXDLLIMPEXP_CORE wxBitmap;
-    class WXDLLIMPEXP_CORE wxImage;
+    class WXDLLIMPEXP_FWD_CORE wxBitmap;
+    class WXDLLIMPEXP_FWD_CORE wxImage;
 #endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/gbsizer.h b/include/wx/gbsizer.h
index 6ceeb9311f..45812f8f22 100644
--- a/include/wx/gbsizer.h
+++ b/include/wx/gbsizer.h
@@ -79,7 +79,7 @@ extern WXDLLEXPORT_DATA(const wxGBSpan) wxDefaultSpan;
 // wxGBSizerItem
 //---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxGridBagSizer;
+class WXDLLIMPEXP_FWD_CORE wxGridBagSizer;
 
 
 class WXDLLEXPORT wxGBSizerItem : public wxSizerItem
diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h
index b39ba86cc9..8842332753 100644
--- a/include/wx/gdicmn.h
+++ b/include/wx/gdicmn.h
@@ -27,18 +27,18 @@
 // forward declarations
 // ---------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxBrush;
-class WXDLLIMPEXP_CORE wxColour;
-class WXDLLIMPEXP_CORE wxCursor;
-class WXDLLIMPEXP_CORE wxFont;
-class WXDLLIMPEXP_CORE wxIcon;
-class WXDLLIMPEXP_CORE wxPalette;
-class WXDLLIMPEXP_CORE wxPen;
-class WXDLLIMPEXP_CORE wxRegion;
-class WXDLLIMPEXP_BASE wxString;
-class WXDLLIMPEXP_CORE wxIconBundle;
-class WXDLLIMPEXP_CORE wxPoint;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPen;
+class WXDLLIMPEXP_FWD_CORE wxRegion;
+class WXDLLIMPEXP_FWD_BASE wxString;
+class WXDLLIMPEXP_FWD_CORE wxIconBundle;
+class WXDLLIMPEXP_FWD_CORE wxPoint;
 
 // ---------------------------------------------------------------------------
 // constants
diff --git a/include/wx/gdiobj.h b/include/wx/gdiobj.h
index 05e5a61777..2464f78827 100644
--- a/include/wx/gdiobj.h
+++ b/include/wx/gdiobj.h
@@ -20,7 +20,7 @@
 // the same native GDI object
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxGDIRefData: public wxObjectRefData { };
+class WXDLLIMPEXP_FWD_CORE wxGDIRefData: public wxObjectRefData { };
 
 // ----------------------------------------------------------------------------
 // wxGDIObject
diff --git a/include/wx/generic/aboutdlgg.h b/include/wx/generic/aboutdlgg.h
index c3ce6681ee..c275ed7ba7 100644
--- a/include/wx/generic/aboutdlgg.h
+++ b/include/wx/generic/aboutdlgg.h
@@ -17,9 +17,9 @@
 
 #include "wx/dialog.h"
 
-class WXDLLIMPEXP_ADV  wxAboutDialogInfo;
-class WXDLLIMPEXP_CORE wxSizer;
-class WXDLLIMPEXP_CORE wxSizerFlags;
+class WXDLLIMPEXP_FWD_ADV wxAboutDialogInfo;
+class WXDLLIMPEXP_FWD_CORE wxSizer;
+class WXDLLIMPEXP_FWD_CORE wxSizerFlags;
 
 // ----------------------------------------------------------------------------
 // wxGenericAboutDialog: generic "About" dialog implementation
diff --git a/include/wx/generic/accel.h b/include/wx/generic/accel.h
index 23022b061e..04ca07ed55 100644
--- a/include/wx/generic/accel.h
+++ b/include/wx/generic/accel.h
@@ -10,7 +10,7 @@
 #ifndef _WX_GENERIC_ACCEL_H_
 #define _WX_GENERIC_ACCEL_H_
 
-class WXDLLEXPORT wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
 
 // ----------------------------------------------------------------------------
 // wxAcceleratorTable
diff --git a/include/wx/generic/busyinfo.h b/include/wx/generic/busyinfo.h
index 0151a76b3b..c9a5a2c8cc 100644
--- a/include/wx/generic/busyinfo.h
+++ b/include/wx/generic/busyinfo.h
@@ -14,7 +14,7 @@
 
 #if wxUSE_BUSYINFO
 
-class WXDLLIMPEXP_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 //--------------------------------------------------------------------------------
 // wxBusyInfo
diff --git a/include/wx/generic/buttonbar.h b/include/wx/generic/buttonbar.h
index e34a1207a5..165c962d93 100644
--- a/include/wx/generic/buttonbar.h
+++ b/include/wx/generic/buttonbar.h
@@ -16,7 +16,7 @@
 #include "wx/bmpbuttn.h"
 #include "wx/toolbar.h"
 
-class WXDLLEXPORT wxButtonToolBarTool;
+class WXDLLIMPEXP_FWD_CORE wxButtonToolBarTool;
 
 // ----------------------------------------------------------------------------
 // wxButtonToolBar
diff --git a/include/wx/generic/calctrl.h b/include/wx/generic/calctrl.h
index 6bd3c75486..08acaca363 100644
--- a/include/wx/generic/calctrl.h
+++ b/include/wx/generic/calctrl.h
@@ -15,9 +15,9 @@
 #include "wx/control.h"         // the base class
 #include "wx/dcclient.h"        // for wxPaintDC
 
-class WXDLLEXPORT wxComboBox;
-class WXDLLEXPORT wxStaticText;
-class WXDLLEXPORT wxSpinCtrl;
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
 
 #define wxCalendarNameStr _T("CalendarCtrl")
 
diff --git a/include/wx/generic/caret.h b/include/wx/generic/caret.h
index e19212316d..63166298dc 100644
--- a/include/wx/generic/caret.h
+++ b/include/wx/generic/caret.h
@@ -20,7 +20,7 @@
     #define wxHAS_CARET_USING_OVERLAYS
 #endif
 
-class WXDLLIMPEXP_CORE wxCaret;
+class WXDLLIMPEXP_FWD_CORE wxCaret;
 
 class WXDLLEXPORT wxCaretTimer : public wxTimer
 {
diff --git a/include/wx/generic/choicdgg.h b/include/wx/generic/choicdgg.h
index 99b2367741..57fc94131f 100644
--- a/include/wx/generic/choicdgg.h
+++ b/include/wx/generic/choicdgg.h
@@ -15,7 +15,7 @@
 #include "wx/dynarray.h"
 #include "wx/dialog.h"
 
-class WXDLLEXPORT wxListBoxBase;
+class WXDLLIMPEXP_FWD_CORE wxListBoxBase;
 
 // ----------------------------------------------------------------------------
 // some (ugly...) constants
diff --git a/include/wx/generic/collpaneg.h b/include/wx/generic/collpaneg.h
index c40d772b68..9249aec213 100644
--- a/include/wx/generic/collpaneg.h
+++ b/include/wx/generic/collpaneg.h
@@ -13,8 +13,8 @@
 #define _WX_COLLAPSABLE_PANE_H_GENERIC_
 
 // forward declared
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxStaticLine;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxStaticLine;
 
 // class name
 extern WXDLLIMPEXP_DATA_CORE(const wxChar) wxCollapsiblePaneNameStr[];
diff --git a/include/wx/generic/colrdlgg.h b/include/wx/generic/colrdlgg.h
index a99399ee7d..0d59436e90 100644
--- a/include/wx/generic/colrdlgg.h
+++ b/include/wx/generic/colrdlgg.h
@@ -25,7 +25,7 @@
     #define wxID_GREEN_SLIDER   3002
     #define wxID_BLUE_SLIDER    3003
 
-    class WXDLLEXPORT wxSlider;
+    class WXDLLIMPEXP_FWD_CORE wxSlider;
 
 #endif // wxUSE_SLIDER
 
diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h
index cb0007521b..72b9d0cd53 100644
--- a/include/wx/generic/dataview.h
+++ b/include/wx/generic/dataview.h
@@ -21,9 +21,9 @@
 // classes
 // ---------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxDataViewCtrl;
-class WXDLLIMPEXP_ADV wxDataViewMainWindow;
-class WXDLLIMPEXP_ADV wxDataViewHeaderWindow;
+class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
+class WXDLLIMPEXP_FWD_ADV wxDataViewMainWindow;
+class WXDLLIMPEXP_FWD_ADV wxDataViewHeaderWindow;
 
 // ---------------------------------------------------------
 // wxDataViewRenderer
diff --git a/include/wx/generic/datectrl.h b/include/wx/generic/datectrl.h
index e7e9ffb36b..6e10829231 100644
--- a/include/wx/generic/datectrl.h
+++ b/include/wx/generic/datectrl.h
@@ -12,11 +12,11 @@
 #ifndef _WX_GENERIC_DATECTRL_H_
 #define _WX_GENERIC_DATECTRL_H_
 
-class WXDLLIMPEXP_ADV wxCalendarDateAttr;
-class WXDLLIMPEXP_ADV wxCalendarCtrl;
-class WXDLLIMPEXP_ADV wxCalendarEvent;
-class WXDLLIMPEXP_ADV wxComboCtrl;
-class WXDLLIMPEXP_ADV wxCalendarComboPopup;
+class WXDLLIMPEXP_FWD_ADV wxCalendarDateAttr;
+class WXDLLIMPEXP_FWD_ADV wxCalendarCtrl;
+class WXDLLIMPEXP_FWD_ADV wxCalendarEvent;
+class WXDLLIMPEXP_FWD_ADV wxComboCtrl;
+class WXDLLIMPEXP_FWD_ADV wxCalendarComboPopup;
 
 class WXDLLIMPEXP_ADV wxDatePickerCtrlGeneric : public wxDatePickerCtrlBase
 {
diff --git a/include/wx/generic/dirctrlg.h b/include/wx/generic/dirctrlg.h
index 2a6c450824..29bff51af6 100644
--- a/include/wx/generic/dirctrlg.h
+++ b/include/wx/generic/dirctrlg.h
@@ -30,9 +30,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxTextCtrl;
-class WXDLLIMPEXP_CORE wxImageList;
-class WXDLLIMPEXP_BASE wxHashTable;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_BASE wxHashTable;
 
 //-----------------------------------------------------------------------------
 // Extra styles for wxGenericDirCtrl
@@ -78,7 +78,7 @@ public:
 // wxDirCtrl
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDirFilterListCtrl;
+class WXDLLIMPEXP_FWD_CORE wxDirFilterListCtrl;
 
 class WXDLLEXPORT wxGenericDirCtrl: public wxControl
 {
diff --git a/include/wx/generic/dirdlgg.h b/include/wx/generic/dirdlgg.h
index 6346f476ec..71884b63ce 100644
--- a/include/wx/generic/dirdlgg.h
+++ b/include/wx/generic/dirdlgg.h
@@ -15,9 +15,9 @@
 #ifndef _WX_DIRDLGG_H_
 #define _WX_DIRDLGG_H_
 
-class WXDLLEXPORT wxGenericDirCtrl;
-class WXDLLEXPORT wxTextCtrl;
-class WXDLLEXPORT wxTreeEvent;
+class WXDLLIMPEXP_FWD_CORE wxGenericDirCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
 
 // we may be included directly as well as from wx/dirdlg.h (FIXME)
 extern WXDLLEXPORT_DATA(const wxChar) wxDirDialogNameStr[];
diff --git a/include/wx/generic/fdrepdlg.h b/include/wx/generic/fdrepdlg.h
index c287322134..1a796709ca 100644
--- a/include/wx/generic/fdrepdlg.h
+++ b/include/wx/generic/fdrepdlg.h
@@ -12,9 +12,9 @@
 #ifndef _WX_GENERIC_FDREPDLG_H_
 #define _WX_GENERIC_FDREPDLG_H_
 
-class WXDLLEXPORT wxCheckBox;
-class WXDLLEXPORT wxRadioBox;
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxRadioBox;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 // ----------------------------------------------------------------------------
 // wxGenericFindReplaceDialog: dialog for searching / replacing text
diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h
index f103a39c25..656f97a02a 100644
--- a/include/wx/generic/filedlgg.h
+++ b/include/wx/generic/filedlgg.h
@@ -21,16 +21,16 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxBitmapButton;
-class WXDLLEXPORT wxCheckBox;
-class WXDLLEXPORT wxChoice;
-class WXDLLEXPORT wxFileData;
-class WXDLLEXPORT wxFileCtrl;
-class WXDLLEXPORT wxGenericFileDialog;
-class WXDLLEXPORT wxListEvent;
-class WXDLLEXPORT wxListItem;
-class WXDLLEXPORT wxStaticText;
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxFileData;
+class WXDLLIMPEXP_FWD_CORE wxFileCtrl;
+class WXDLLIMPEXP_FWD_CORE wxGenericFileDialog;
+class WXDLLIMPEXP_FWD_CORE wxListEvent;
+class WXDLLIMPEXP_FWD_CORE wxListItem;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 //-------------------------------------------------------------------------
 // wxGenericFileDialog
diff --git a/include/wx/generic/fontdlgg.h b/include/wx/generic/fontdlgg.h
index 2fb62df9b9..9668f77676 100644
--- a/include/wx/generic/fontdlgg.h
+++ b/include/wx/generic/fontdlgg.h
@@ -20,7 +20,7 @@
 
 #ifdef __WXWINCE__
 #define USE_SPINCTRL_FOR_POINT_SIZE 1
-class WXDLLEXPORT wxSpinEvent;
+class WXDLLIMPEXP_FWD_CORE wxSpinEvent;
 #else
 #define USE_SPINCTRL_FOR_POINT_SIZE 0
 #endif
@@ -29,10 +29,10 @@ class WXDLLEXPORT wxSpinEvent;
  * FONT DIALOG
  */
 
-class WXDLLEXPORT wxChoice;
-class WXDLLEXPORT wxText;
-class WXDLLEXPORT wxCheckBox;
-class WXDLLEXPORT wxFontPreviewer;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxText;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxFontPreviewer;
 
 enum
 {
diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h
index 293b11ff84..5a51459b77 100644
--- a/include/wx/generic/grid.h
+++ b/include/wx/generic/grid.h
@@ -67,21 +67,21 @@ enum wxGridDirection
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxGrid;
-class WXDLLIMPEXP_ADV wxGridCellAttr;
-class WXDLLIMPEXP_ADV wxGridCellAttrProviderData;
-class WXDLLIMPEXP_ADV wxGridColLabelWindow;
-class WXDLLIMPEXP_ADV wxGridCornerLabelWindow;
-class WXDLLIMPEXP_ADV wxGridRowLabelWindow;
-class WXDLLIMPEXP_ADV wxGridWindow;
-class WXDLLIMPEXP_ADV wxGridTypeRegistry;
-class WXDLLIMPEXP_ADV wxGridSelection;
-
-class WXDLLEXPORT wxCheckBox;
-class WXDLLEXPORT wxComboBox;
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_ADV wxGrid;
+class WXDLLIMPEXP_FWD_ADV wxGridCellAttr;
+class WXDLLIMPEXP_FWD_ADV wxGridCellAttrProviderData;
+class WXDLLIMPEXP_FWD_ADV wxGridColLabelWindow;
+class WXDLLIMPEXP_FWD_ADV wxGridCornerLabelWindow;
+class WXDLLIMPEXP_FWD_ADV wxGridRowLabelWindow;
+class WXDLLIMPEXP_FWD_ADV wxGridWindow;
+class WXDLLIMPEXP_FWD_ADV wxGridTypeRegistry;
+class WXDLLIMPEXP_FWD_ADV wxGridSelection;
+
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 #if wxUSE_SPINCTRL
-class WXDLLEXPORT wxSpinCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
 #endif
 
 // ----------------------------------------------------------------------------
@@ -2020,7 +2020,7 @@ protected:
     bool GetModelValues();
     bool SetModelValues();
 
-    friend class WXDLLIMPEXP_ADV wxGridSelection;
+    friend class WXDLLIMPEXP_FWD_ADV wxGridSelection;
 
     DECLARE_DYNAMIC_CLASS( wxGrid )
     DECLARE_EVENT_TABLE()
diff --git a/include/wx/generic/gridsel.h b/include/wx/generic/gridsel.h
index 5fc30ab259..fff21a3684 100644
--- a/include/wx/generic/gridsel.h
+++ b/include/wx/generic/gridsel.h
@@ -79,7 +79,7 @@ private:
     wxGrid                              *m_grid;
     wxGrid::wxGridSelectionModes        m_selectionMode;
 
-    friend class WXDLLIMPEXP_ADV wxGrid;
+    friend class WXDLLIMPEXP_FWD_ADV wxGrid;
 
     DECLARE_NO_COPY_CLASS(wxGridSelection)
 };
diff --git a/include/wx/generic/imaglist.h b/include/wx/generic/imaglist.h
index 92db6dc872..418aa96438 100644
--- a/include/wx/generic/imaglist.h
+++ b/include/wx/generic/imaglist.h
@@ -15,9 +15,9 @@
 #include "wx/list.h"
 #include "wx/icon.h"
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxColour;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 
 class WXDLLEXPORT wxGenericImageList: public wxObject
diff --git a/include/wx/generic/laywin.h b/include/wx/generic/laywin.h
index 5b355df4d1..a2336325a1 100644
--- a/include/wx/generic/laywin.h
+++ b/include/wx/generic/laywin.h
@@ -196,8 +196,8 @@ private:
 
 #endif // wxUSE_SASH
 
-class WXDLLEXPORT wxMDIParentFrame;
-class WXDLLEXPORT wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIParentFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 // This class implements the layout algorithm
 class WXDLLIMPEXP_ADV wxLayoutAlgorithm: public wxObject
diff --git a/include/wx/generic/listctrl.h b/include/wx/generic/listctrl.h
index 24422ec81b..a6931d490c 100644
--- a/include/wx/generic/listctrl.h
+++ b/include/wx/generic/listctrl.h
@@ -13,10 +13,10 @@
 
 #include "wx/textctrl.h"
 
-class WXDLLIMPEXP_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 #if wxUSE_DRAG_AND_DROP
-class WXDLLEXPORT wxDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxDropTarget;
 #endif
 
 // ----------------------------------------------------------------------------
@@ -28,8 +28,8 @@ class WXDLLEXPORT wxDropTarget;
 // internal classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxListHeaderWindow;
-class WXDLLEXPORT wxListMainWindow;
+class WXDLLIMPEXP_FWD_CORE wxListHeaderWindow;
+class WXDLLIMPEXP_FWD_CORE wxListMainWindow;
 
 //-----------------------------------------------------------------------------
 // wxListCtrl
@@ -233,7 +233,7 @@ protected:
     virtual wxListItemAttr *OnGetItemAttr(long item) const;
 
     // it calls our OnGetXXX() functions
-    friend class WXDLLEXPORT wxListMainWindow;
+    friend class WXDLLIMPEXP_FWD_CORE wxListMainWindow;
 
 private:
     // create the header window
diff --git a/include/wx/generic/mdig.h b/include/wx/generic/mdig.h
index bd0f0a39f0..39c2ee2ff2 100644
--- a/include/wx/generic/mdig.h
+++ b/include/wx/generic/mdig.h
@@ -27,9 +27,9 @@ extern WXDLLEXPORT_DATA(const wxChar) wxStatusLineNameStr[];
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxGenericMDIParentFrame;
-class WXDLLEXPORT wxGenericMDIClientWindow;
-class WXDLLEXPORT wxGenericMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxGenericMDIParentFrame;
+class WXDLLIMPEXP_FWD_CORE wxGenericMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxGenericMDIChildFrame;
 
 //-----------------------------------------------------------------------------
 // wxGenericMDIParentFrame
diff --git a/include/wx/generic/notebook.h b/include/wx/generic/notebook.h
index 116286eb1e..0dec149510 100644
--- a/include/wx/generic/notebook.h
+++ b/include/wx/generic/notebook.h
@@ -22,9 +22,9 @@
 // ----------------------------------------------------------------------------
 
 // fwd declarations
-class WXDLLEXPORT wxImageList;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxTabView;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxTabView;
 
 // ----------------------------------------------------------------------------
 // wxNotebook
diff --git a/include/wx/generic/numdlgg.h b/include/wx/generic/numdlgg.h
index 2859462745..11d9cfb072 100644
--- a/include/wx/generic/numdlgg.h
+++ b/include/wx/generic/numdlgg.h
@@ -19,9 +19,9 @@
 #include "wx/dialog.h"
 
 #if wxUSE_SPINCTRL
-    class WXDLLEXPORT wxSpinCtrl;
+    class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
 #else
-    class WXDLLEXPORT wxTextCtrl;
+    class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 #endif // wxUSE_SPINCTRL
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/generic/paletteg.h b/include/wx/generic/paletteg.h
index 6ae9287a91..a8ecde7185 100644
--- a/include/wx/generic/paletteg.h
+++ b/include/wx/generic/paletteg.h
@@ -21,7 +21,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 //-----------------------------------------------------------------------------
 // wxPalette
diff --git a/include/wx/generic/panelg.h b/include/wx/generic/panelg.h
index be02bf70e2..ae5e74e829 100644
--- a/include/wx/generic/panelg.h
+++ b/include/wx/generic/panelg.h
@@ -19,7 +19,7 @@
 #include "wx/window.h"
 #include "wx/containr.h"
 
-class WXDLLEXPORT wxControlContainer;
+class WXDLLIMPEXP_FWD_CORE wxControlContainer;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxPanelNameStr[];
 
diff --git a/include/wx/generic/prntdlgg.h b/include/wx/generic/prntdlgg.h
index 41b4da8dd5..9c3f717ce2 100644
--- a/include/wx/generic/prntdlgg.h
+++ b/include/wx/generic/prntdlgg.h
@@ -27,13 +27,13 @@
     #include "wx/dcps.h"
 #endif
 
-class WXDLLEXPORT wxTextCtrl;
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxCheckBox;
-class WXDLLEXPORT wxComboBox;
-class WXDLLEXPORT wxStaticText;
-class WXDLLEXPORT wxRadioBox;
-class WXDLLEXPORT wxPageSetupData;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxRadioBox;
+class WXDLLIMPEXP_FWD_CORE wxPageSetupData;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/generic/progdlgg.h b/include/wx/generic/progdlgg.h
index 24f25446cc..85cbeedabd 100644
--- a/include/wx/generic/progdlgg.h
+++ b/include/wx/generic/progdlgg.h
@@ -19,9 +19,9 @@
 
 #include "wx/dialog.h"
 
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxGauge;
-class WXDLLEXPORT wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxGauge;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
 
 /* Progress dialog which shows a moving progress bar.
     Taken from the Mahogany project.*/
@@ -161,7 +161,7 @@ private:
 #endif // __WXMSW__
 
     // for wxPD_APP_MODAL case
-    class WXDLLEXPORT wxWindowDisabler *m_winDisabler;
+    class WXDLLIMPEXP_FWD_CORE wxWindowDisabler *m_winDisabler;
 
     DECLARE_EVENT_TABLE()
     DECLARE_NO_COPY_CLASS(wxProgressDialog)
diff --git a/include/wx/generic/propdlg.h b/include/wx/generic/propdlg.h
index a7fbf3d9e9..b6c60227d4 100644
--- a/include/wx/generic/propdlg.h
+++ b/include/wx/generic/propdlg.h
@@ -18,7 +18,7 @@
 
 #include "wx/dialog.h"
 
-class WXDLLIMPEXP_CORE wxBookCtrlBase;
+class WXDLLIMPEXP_FWD_CORE wxBookCtrlBase;
 
 //-----------------------------------------------------------------------------
 // wxPropertySheetDialog
diff --git a/include/wx/generic/region.h b/include/wx/generic/region.h
index ea6830e167..e82714abcd 100644
--- a/include/wx/generic/region.h
+++ b/include/wx/generic/region.h
@@ -42,7 +42,7 @@ protected:
     virtual bool DoSubtract(const wxRegion& region);
     virtual bool DoXor(const wxRegion& region);
 
-    friend class WXDLLEXPORT wxRegionIteratorGeneric;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIteratorGeneric;
 };
 
 class WXDLLEXPORT wxRegionIteratorGeneric : public wxObject
diff --git a/include/wx/generic/spinctlg.h b/include/wx/generic/spinctlg.h
index 50e6ef6afe..9d4f63f7fe 100644
--- a/include/wx/generic/spinctlg.h
+++ b/include/wx/generic/spinctlg.h
@@ -22,8 +22,8 @@
 
 #if wxUSE_SPINBTN
 
-class WXDLLEXPORT wxSpinButton;
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinButton;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 // ----------------------------------------------------------------------------
 // wxSpinCtrl is a combination of wxTextCtrl and wxSpinButton
diff --git a/include/wx/generic/splash.h b/include/wx/generic/splash.h
index fa7393e8bc..69d413c4e7 100644
--- a/include/wx/generic/splash.h
+++ b/include/wx/generic/splash.h
@@ -27,7 +27,7 @@
 #define wxSPLASH_TIMEOUT            0x04
 #define wxSPLASH_NO_TIMEOUT         0x00
 
-class WXDLLIMPEXP_ADV wxSplashScreenWindow;
+class WXDLLIMPEXP_FWD_ADV wxSplashScreenWindow;
 
 /*
  * wxSplashScreen
diff --git a/include/wx/generic/splitter.h b/include/wx/generic/splitter.h
index 81b683af75..0e7c694f7c 100644
--- a/include/wx/generic/splitter.h
+++ b/include/wx/generic/splitter.h
@@ -15,7 +15,7 @@
 #include "wx/window.h"                      // base class declaration
 #include "wx/containr.h"                    // wxControlContainer
 
-class WXDLLEXPORT wxSplitterEvent;
+class WXDLLIMPEXP_FWD_CORE wxSplitterEvent;
 
 // ---------------------------------------------------------------------------
 // splitter constants
@@ -367,7 +367,7 @@ public:
     }
 
 private:
-    friend class WXDLLEXPORT wxSplitterWindow;
+    friend class WXDLLIMPEXP_FWD_CORE wxSplitterWindow;
 
     // data for the different types of event
     union
diff --git a/include/wx/generic/srchctlg.h b/include/wx/generic/srchctlg.h
index 043ecfa879..05fe114b5e 100644
--- a/include/wx/generic/srchctlg.h
+++ b/include/wx/generic/srchctlg.h
@@ -15,8 +15,8 @@
 
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxSearchButton;
-class WXDLLEXPORT wxSearchTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSearchButton;
+class WXDLLIMPEXP_FWD_CORE wxSearchTextCtrl;
 
 // ----------------------------------------------------------------------------
 // wxSearchCtrl is a combination of wxTextCtrl and wxSearchButton
diff --git a/include/wx/generic/tabg.h b/include/wx/generic/tabg.h
index c65ed02607..4ab53af0e7 100644
--- a/include/wx/generic/tabg.h
+++ b/include/wx/generic/tabg.h
@@ -20,7 +20,7 @@
 #include "wx/panel.h"
 #include "wx/list.h"
 
-class WXDLLEXPORT wxTabView;
+class WXDLLIMPEXP_FWD_CORE wxTabView;
 
 /*
  * A wxTabControl is the internal and visual representation
diff --git a/include/wx/generic/textdlgg.h b/include/wx/generic/textdlgg.h
index 88a65fbd9b..f27c49d5c5 100644
--- a/include/wx/generic/textdlgg.h
+++ b/include/wx/generic/textdlgg.h
@@ -22,7 +22,7 @@
 #include "wx/valtext.h"
 #endif
 
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxGetTextFromUserPromptStr[];
 extern WXDLLEXPORT_DATA(const wxChar) wxGetPasswordFromUserPromptStr[];
diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h
index 8af90003f4..67d13c69db 100644
--- a/include/wx/generic/treectlg.h
+++ b/include/wx/generic/treectlg.h
@@ -21,14 +21,14 @@
 // forward declaration
 // -----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxGenericTreeItem;
+class WXDLLIMPEXP_FWD_CORE wxGenericTreeItem;
 
-class WXDLLEXPORT wxTreeItemData;
+class WXDLLIMPEXP_FWD_CORE wxTreeItemData;
 
-class WXDLLEXPORT wxTreeRenameTimer;
-class WXDLLEXPORT wxTreeFindTimer;
-class WXDLLEXPORT wxTreeTextCtrl;
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTreeRenameTimer;
+class WXDLLIMPEXP_FWD_CORE wxTreeFindTimer;
+class WXDLLIMPEXP_FWD_CORE wxTreeTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 // -----------------------------------------------------------------------------
 // wxGenericTreeCtrl - the tree control
diff --git a/include/wx/generic/wizard.h b/include/wx/generic/wizard.h
index 798d7f91b3..4a738c69f1 100644
--- a/include/wx/generic/wizard.h
+++ b/include/wx/generic/wizard.h
@@ -16,11 +16,11 @@
 // wxWizard
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxStaticBitmap;
-class WXDLLIMPEXP_ADV wxWizardEvent;
-class WXDLLEXPORT wxBoxSizer;
-class WXDLLIMPEXP_ADV wxWizardSizer;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxStaticBitmap;
+class WXDLLIMPEXP_FWD_ADV wxWizardEvent;
+class WXDLLIMPEXP_FWD_CORE wxBoxSizer;
+class WXDLLIMPEXP_FWD_ADV wxWizardSizer;
 
 class WXDLLIMPEXP_ADV wxWizard : public wxWizardBase
 {
diff --git a/include/wx/geometry.h b/include/wx/geometry.h
index 10c60516d3..237f84dca5 100644
--- a/include/wx/geometry.h
+++ b/include/wx/geometry.h
@@ -20,8 +20,8 @@
 #include "wx/gdicmn.h"
 #include "wx/math.h"
 
-class WXDLLIMPEXP_BASE wxDataInputStream;
-class WXDLLIMPEXP_BASE wxDataOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxDataInputStream;
+class WXDLLIMPEXP_FWD_BASE wxDataOutputStream;
 
 // clipping from Cohen-Sutherland
 
diff --git a/include/wx/glcanvas.h b/include/wx/glcanvas.h
index 7257bbf35a..bb4ffa498a 100644
--- a/include/wx/glcanvas.h
+++ b/include/wx/glcanvas.h
@@ -20,8 +20,8 @@
 #include "wx/palette.h"
 #include "wx/window.h"
 
-class WXDLLIMPEXP_GL wxGLCanvas;
-class WXDLLIMPEXP_GL wxGLContext;
+class WXDLLIMPEXP_FWD_GL wxGLCanvas;
+class WXDLLIMPEXP_FWD_GL wxGLContext;
 
 // ----------------------------------------------------------------------------
 // Constants for attributes list
diff --git a/include/wx/graphics.h b/include/wx/graphics.h
index 5ac221018b..e710213c94 100644
--- a/include/wx/graphics.h
+++ b/include/wx/graphics.h
@@ -17,16 +17,16 @@
 #include "wx/geometry.h"
 #include "wx/dynarray.h"
 
-class WXDLLIMPEXP_CORE wxWindowDC;
-class WXDLLIMPEXP_CORE wxMemoryDC;
-class WXDLLIMPEXP_CORE wxGraphicsContext;
-class WXDLLIMPEXP_CORE wxGraphicsPath;
-class WXDLLIMPEXP_CORE wxGraphicsMatrix;
-class WXDLLIMPEXP_CORE wxGraphicsFigure;
-class WXDLLIMPEXP_CORE wxGraphicsRenderer;
-class WXDLLIMPEXP_CORE wxGraphicsPen;
-class WXDLLIMPEXP_CORE wxGraphicsBrush;
-class WXDLLIMPEXP_CORE wxGraphicsFont;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsContext;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsPath;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsMatrix;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsFigure;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsRenderer;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsPen;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsBrush;
+class WXDLLIMPEXP_FWD_CORE wxGraphicsFont;
 
 /*
  * notes about the graphics context apis
diff --git a/include/wx/gtk/app.h b/include/wx/gtk/app.h
index 84580a1422..d9a34eee80 100644
--- a/include/wx/gtk/app.h
+++ b/include/wx/gtk/app.h
@@ -15,7 +15,7 @@
 //-----------------------------------------------------------------------------
 
 #if wxUSE_THREADS
-class WXDLLIMPEXP_BASE wxMutex;
+class WXDLLIMPEXP_FWD_BASE wxMutex;
 #endif
 
 //-----------------------------------------------------------------------------
diff --git a/include/wx/gtk/bitmap.h b/include/wx/gtk/bitmap.h
index e2dc786c5b..9353049eb3 100644
--- a/include/wx/gtk/bitmap.h
+++ b/include/wx/gtk/bitmap.h
@@ -11,7 +11,7 @@
 #define _WX_GTK_BITMAP_H_
 
 typedef struct _GdkPixbuf GdkPixbuf;
-class WXDLLEXPORT wxPixelDataBase;
+class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
 
 //-----------------------------------------------------------------------------
 // wxMask
diff --git a/include/wx/gtk/brush.h b/include/wx/gtk/brush.h
index 6d9a410429..e0bfc9ff5d 100644
--- a/include/wx/gtk/brush.h
+++ b/include/wx/gtk/brush.h
@@ -10,8 +10,8 @@
 #ifndef _WX_GTK_BRUSH_H_
 #define _WX_GTK_BRUSH_H_
 
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 //-----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/gtk/choice.h b/include/wx/gtk/choice.h
index a61d876403..96830c5847 100644
--- a/include/wx/gtk/choice.h
+++ b/include/wx/gtk/choice.h
@@ -10,8 +10,8 @@
 #ifndef __GTKCHOICEH__
 #define __GTKCHOICEH__
 
-class WXDLLIMPEXP_BASE wxSortedArrayString;
-class WXDLLIMPEXP_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxSortedArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
 //-----------------------------------------------------------------------------
 // wxChoice
diff --git a/include/wx/gtk/cursor.h b/include/wx/gtk/cursor.h
index 44d03dd747..d940c1f204 100644
--- a/include/wx/gtk/cursor.h
+++ b/include/wx/gtk/cursor.h
@@ -12,8 +12,8 @@
 
 #include "wx/object.h"
 
-class WXDLLIMPEXP_CORE wxColour;
-class WXDLLIMPEXP_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 //-----------------------------------------------------------------------------
 // wxCursor
diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h
index 70dd914559..c9e544bb91 100644
--- a/include/wx/gtk/dataview.h
+++ b/include/wx/gtk/dataview.h
@@ -19,7 +19,7 @@
 // classes
 // --------------------------------------------------------- 
 
-class WXDLLIMPEXP_CORE wxDataViewCtrl;
+class WXDLLIMPEXP_FWD_CORE wxDataViewCtrl;
 
 
 // --------------------------------------------------------- 
diff --git a/include/wx/gtk/dcclient.h b/include/wx/gtk/dcclient.h
index 1e1b37b956..369deee2fd 100644
--- a/include/wx/gtk/dcclient.h
+++ b/include/wx/gtk/dcclient.h
@@ -13,7 +13,7 @@
 #include "wx/dc.h"
 #include "wx/region.h"
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 //-----------------------------------------------------------------------------
 // wxWindowDC
diff --git a/include/wx/gtk/dcscreen.h b/include/wx/gtk/dcscreen.h
index 3b23ae3204..0f8259717f 100644
--- a/include/wx/gtk/dcscreen.h
+++ b/include/wx/gtk/dcscreen.h
@@ -16,7 +16,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxScreenDC;
+class WXDLLIMPEXP_FWD_CORE wxScreenDC;
 
 //-----------------------------------------------------------------------------
 // wxScreenDC
diff --git a/include/wx/gtk/dialog.h b/include/wx/gtk/dialog.h
index 0269e17a23..8d7e7a33fc 100644
--- a/include/wx/gtk/dialog.h
+++ b/include/wx/gtk/dialog.h
@@ -17,7 +17,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxDialog;
+class WXDLLIMPEXP_FWD_CORE wxDialog;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk/frame.h b/include/wx/gtk/frame.h
index f65413146c..70d53296cd 100644
--- a/include/wx/gtk/frame.h
+++ b/include/wx/gtk/frame.h
@@ -14,12 +14,12 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMDIChildFrame;
-class WXDLLIMPEXP_CORE wxMDIClientWindow;
-class WXDLLIMPEXP_CORE wxMenu;
-class WXDLLIMPEXP_CORE wxMenuBar;
-class WXDLLIMPEXP_CORE wxToolBar;
-class WXDLLIMPEXP_CORE wxStatusBar;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxStatusBar;
 
 //-----------------------------------------------------------------------------
 // wxFrame
diff --git a/include/wx/gtk/minifram.h b/include/wx/gtk/minifram.h
index a8ae584b23..7d925b40a3 100644
--- a/include/wx/gtk/minifram.h
+++ b/include/wx/gtk/minifram.h
@@ -22,7 +22,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMiniFrame;
+class WXDLLIMPEXP_FWD_CORE wxMiniFrame;
 
 //-----------------------------------------------------------------------------
 // wxMiniFrame
diff --git a/include/wx/gtk/notebook.h b/include/wx/gtk/notebook.h
index 402029af71..befac801d8 100644
--- a/include/wx/gtk/notebook.h
+++ b/include/wx/gtk/notebook.h
@@ -15,7 +15,7 @@
 // internal class
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxGtkNotebookPage;
+class WXDLLIMPEXP_FWD_CORE wxGtkNotebookPage;
 
 #include "wx/list.h"
 WX_DECLARE_LIST(wxGtkNotebookPage, wxGtkNotebookPagesList);
diff --git a/include/wx/gtk/radiobox.h b/include/wx/gtk/radiobox.h
index 563ebb5612..1cfd176240 100644
--- a/include/wx/gtk/radiobox.h
+++ b/include/wx/gtk/radiobox.h
@@ -12,7 +12,7 @@
 
 #include "wx/bitmap.h"
 
-class WXDLLIMPEXP_CORE wxGTKRadioButtonInfo;
+class WXDLLIMPEXP_FWD_CORE wxGTKRadioButtonInfo;
 
 #include "wx/list.h"
 
diff --git a/include/wx/gtk/scrolbar.h b/include/wx/gtk/scrolbar.h
index 81cf28aad1..d66010cb08 100644
--- a/include/wx/gtk/scrolbar.h
+++ b/include/wx/gtk/scrolbar.h
@@ -16,7 +16,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxScrollBar;
 
 //-----------------------------------------------------------------------------
 // wxScrollBar
diff --git a/include/wx/gtk/tglbtn.h b/include/wx/gtk/tglbtn.h
index 4964591aa1..3b205fde28 100644
--- a/include/wx/gtk/tglbtn.h
+++ b/include/wx/gtk/tglbtn.h
@@ -19,8 +19,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxToggleButton;
-class WXDLLIMPEXP_CORE wxToggleBitmapButton;
+class WXDLLIMPEXP_FWD_CORE wxToggleButton;
+class WXDLLIMPEXP_FWD_CORE wxToggleBitmapButton;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk/tooltip.h b/include/wx/gtk/tooltip.h
index c2ed58bfe4..add64f06bc 100644
--- a/include/wx/gtk/tooltip.h
+++ b/include/wx/gtk/tooltip.h
@@ -18,8 +18,8 @@
 // forward declarations
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxToolTip;
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxToolTip;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 //-----------------------------------------------------------------------------
 // wxToolTip
diff --git a/include/wx/gtk/treectrl.h b/include/wx/gtk/treectrl.h
index 0d954d8dd1..c45ecf4eed 100644
--- a/include/wx/gtk/treectrl.h
+++ b/include/wx/gtk/treectrl.h
@@ -27,7 +27,7 @@ struct wxTreeViewItem;
 // a callback function used for sorting tree items, it should return -1 if the
 // first item precedes the second, +1 if the second precedes the first or 0 if
 // they're equivalent
-class WXDLLIMPEXP_CORE wxTreeItemData;
+class WXDLLIMPEXP_FWD_CORE wxTreeItemData;
 typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2);
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/gtk1/app.h b/include/wx/gtk1/app.h
index b990781116..db2d753e3d 100644
--- a/include/wx/gtk1/app.h
+++ b/include/wx/gtk1/app.h
@@ -18,8 +18,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxApp;
-class WXDLLIMPEXP_BASE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_BASE wxLog;
 
 //-----------------------------------------------------------------------------
 // wxApp
diff --git a/include/wx/gtk1/bitmap.h b/include/wx/gtk1/bitmap.h
index 02d8eeda6b..5ecc5920ee 100644
--- a/include/wx/gtk1/bitmap.h
+++ b/include/wx/gtk1/bitmap.h
@@ -17,15 +17,15 @@
 #include "wx/palette.h"
 #include "wx/gdiobj.h"
 
-class WXDLLEXPORT wxPixelDataBase;
+class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
 
 //-----------------------------------------------------------------------------
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMask;
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxMask;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 //-----------------------------------------------------------------------------
 // wxMask
diff --git a/include/wx/gtk1/brush.h b/include/wx/gtk1/brush.h
index 51e1c78548..64bf2802f3 100644
--- a/include/wx/gtk1/brush.h
+++ b/include/wx/gtk1/brush.h
@@ -21,7 +21,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 //-----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/gtk1/button.h b/include/wx/gtk1/button.h
index 380e669a8f..f3d0169639 100644
--- a/include/wx/gtk1/button.h
+++ b/include/wx/gtk1/button.h
@@ -19,7 +19,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxButton;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk1/choice.h b/include/wx/gtk1/choice.h
index 9d80932e74..5d8579b731 100644
--- a/include/wx/gtk1/choice.h
+++ b/include/wx/gtk1/choice.h
@@ -10,8 +10,8 @@
 #ifndef __GTKCHOICEH__
 #define __GTKCHOICEH__
 
-class WXDLLIMPEXP_BASE wxSortedArrayString;
-class WXDLLIMPEXP_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxSortedArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
 //-----------------------------------------------------------------------------
 // wxChoice
diff --git a/include/wx/gtk1/colour.h b/include/wx/gtk1/colour.h
index 5912a753b3..8eb61124f3 100644
--- a/include/wx/gtk1/colour.h
+++ b/include/wx/gtk1/colour.h
@@ -20,12 +20,12 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxDC;
-class WXDLLIMPEXP_CORE wxPaintDC;
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLIMPEXP_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 //-----------------------------------------------------------------------------
 // wxColour
diff --git a/include/wx/gtk1/combobox.h b/include/wx/gtk1/combobox.h
index 73d7eb06d6..fd046fc073 100644
--- a/include/wx/gtk1/combobox.h
+++ b/include/wx/gtk1/combobox.h
@@ -21,7 +21,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk1/control.h b/include/wx/gtk1/control.h
index 3fdfa9b8db..79ec3f47af 100644
--- a/include/wx/gtk1/control.h
+++ b/include/wx/gtk1/control.h
@@ -19,7 +19,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxControl;
 
 typedef struct _GtkLabel GtkLabel;
 typedef struct _GtkFrame GtkFrame;
diff --git a/include/wx/gtk1/dc.h b/include/wx/gtk1/dc.h
index fa3aa64652..5d59f7e374 100644
--- a/include/wx/gtk1/dc.h
+++ b/include/wx/gtk1/dc.h
@@ -14,7 +14,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 
 //-----------------------------------------------------------------------------
 // wxDC
diff --git a/include/wx/gtk1/dcclient.h b/include/wx/gtk1/dcclient.h
index 6e001e5c78..bd31d9b113 100644
--- a/include/wx/gtk1/dcclient.h
+++ b/include/wx/gtk1/dcclient.h
@@ -17,9 +17,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxWindowDC;
-class WXDLLIMPEXP_CORE wxPaintDC;
-class WXDLLIMPEXP_CORE wxClientDC;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxClientDC;
 
 //-----------------------------------------------------------------------------
 // wxWindowDC
diff --git a/include/wx/gtk1/dcmemory.h b/include/wx/gtk1/dcmemory.h
index 691d757776..8ea483e3ba 100644
--- a/include/wx/gtk1/dcmemory.h
+++ b/include/wx/gtk1/dcmemory.h
@@ -17,7 +17,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMemoryDC;
+class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
 
 //-----------------------------------------------------------------------------
 // wxMemoryDC
diff --git a/include/wx/gtk1/dcscreen.h b/include/wx/gtk1/dcscreen.h
index 07a976c721..932b26a22a 100644
--- a/include/wx/gtk1/dcscreen.h
+++ b/include/wx/gtk1/dcscreen.h
@@ -16,7 +16,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxScreenDC;
+class WXDLLIMPEXP_FWD_CORE wxScreenDC;
 
 //-----------------------------------------------------------------------------
 // wxScreenDC
diff --git a/include/wx/gtk1/dialog.h b/include/wx/gtk1/dialog.h
index da34a90902..7a1cff23d1 100644
--- a/include/wx/gtk1/dialog.h
+++ b/include/wx/gtk1/dialog.h
@@ -17,7 +17,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxDialog;
+class WXDLLIMPEXP_FWD_CORE wxDialog;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk1/dnd.h b/include/wx/gtk1/dnd.h
index 988ef117f1..9330bdde9a 100644
--- a/include/wx/gtk1/dnd.h
+++ b/include/wx/gtk1/dnd.h
@@ -23,13 +23,13 @@
 // classes
 //-------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLIMPEXP_CORE wxDropTarget;
-class WXDLLIMPEXP_CORE wxTextDropTarget;
-class WXDLLIMPEXP_CORE wxFileDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxTextDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxFileDropTarget;
 
-class WXDLLIMPEXP_CORE wxDropSource;
+class WXDLLIMPEXP_FWD_CORE wxDropSource;
 
 // ----------------------------------------------------------------------------
 // macros
diff --git a/include/wx/gtk1/font.h b/include/wx/gtk1/font.h
index 8f17e61493..6936e530f3 100644
--- a/include/wx/gtk1/font.h
+++ b/include/wx/gtk1/font.h
@@ -16,11 +16,11 @@
 // classes
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxDC;
-class WXDLLIMPEXP_CORE wxPaintDC;
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLIMPEXP_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxFont;
 
 // ----------------------------------------------------------------------------
 // wxFont
diff --git a/include/wx/gtk1/frame.h b/include/wx/gtk1/frame.h
index 49d68c8805..c7e14925f3 100644
--- a/include/wx/gtk1/frame.h
+++ b/include/wx/gtk1/frame.h
@@ -14,12 +14,12 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMDIChildFrame;
-class WXDLLIMPEXP_CORE wxMDIClientWindow;
-class WXDLLIMPEXP_CORE wxMenu;
-class WXDLLIMPEXP_CORE wxMenuBar;
-class WXDLLIMPEXP_CORE wxToolBar;
-class WXDLLIMPEXP_CORE wxStatusBar;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxStatusBar;
 
 //-----------------------------------------------------------------------------
 // wxFrame
diff --git a/include/wx/gtk1/gauge.h b/include/wx/gtk1/gauge.h
index 3e8f8255ab..42b516e2bf 100644
--- a/include/wx/gtk1/gauge.h
+++ b/include/wx/gtk1/gauge.h
@@ -22,7 +22,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxGauge;
+class WXDLLIMPEXP_FWD_CORE wxGauge;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk1/listbox.h b/include/wx/gtk1/listbox.h
index 7f9768d4a8..42cd90f1e9 100644
--- a/include/wx/gtk1/listbox.h
+++ b/include/wx/gtk1/listbox.h
@@ -12,7 +12,7 @@
 
 #include "wx/list.h"
 
-class WXDLLIMPEXP_BASE wxSortedArrayString;
+class WXDLLIMPEXP_FWD_BASE wxSortedArrayString;
 
 //-----------------------------------------------------------------------------
 // wxListBox
diff --git a/include/wx/gtk1/mdi.h b/include/wx/gtk1/mdi.h
index cec5798bab..abcf72f1cd 100644
--- a/include/wx/gtk1/mdi.h
+++ b/include/wx/gtk1/mdi.h
@@ -22,9 +22,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMDIParentFrame;
-class WXDLLIMPEXP_CORE wxMDIClientWindow;
-class WXDLLIMPEXP_CORE wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIParentFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk1/minifram.h b/include/wx/gtk1/minifram.h
index 3d1bcee396..122d4f74c2 100644
--- a/include/wx/gtk1/minifram.h
+++ b/include/wx/gtk1/minifram.h
@@ -21,7 +21,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMiniFrame;
+class WXDLLIMPEXP_FWD_CORE wxMiniFrame;
 
 //-----------------------------------------------------------------------------
 // wxMiniFrame
diff --git a/include/wx/gtk1/notebook.h b/include/wx/gtk1/notebook.h
index 9acd18e460..112171e148 100644
--- a/include/wx/gtk1/notebook.h
+++ b/include/wx/gtk1/notebook.h
@@ -15,7 +15,7 @@
 // internal class
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxGtkNotebookPage;
+class WXDLLIMPEXP_FWD_CORE wxGtkNotebookPage;
 
 #include "wx/list.h"
 WX_DECLARE_LIST(wxGtkNotebookPage, wxGtkNotebookPagesList);
diff --git a/include/wx/gtk1/pen.h b/include/wx/gtk1/pen.h
index 91388c05a2..f196a8165d 100644
--- a/include/wx/gtk1/pen.h
+++ b/include/wx/gtk1/pen.h
@@ -20,7 +20,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxPen;
+class WXDLLIMPEXP_FWD_CORE wxPen;
 
 #if defined(__WXGTK127__)
 typedef    gint8 wxGTKDash;
diff --git a/include/wx/gtk1/scrolbar.h b/include/wx/gtk1/scrolbar.h
index 2950e85ce5..a9af5a7c62 100644
--- a/include/wx/gtk1/scrolbar.h
+++ b/include/wx/gtk1/scrolbar.h
@@ -16,7 +16,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxScrollBar;
 
 //-----------------------------------------------------------------------------
 // wxScrollBar
diff --git a/include/wx/gtk1/tglbtn.h b/include/wx/gtk1/tglbtn.h
index b4c143d457..9e77ce425b 100644
--- a/include/wx/gtk1/tglbtn.h
+++ b/include/wx/gtk1/tglbtn.h
@@ -19,8 +19,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxToggleButton;
-class WXDLLIMPEXP_CORE wxToggleBitmapButton;
+class WXDLLIMPEXP_FWD_CORE wxToggleButton;
+class WXDLLIMPEXP_FWD_CORE wxToggleBitmapButton;
 
 //-----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/gtk1/tooltip.h b/include/wx/gtk1/tooltip.h
index d5666edefb..8d03757923 100644
--- a/include/wx/gtk1/tooltip.h
+++ b/include/wx/gtk1/tooltip.h
@@ -18,8 +18,8 @@
 // forward declarations
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxToolTip;
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxToolTip;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 //-----------------------------------------------------------------------------
 // wxToolTip
diff --git a/include/wx/gtk1/treectrl.h b/include/wx/gtk1/treectrl.h
index 5f648d6c54..09ee499296 100644
--- a/include/wx/gtk1/treectrl.h
+++ b/include/wx/gtk1/treectrl.h
@@ -27,7 +27,7 @@ struct wxTreeViewItem;
 // a callback function used for sorting tree items, it should return -1 if the
 // first item precedes the second, +1 if the second precedes the first or 0 if
 // they're equivalent
-class WXDLLIMPEXP_CORE wxTreeItemData;
+class WXDLLIMPEXP_FWD_CORE wxTreeItemData;
 typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2);
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/gtk1/window.h b/include/wx/gtk1/window.h
index c1f6a490cc..f80dd7b645 100644
--- a/include/wx/gtk1/window.h
+++ b/include/wx/gtk1/window.h
@@ -18,7 +18,7 @@ struct wxGtkIMData;
 // callback definition for inserting a window (internal)
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxWindowGTK;
+class WXDLLIMPEXP_FWD_CORE wxWindowGTK;
 typedef void (*wxInsertChildFunction)( wxWindowGTK*, wxWindowGTK* );
 
 //-----------------------------------------------------------------------------
diff --git a/include/wx/hash.h b/include/wx/hash.h
index 32789cdd78..e825e0c2d1 100644
--- a/include/wx/hash.h
+++ b/include/wx/hash.h
@@ -18,7 +18,7 @@
 #if !wxUSE_STL
     #include "wx/object.h"
 #else
-    class WXDLLIMPEXP_BASE wxObject;
+    class WXDLLIMPEXP_FWD_BASE wxObject;
 #endif
 
 // the default size of the hash
@@ -39,12 +39,12 @@ union wxHashKeyValue
 
 // for some compilers (AIX xlC), defining it as friend inside the class is not
 // enough, so provide a real forward declaration
-class WXDLLIMPEXP_BASE wxHashTableBase;
+class WXDLLIMPEXP_FWD_BASE wxHashTableBase;
 
 class WXDLLIMPEXP_BASE wxHashTableBase_Node
 {
-    friend class WXDLLIMPEXP_BASE wxHashTableBase;
-    typedef class WXDLLIMPEXP_BASE wxHashTableBase_Node _Node;
+    friend class WXDLLIMPEXP_FWD_BASE wxHashTableBase;
+    typedef class WXDLLIMPEXP_FWD_BASE wxHashTableBase_Node _Node;
 public:
     wxHashTableBase_Node( long key, void* value,
                           wxHashTableBase* table );
@@ -84,7 +84,7 @@ class WXDLLIMPEXP_BASE wxHashTableBase
     : public wxObject
 #endif
 {
-    friend class WXDLLIMPEXP_BASE wxHashTableBase_Node;
+    friend class WXDLLIMPEXP_FWD_BASE wxHashTableBase_Node;
 public:
     typedef wxHashTableBase_Node Node;
 
@@ -159,7 +159,7 @@ private:
 
 class WXDLLIMPEXP_BASE wxHashTable_Node : public wxHashTableBase_Node
 {
-    friend class WXDLLIMPEXP_BASE wxHashTable;
+    friend class WXDLLIMPEXP_FWD_BASE wxHashTable;
 public:
     wxHashTable_Node( long key, void* value,
                       wxHashTableBase* table )
diff --git a/include/wx/hashmap.h b/include/wx/hashmap.h
index 1cff98219b..47d583b840 100644
--- a/include/wx/hashmap.h
+++ b/include/wx/hashmap.h
@@ -144,8 +144,6 @@ public: \
         value_type m_value; \
     }; \
  \
-    CLASSEXP Iterator; \
-    friend CLASSEXP Iterator; \
 protected: \
     static void DeleteNode( _wxHashTable_NodeBase* node ) \
     { \
@@ -186,6 +184,7 @@ public: \
             m_node = next ? next : GetNextNode(); \
         } \
     }; \
+    friend class Iterator; \
  \
 public: \
     CLASSEXP iterator : public Iterator \
diff --git a/include/wx/html/helpctrl.h b/include/wx/html/helpctrl.h
index 826fd20cf4..15328a0ad1 100644
--- a/include/wx/html/helpctrl.h
+++ b/include/wx/html/helpctrl.h
@@ -35,10 +35,10 @@
 // Make the dialog modal when displaying help.
 #define wxHF_MODAL                   0x00040000
 
-class WXDLLIMPEXP_HTML wxHtmlHelpDialog;
-class WXDLLIMPEXP_HTML wxHtmlHelpWindow;
-class WXDLLIMPEXP_HTML wxHtmlHelpFrame;
-class WXDLLIMPEXP_HTML wxHtmlHelpDialog;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpWindow;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpFrame;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpDialog;
 
 class WXDLLIMPEXP_HTML wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler
 {
diff --git a/include/wx/html/helpdata.h b/include/wx/html/helpdata.h
index 7889d01b34..2ee6fa33b8 100644
--- a/include/wx/html/helpdata.h
+++ b/include/wx/html/helpdata.h
@@ -22,7 +22,7 @@
 #include "wx/dynarray.h"
 #include "wx/font.h"
 
-class WXDLLIMPEXP_HTML wxHtmlHelpData;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpData;
 
 //--------------------------------------------------------------------------------
 // helper classes & structs
diff --git a/include/wx/html/helpdlg.h b/include/wx/html/helpdlg.h
index b696182d30..bca72de3ce 100644
--- a/include/wx/html/helpdlg.h
+++ b/include/wx/html/helpdlg.h
@@ -32,8 +32,8 @@
 #include "wx/html/helpwnd.h"
 #include "wx/html/htmprint.h"
 
-class WXDLLIMPEXP_HTML wxHtmlHelpController;
-class WXDLLIMPEXP_HTML wxHtmlHelpWindow;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpController;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpWindow;
 
 class WXDLLIMPEXP_HTML wxHtmlHelpDialog : public wxDialog
 {
diff --git a/include/wx/html/helpfrm.h b/include/wx/html/helpfrm.h
index 71735a83ac..886d7b26a2 100644
--- a/include/wx/html/helpfrm.h
+++ b/include/wx/html/helpfrm.h
@@ -32,10 +32,10 @@
 #include "wx/html/helpwnd.h"
 #include "wx/html/htmprint.h"
 
-class WXDLLIMPEXP_CORE wxButton;
-class WXDLLIMPEXP_CORE wxTextCtrl;
-class WXDLLIMPEXP_CORE wxTreeEvent;
-class WXDLLIMPEXP_CORE wxTreeCtrl;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
+class WXDLLIMPEXP_FWD_CORE wxTreeCtrl;
 
 
 // style flags for the Help Frame
@@ -62,9 +62,9 @@ class WXDLLIMPEXP_CORE wxTreeCtrl;
 struct wxHtmlHelpMergedIndexItem;
 class wxHtmlHelpMergedIndex;
 
-class WXDLLIMPEXP_CORE wxHelpControllerBase;
-class WXDLLIMPEXP_HTML wxHtmlHelpController;
-class WXDLLIMPEXP_CORE wxHtmlHelpWindow;
+class WXDLLIMPEXP_FWD_CORE wxHelpControllerBase;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpController;
+class WXDLLIMPEXP_FWD_CORE wxHtmlHelpWindow;
 
 class WXDLLIMPEXP_HTML wxHtmlHelpFrame : public wxFrame
 {
diff --git a/include/wx/html/helpwnd.h b/include/wx/html/helpwnd.h
index 5e31933df5..cfe0bad1a6 100644
--- a/include/wx/html/helpwnd.h
+++ b/include/wx/html/helpwnd.h
@@ -31,10 +31,10 @@
 #include "wx/html/htmlwin.h"
 #include "wx/html/htmprint.h"
 
-class WXDLLIMPEXP_CORE wxButton;
-class WXDLLIMPEXP_CORE wxTextCtrl;
-class WXDLLIMPEXP_CORE wxTreeEvent;
-class WXDLLIMPEXP_CORE wxTreeCtrl;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
+class WXDLLIMPEXP_FWD_CORE wxTreeCtrl;
 
 // style flags for the Help Frame
 #define wxHF_TOOLBAR                0x0001
@@ -67,8 +67,8 @@ struct wxHtmlHelpFrameCfg
 struct wxHtmlHelpMergedIndexItem;
 class wxHtmlHelpMergedIndex;
 
-class WXDLLIMPEXP_CORE wxHelpControllerBase;
-class WXDLLIMPEXP_HTML wxHtmlHelpController;
+class WXDLLIMPEXP_FWD_CORE wxHelpControllerBase;
+class WXDLLIMPEXP_FWD_HTML wxHtmlHelpController;
 
 /*!
  * Help window
diff --git a/include/wx/html/htmlcell.h b/include/wx/html/htmlcell.h
index 6e50289cc9..4ec02db0b0 100644
--- a/include/wx/html/htmlcell.h
+++ b/include/wx/html/htmlcell.h
@@ -20,10 +20,10 @@
 #include "wx/window.h"
 
 
-class WXDLLIMPEXP_HTML wxHtmlWindowInterface;
-class WXDLLIMPEXP_HTML wxHtmlLinkInfo;
-class WXDLLIMPEXP_HTML wxHtmlCell;
-class WXDLLIMPEXP_HTML wxHtmlContainerCell;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWindowInterface;
+class WXDLLIMPEXP_FWD_HTML wxHtmlLinkInfo;
+class WXDLLIMPEXP_FWD_HTML wxHtmlCell;
+class WXDLLIMPEXP_FWD_HTML wxHtmlContainerCell;
 
 
 // wxHtmlSelection is data holder with information about text selection.
diff --git a/include/wx/html/htmlpars.h b/include/wx/html/htmlpars.h
index c71c3958eb..2f769eadab 100644
--- a/include/wx/html/htmlpars.h
+++ b/include/wx/html/htmlpars.h
@@ -18,10 +18,10 @@
 #include "wx/hash.h"
 #include "wx/fontenc.h"
 
-class WXDLLIMPEXP_BASE wxMBConv;
-class WXDLLIMPEXP_HTML wxHtmlParser;
-class WXDLLIMPEXP_HTML wxHtmlTagHandler;
-class WXDLLIMPEXP_HTML wxHtmlEntitiesParser;
+class WXDLLIMPEXP_FWD_BASE wxMBConv;
+class WXDLLIMPEXP_FWD_HTML wxHtmlParser;
+class WXDLLIMPEXP_FWD_HTML wxHtmlTagHandler;
+class WXDLLIMPEXP_FWD_HTML wxHtmlEntitiesParser;
 
 class wxHtmlTextPieces;
 class wxHtmlParserState;
diff --git a/include/wx/html/htmltag.h b/include/wx/html/htmltag.h
index 92a93438a3..d429d74f70 100644
--- a/include/wx/html/htmltag.h
+++ b/include/wx/html/htmltag.h
@@ -17,8 +17,8 @@
 #include "wx/object.h"
 #include "wx/arrstr.h"
 
-class WXDLLIMPEXP_CORE wxColour;
-class WXDLLIMPEXP_HTML wxHtmlEntitiesParser;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_HTML wxHtmlEntitiesParser;
 
 //-----------------------------------------------------------------------------
 // wxHtmlTagsCache
diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h
index e32f005df5..a09c80c2fe 100644
--- a/include/wx/html/htmlwin.h
+++ b/include/wx/html/htmlwin.h
@@ -28,9 +28,9 @@ class wxHtmlProcessor;
 class wxHtmlWinModule;
 class wxHtmlHistoryArray;
 class wxHtmlProcessorList;
-class WXDLLIMPEXP_HTML wxHtmlWinAutoScrollTimer;
-class WXDLLIMPEXP_HTML wxHtmlCellEvent;
-class WXDLLIMPEXP_HTML wxHtmlLinkEvent;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWinAutoScrollTimer;
+class WXDLLIMPEXP_FWD_HTML wxHtmlCellEvent;
+class WXDLLIMPEXP_FWD_HTML wxHtmlLinkEvent;
 
 
 // wxHtmlWindow flags:
diff --git a/include/wx/html/winpars.h b/include/wx/html/winpars.h
index 26780b540e..08638dee80 100644
--- a/include/wx/html/winpars.h
+++ b/include/wx/html/winpars.h
@@ -19,11 +19,11 @@
 #include "wx/html/htmlcell.h"
 #include "wx/encconv.h"
 
-class WXDLLIMPEXP_HTML wxHtmlWindow;
-class WXDLLIMPEXP_HTML wxHtmlWindowInterface;
-class WXDLLIMPEXP_HTML wxHtmlWinParser;
-class WXDLLIMPEXP_HTML wxHtmlWinTagHandler;
-class WXDLLIMPEXP_HTML wxHtmlTagsModule;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWindow;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWindowInterface;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWinParser;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWinTagHandler;
+class WXDLLIMPEXP_FWD_HTML wxHtmlTagsModule;
 
 
 //--------------------------------------------------------------------------------
diff --git a/include/wx/htmllbox.h b/include/wx/htmllbox.h
index 3c1bb035dc..0cc43ef289 100644
--- a/include/wx/htmllbox.h
+++ b/include/wx/htmllbox.h
@@ -20,10 +20,10 @@
     #include "wx/filesys.h"
 #endif // wxUSE_FILESYSTEM
 
-class WXDLLIMPEXP_HTML wxHtmlCell;
-class WXDLLIMPEXP_HTML wxHtmlWinParser;
-class WXDLLIMPEXP_HTML wxHtmlListBoxCache;
-class WXDLLIMPEXP_HTML wxHtmlListBoxStyle;
+class WXDLLIMPEXP_FWD_HTML wxHtmlCell;
+class WXDLLIMPEXP_FWD_HTML wxHtmlWinParser;
+class WXDLLIMPEXP_FWD_HTML wxHtmlListBoxCache;
+class WXDLLIMPEXP_FWD_HTML wxHtmlListBoxStyle;
 
 extern WXDLLIMPEXP_DATA_HTML(const wxChar) wxHtmlListBoxNameStr[];
 extern WXDLLIMPEXP_DATA_HTML(const wxChar) wxSimpleHtmlListBoxNameStr[];
diff --git a/include/wx/iconbndl.h b/include/wx/iconbndl.h
index e96b199547..d7e037b23b 100644
--- a/include/wx/iconbndl.h
+++ b/include/wx/iconbndl.h
@@ -18,10 +18,10 @@
 #include "wx/gdicmn.h"
 #include "wx/icon.h"
 
-class WXDLLIMPEXP_CORE wxIcon;
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
-class WXDLLEXPORT wxIconBundle;
+class WXDLLIMPEXP_FWD_CORE wxIconBundle;
 
 WX_DECLARE_EXPORTED_OBJARRAY(wxIcon, wxIconArray);
 
diff --git a/include/wx/image.h b/include/wx/image.h
index afcbaf95c2..95fe4dfd3e 100644
--- a/include/wx/image.h
+++ b/include/wx/image.h
@@ -69,9 +69,9 @@ const unsigned char wxIMAGE_ALPHA_OPAQUE = 0xff;
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxImageHandler;
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxImageHandler;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 //-----------------------------------------------------------------------------
 // wxVariant support
@@ -438,7 +438,7 @@ protected:
     virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const;
 
 private:
-    friend class WXDLLEXPORT wxImageHandler;
+    friend class WXDLLIMPEXP_FWD_CORE wxImageHandler;
 
     DECLARE_DYNAMIC_CLASS(wxImage)
 };
diff --git a/include/wx/intl.h b/include/wx/intl.h
index 5c1fa40d42..127c2c15d5 100644
--- a/include/wx/intl.h
+++ b/include/wx/intl.h
@@ -54,8 +54,8 @@ enum wxLayoutDirection
 // forward decls
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxLocale;
-class WXDLLIMPEXP_BASE wxLanguageInfoArray;
+class WXDLLIMPEXP_FWD_BASE wxLocale;
+class WXDLLIMPEXP_FWD_BASE wxLanguageInfoArray;
 class wxMsgCatalog;
 
 // ============================================================================
diff --git a/include/wx/ipcbase.h b/include/wx/ipcbase.h
index 523f1d8e37..e82287d136 100644
--- a/include/wx/ipcbase.h
+++ b/include/wx/ipcbase.h
@@ -38,8 +38,8 @@ enum wxIPCFormat
   wxIPC_PRIVATE =          20
 };
 
-class WXDLLIMPEXP_BASE wxServerBase;
-class WXDLLIMPEXP_BASE wxClientBase;
+class WXDLLIMPEXP_FWD_BASE wxServerBase;
+class WXDLLIMPEXP_FWD_BASE wxClientBase;
 
 class WXDLLIMPEXP_BASE wxConnectionBase: public wxObject
 {
diff --git a/include/wx/layout.h b/include/wx/layout.h
index 62655782b8..2691f5d0cd 100644
--- a/include/wx/layout.h
+++ b/include/wx/layout.h
@@ -32,8 +32,8 @@
 // forward declrations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindowBase;
-class WXDLLEXPORT wxLayoutConstraints;
+class WXDLLIMPEXP_FWD_CORE wxWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxLayoutConstraints;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/list.h b/include/wx/list.h
index 79f40cd077..0694f7efeb 100644
--- a/include/wx/list.h
+++ b/include/wx/list.h
@@ -54,7 +54,7 @@ extern "C"
 typedef int (* LINKAGEMODE wxSortCompareFunction)(const void *elem1, const void *elem2);
 }
 
-class WXDLLIMPEXP_BASE wxObjectListNode;
+class WXDLLIMPEXP_FWD_BASE wxObjectListNode;
 typedef wxObjectListNode wxNode;
 
 //
@@ -425,7 +425,7 @@ private:
 
 extern WXDLLIMPEXP_DATA_BASE(wxListKey) wxDefaultListKey;
 
-class WXDLLIMPEXP_BASE wxListBase;
+class WXDLLIMPEXP_FWD_BASE wxListBase;
 
 class WXDLLIMPEXP_BASE wxNodeBase
 {
@@ -487,11 +487,11 @@ private:
 // a double-linked list class
 // -----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxList;
+class WXDLLIMPEXP_FWD_BASE wxList;
 
 class WXDLLIMPEXP_BASE wxListBase : public wxObject
 {
-friend class WXDLLIMPEXP_BASE wxNodeBase; // should be able to call DetachNode()
+friend class WXDLLIMPEXP_FWD_BASE wxNodeBase; // should be able to call DetachNode()
 friend class wxHashTableBase;   // should be able to call untyped Find()
 
 public:
diff --git a/include/wx/listbook.h b/include/wx/listbook.h
index d6e110a219..13a2852866 100644
--- a/include/wx/listbook.h
+++ b/include/wx/listbook.h
@@ -18,8 +18,8 @@
 
 #include "wx/bookctrl.h"
 
-class WXDLLEXPORT wxListView;
-class WXDLLEXPORT wxListEvent;
+class WXDLLIMPEXP_FWD_CORE wxListView;
+class WXDLLIMPEXP_FWD_CORE wxListEvent;
 
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED;
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING;
diff --git a/include/wx/listbox.h b/include/wx/listbox.h
index fb219e1ba5..0a73fab06f 100644
--- a/include/wx/listbox.h
+++ b/include/wx/listbox.h
@@ -23,8 +23,8 @@
 #include "wx/ctrlsub.h"         // base class
 
 // forward declarations are enough here
-class WXDLLIMPEXP_BASE wxArrayInt;
-class WXDLLIMPEXP_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayInt;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
 // ----------------------------------------------------------------------------
 // global data
diff --git a/include/wx/log.h b/include/wx/log.h
index 9166b7ee50..41a4b86fae 100644
--- a/include/wx/log.h
+++ b/include/wx/log.h
@@ -70,10 +70,10 @@ typedef unsigned long wxLogLevel;
 // ----------------------------------------------------------------------------
 
 #if wxUSE_GUI
-    class WXDLLIMPEXP_CORE wxTextCtrl;
-    class WXDLLIMPEXP_CORE wxLogFrame;
-    class WXDLLIMPEXP_CORE wxFrame;
-    class WXDLLIMPEXP_CORE wxWindow;
+    class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+    class WXDLLIMPEXP_FWD_CORE wxLogFrame;
+    class WXDLLIMPEXP_FWD_CORE wxFrame;
+    class WXDLLIMPEXP_FWD_CORE wxWindow;
 #endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------
@@ -684,7 +684,7 @@ DECLARE_LOG_FUNCTION(Status);
 
 #if wxUSE_GUI
     // this one is the same as previous except that it allows to explicitly
-    class WXDLLEXPORT wxFrame;
+    class WXDLLIMPEXP_FWD_CORE wxFrame;
     // specify the frame to which the output should go
     DECLARE_LOG_FUNCTION2_EXP(Status, wxFrame *, pFrame, WXDLLIMPEXP_CORE);
 #endif // wxUSE_GUI
diff --git a/include/wx/longlong.h b/include/wx/longlong.h
index 5eff9cd900..e05287c965 100644
--- a/include/wx/longlong.h
+++ b/include/wx/longlong.h
@@ -67,8 +67,8 @@
         #define wxUSE_LONGLONG_NATIVE 0
     #endif
 
-    class WXDLLIMPEXP_BASE wxLongLongWx;
-    class WXDLLIMPEXP_BASE wxULongLongWx;
+    class WXDLLIMPEXP_FWD_BASE wxLongLongWx;
+    class WXDLLIMPEXP_FWD_BASE wxULongLongWx;
 #if defined(__VISUALC__) && !defined(__WIN32__)
     #define wxLongLong wxLongLongWx
     #define wxULongLong wxULongLongWx
@@ -86,8 +86,8 @@
 
 #ifndef wxUSE_LONGLONG_WX
     #define wxUSE_LONGLONG_WX 0
-    class WXDLLIMPEXP_BASE wxLongLongNative;
-    class WXDLLIMPEXP_BASE wxULongLongNative;
+    class WXDLLIMPEXP_FWD_BASE wxLongLongNative;
+    class WXDLLIMPEXP_FWD_BASE wxULongLongNative;
     typedef wxLongLongNative wxLongLong;
     typedef wxULongLongNative wxULongLong;
 #endif
diff --git a/include/wx/mac/carbon/app.h b/include/wx/mac/carbon/app.h
index 8d294d803d..00d42f2ad8 100644
--- a/include/wx/mac/carbon/app.h
+++ b/include/wx/mac/carbon/app.h
@@ -21,11 +21,11 @@
 typedef struct __CFRunLoopSource * CFRunLoopSourceRef;
 #endif
 
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxWindowMac;
-class WXDLLEXPORT wxApp ;
-class WXDLLEXPORT wxKeyEvent;
-class WXDLLEXPORT wxLog;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindowMac;
+class WXDLLIMPEXP_FWD_CORE wxApp ;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxLog;
 
 // Force an exit from main loop
 void WXDLLEXPORT wxExit();
diff --git a/include/wx/mac/carbon/bitmap.h b/include/wx/mac/carbon/bitmap.h
index e2a5a5b57e..ce5b1d22bc 100644
--- a/include/wx/mac/carbon/bitmap.h
+++ b/include/wx/mac/carbon/bitmap.h
@@ -15,15 +15,15 @@
 #include "wx/palette.h"
 
 // Bitmap
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 class wxBitmapRefData ;
-class WXDLLEXPORT wxBitmapHandler;
-class WXDLLEXPORT wxControl;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxPixelDataBase;
+class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
+class WXDLLIMPEXP_FWD_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
 
 // A mask is a bitmap used for drawing bitmaps
 // Internally it is stored as a 8 bit deep memory chunk, 0 = black means the source will be drawn
@@ -89,7 +89,7 @@ class WXDLLEXPORT wxBitmap: public wxBitmapBase
 {
     DECLARE_DYNAMIC_CLASS(wxBitmap)
 
-    friend class WXDLLEXPORT wxBitmapHandler;
+    friend class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
 
 public:
     wxBitmap(); // Platform-specific
diff --git a/include/wx/mac/carbon/brush.h b/include/wx/mac/carbon/brush.h
index 90ac01b9fe..ae73a725dd 100644
--- a/include/wx/mac/carbon/brush.h
+++ b/include/wx/mac/carbon/brush.h
@@ -16,7 +16,7 @@
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 typedef enum
 {
diff --git a/include/wx/mac/carbon/checkbox.h b/include/wx/mac/carbon/checkbox.h
index 0e2ac1563d..e1447e355b 100644
--- a/include/wx/mac/carbon/checkbox.h
+++ b/include/wx/mac/carbon/checkbox.h
@@ -44,7 +44,7 @@ protected:
     DECLARE_DYNAMIC_CLASS(wxCheckBox)
 };
 
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox
 {
 public:
diff --git a/include/wx/mac/carbon/clipbrd.h b/include/wx/mac/carbon/clipbrd.h
index 1ad2c356ae..3dd00d3bef 100644
--- a/include/wx/mac/carbon/clipbrd.h
+++ b/include/wx/mac/carbon/clipbrd.h
@@ -25,7 +25,7 @@
 // wxClipboard
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
 class WXDLLEXPORT wxClipboard : public wxClipboardBase
 {
     DECLARE_DYNAMIC_CLASS(wxClipboard)
diff --git a/include/wx/mac/carbon/dataview.h b/include/wx/mac/carbon/dataview.h
index 935aa9ebfc..b825042f04 100644
--- a/include/wx/mac/carbon/dataview.h
+++ b/include/wx/mac/carbon/dataview.h
@@ -23,7 +23,7 @@
 // classes
 // ---------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxDataViewCtrl;
+class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
 
 // ---------------------------------------------------------
 // wxDataViewRenderer
diff --git a/include/wx/mac/carbon/dcclient.h b/include/wx/mac/carbon/dcclient.h
index b743ea7918..b3b42f4e2e 100644
--- a/include/wx/mac/carbon/dcclient.h
+++ b/include/wx/mac/carbon/dcclient.h
@@ -18,8 +18,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxPaintDC;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 class WXDLLEXPORT wxWindowDC: public wxDC
 {
diff --git a/include/wx/mac/carbon/dialog.h b/include/wx/mac/carbon/dialog.h
index 5fa0912f67..6b03257503 100644
--- a/include/wx/mac/carbon/dialog.h
+++ b/include/wx/mac/carbon/dialog.h
@@ -16,7 +16,7 @@
 
 WXDLLEXPORT_DATA(extern const wxChar) wxDialogNameStr[];
 
-class WXDLLEXPORT wxMacToolTip ;
+class WXDLLIMPEXP_FWD_CORE wxMacToolTip ;
 
 // Dialog boxes
 class WXDLLEXPORT wxDialog : public wxDialogBase
diff --git a/include/wx/mac/carbon/dnd.h b/include/wx/mac/carbon/dnd.h
index d11389d7d2..946be102cb 100644
--- a/include/wx/mac/carbon/dnd.h
+++ b/include/wx/mac/carbon/dnd.h
@@ -23,13 +23,13 @@
 // classes
 //-------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLEXPORT wxDropTarget;
-class WXDLLEXPORT wxTextDropTarget;
-class WXDLLEXPORT wxFileDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxTextDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxFileDropTarget;
 
-class WXDLLEXPORT wxDropSource;
+class WXDLLIMPEXP_FWD_CORE wxDropSource;
 
 // ----------------------------------------------------------------------------
 // macros
diff --git a/include/wx/mac/carbon/fontdlg.h b/include/wx/mac/carbon/fontdlg.h
index b9533bea69..33fdd4bb7c 100644
--- a/include/wx/mac/carbon/fontdlg.h
+++ b/include/wx/mac/carbon/fontdlg.h
@@ -59,13 +59,13 @@ extern "C" int RunMixedFontDialog(wxFontDialog* dialog) ;
 
 class wxFontColourSwatchCtrl;
 class wxFontPreviewCtrl;
-class WXDLLEXPORT wxSpinCtrl;
-class WXDLLEXPORT wxSpinEvent;
-class WXDLLEXPORT wxListBox;
-class WXDLLEXPORT wxChoice;
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxStaticText;
-class WXDLLEXPORT wxCheckBox;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinEvent;
+class WXDLLIMPEXP_FWD_CORE wxListBox;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
 
 /*!
  * Control identifiers
diff --git a/include/wx/mac/carbon/frame.h b/include/wx/mac/carbon/frame.h
index 3119b143fe..30706e3e48 100644
--- a/include/wx/mac/carbon/frame.h
+++ b/include/wx/mac/carbon/frame.h
@@ -19,9 +19,9 @@
 
 WXDLLEXPORT_DATA(extern const wxChar) wxToolBarNameStr[];
 
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxStatusBar;
-class WXDLLEXPORT wxMacToolTip ;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxStatusBar;
+class WXDLLIMPEXP_FWD_CORE wxMacToolTip ;
 
 class WXDLLEXPORT wxFrame: public wxFrameBase 
 {
diff --git a/include/wx/mac/carbon/imaglist.h b/include/wx/mac/carbon/imaglist.h
index 0d4caa8468..59bfe6261d 100644
--- a/include/wx/mac/carbon/imaglist.h
+++ b/include/wx/mac/carbon/imaglist.h
@@ -15,9 +15,9 @@
 #include "wx/list.h"
 #include "wx/icon.h"
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxColour;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 class WXDLLEXPORT wxImageList: public wxObject
 {
diff --git a/include/wx/mac/carbon/mdi.h b/include/wx/mac/carbon/mdi.h
index 4e5d55fce4..32772a754b 100644
--- a/include/wx/mac/carbon/mdi.h
+++ b/include/wx/mac/carbon/mdi.h
@@ -18,8 +18,8 @@
 
 WXDLLEXPORT_DATA(extern const wxChar) wxStatusLineNameStr[];
 
-class WXDLLEXPORT wxMDIClientWindow;
-class WXDLLEXPORT wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
 class WXDLLEXPORT wxMDIParentFrame: public wxFrame
 {
@@ -106,7 +106,7 @@ protected:
     bool m_shouldBeShown;
 
 private:
-    friend class WXDLLEXPORT wxMDIChildFrame;
+    friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
     DECLARE_EVENT_TABLE()
 };
 
diff --git a/include/wx/mac/carbon/menu.h b/include/wx/mac/carbon/menu.h
index 4430389dec..5fda6b8f6a 100644
--- a/include/wx/mac/carbon/menu.h
+++ b/include/wx/mac/carbon/menu.h
@@ -12,7 +12,7 @@
 #ifndef _WX_MENU_H_
 #define _WX_MENU_H_
 
-class WXDLLEXPORT wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 #include "wx/arrstr.h"
 
diff --git a/include/wx/mac/carbon/metafile.h b/include/wx/mac/carbon/metafile.h
index da46526593..d6f7fe2cb7 100644
--- a/include/wx/mac/carbon/metafile.h
+++ b/include/wx/mac/carbon/metafile.h
@@ -30,7 +30,7 @@
 #define wxMetaFile wxMetafile
 #define wxMetaFileDC wxMetafileDC
 
-class WXDLLEXPORT wxMetafile;
+class WXDLLIMPEXP_FWD_CORE wxMetafile;
 class wxMetafileRefData ;
 
 #define M_METAFILEDATA ((wxMetafileRefData *)m_refData)
diff --git a/include/wx/mac/carbon/notebook.h b/include/wx/mac/carbon/notebook.h
index 859bbc9bee..8d37796db6 100644
--- a/include/wx/mac/carbon/notebook.h
+++ b/include/wx/mac/carbon/notebook.h
@@ -21,8 +21,8 @@
 // ----------------------------------------------------------------------------
 
 // fwd declarations
-class WXDLLEXPORT wxImageList;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // ----------------------------------------------------------------------------
 // wxNotebook
diff --git a/include/wx/mac/carbon/palette.h b/include/wx/mac/carbon/palette.h
index f64a6ec46e..0532aed4e1 100644
--- a/include/wx/mac/carbon/palette.h
+++ b/include/wx/mac/carbon/palette.h
@@ -15,13 +15,13 @@
 #include "wx/colour.h"
 #include "wx/gdiobj.h"
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
     DECLARE_NO_COPY_CLASS(wxPaletteRefData)
 
-    friend class WXDLLEXPORT wxPalette;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
     wxPaletteRefData();
     virtual ~wxPaletteRefData();
diff --git a/include/wx/mac/carbon/pen.h b/include/wx/mac/carbon/pen.h
index 8da9153e23..859448d154 100644
--- a/include/wx/mac/carbon/pen.h
+++ b/include/wx/mac/carbon/pen.h
@@ -16,11 +16,11 @@
 #include "wx/colour.h"
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxPen;
+class WXDLLIMPEXP_FWD_CORE wxPen;
 
 class WXDLLEXPORT wxPenRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPen;
+    friend class WXDLLIMPEXP_FWD_CORE wxPen;
 public:
     wxPenRefData();
     wxPenRefData(const wxPenRefData& data);
diff --git a/include/wx/mac/carbon/printdlg.h b/include/wx/mac/carbon/printdlg.h
index f0e9677a96..3df2606ebf 100644
--- a/include/wx/mac/carbon/printdlg.h
+++ b/include/wx/mac/carbon/printdlg.h
@@ -24,7 +24,7 @@
  * The Mac dialog for printing
  */
 
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 class WXDLLEXPORT wxMacPrintDialog: public wxPrintDialogBase
 {
 public:
@@ -74,7 +74,7 @@ private:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacPageSetupDialog)
 };
 
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 /*
 * wxMacPageMarginsDialog
diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h
index fb5430f738..ecc66ddd19 100644
--- a/include/wx/mac/carbon/private.h
+++ b/include/wx/mac/carbon/private.h
@@ -1175,8 +1175,8 @@ void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size);
 
 class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxIcon;
-    friend class WXDLLEXPORT wxCursor;
+    friend class WXDLLIMPEXP_FWD_CORE wxIcon;
+    friend class WXDLLIMPEXP_FWD_CORE wxCursor;
 public:
     wxBitmapRefData(int width , int height , int depth);
     wxBitmapRefData();
diff --git a/include/wx/mac/carbon/radiobox.h b/include/wx/mac/carbon/radiobox.h
index 8cead00522..177d4a17c8 100644
--- a/include/wx/mac/carbon/radiobox.h
+++ b/include/wx/mac/carbon/radiobox.h
@@ -13,9 +13,9 @@
 #define _WX_RADIOBOX_H_
 
 // List box item
-class WXDLLEXPORT wxBitmap ;
+class WXDLLIMPEXP_FWD_CORE wxBitmap ;
 
-class WXDLLEXPORT wxRadioButton ;
+class WXDLLIMPEXP_FWD_CORE wxRadioButton ;
 
 class WXDLLEXPORT wxRadioBox: public wxControl, public wxRadioBoxBase
 {
diff --git a/include/wx/mac/carbon/radiobut.h b/include/wx/mac/carbon/radiobut.h
index 572261ed2c..e89c89ae37 100644
--- a/include/wx/mac/carbon/radiobut.h
+++ b/include/wx/mac/carbon/radiobut.h
@@ -54,7 +54,7 @@ public:
 
 // Not implemented
 #if 0
-class WXDLLEXPORT wxBitmap ;
+class WXDLLIMPEXP_FWD_CORE wxBitmap ;
 
 WXDLLEXPORT_DATA(extern const wxChar) wxBitmapRadioButtonNameStr[];
 
diff --git a/include/wx/mac/carbon/region.h b/include/wx/mac/carbon/region.h
index 83f02a155e..ba2a0ae5d0 100644
--- a/include/wx/mac/carbon/region.h
+++ b/include/wx/mac/carbon/region.h
@@ -53,7 +53,7 @@ protected:
 
 private:
     DECLARE_DYNAMIC_CLASS(wxRegion)
-    friend class WXDLLEXPORT wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
 };
 
 class WXDLLEXPORT wxRegionIterator : public wxObject
diff --git a/include/wx/mac/carbon/spinctrl.h b/include/wx/mac/carbon/spinctrl.h
index 5c513561a6..5a77b2a9f7 100644
--- a/include/wx/mac/carbon/spinctrl.h
+++ b/include/wx/mac/carbon/spinctrl.h
@@ -24,10 +24,10 @@
 
 #include "wx/containr.h"
 
-class WXDLLEXPORT wxSpinButton;
-class WXDLLEXPORT wxTextCtrl;
-class WXDLLEXPORT wxSpinCtrlText;
-class WXDLLEXPORT wxSpinCtrlButton;
+class WXDLLIMPEXP_FWD_CORE wxSpinButton;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrlText;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrlButton;
 
 // ----------------------------------------------------------------------------
 // wxSpinCtrl is a combination of wxTextCtrl and wxSpinButton
diff --git a/include/wx/mac/carbon/taskbarosx.h b/include/wx/mac/carbon/taskbarosx.h
index 43c952679a..3e6c9accb0 100644
--- a/include/wx/mac/carbon/taskbarosx.h
+++ b/include/wx/mac/carbon/taskbarosx.h
@@ -12,8 +12,8 @@
 #ifndef _TASKBAR_H_
 #define _TASKBAR_H_
 
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
 
 class WXDLLEXPORT wxTaskBarIcon : public wxTaskBarIconBase
 {
diff --git a/include/wx/mac/carbon/window.h b/include/wx/mac/carbon/window.h
index 7f98c88483..aee0e91ffa 100644
--- a/include/wx/mac/carbon/window.h
+++ b/include/wx/mac/carbon/window.h
@@ -15,9 +15,9 @@
 #include "wx/brush.h"
 #include "wx/dc.h"
 
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxScrollBar;
-class WXDLLEXPORT wxTopLevelWindowMac;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxTopLevelWindowMac;
 
 class wxMacControl ;
 
diff --git a/include/wx/mac/corefoundation/cfstring.h b/include/wx/mac/corefoundation/cfstring.h
index 8ac6851f58..38d6a9f47e 100644
--- a/include/wx/mac/corefoundation/cfstring.h
+++ b/include/wx/mac/corefoundation/cfstring.h
@@ -20,7 +20,7 @@
 
 #include "wx/fontenc.h"
 
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
 void wxMacConvertNewlines13To10( wxString *data ) ;
 void wxMacConvertNewlines10To13( wxString *data ) ;
diff --git a/include/wx/mac/corefoundation/joystick.h b/include/wx/mac/corefoundation/joystick.h
index 99f23c37f9..e57bf28cb7 100644
--- a/include/wx/mac/corefoundation/joystick.h
+++ b/include/wx/mac/corefoundation/joystick.h
@@ -14,7 +14,7 @@
 
 #include "wx/event.h"
 
-class WXDLLEXPORT wxJoystickThread;
+class WXDLLIMPEXP_FWD_CORE wxJoystickThread;
 
 class WXDLLEXPORT wxJoystick: public wxObject
 {
diff --git a/include/wx/memory.h b/include/wx/memory.h
index b5e224be24..def1b73458 100644
--- a/include/wx/memory.h
+++ b/include/wx/memory.h
@@ -142,7 +142,7 @@ typedef unsigned int wxMarkerType;
 
 class WXDLLIMPEXP_BASE wxMemStruct {
 
-friend class WXDLLIMPEXP_BASE wxDebugContext; // access to the m_next pointer for list traversal.
+friend class WXDLLIMPEXP_FWD_BASE wxDebugContext; // access to the m_next pointer for list traversal.
 
 public:
 public:
diff --git a/include/wx/menu.h b/include/wx/menu.h
index bd5e59176c..852b6eac20 100644
--- a/include/wx/menu.h
+++ b/include/wx/menu.h
@@ -27,10 +27,10 @@
 // included wx/menu.h
 #include "wx/menuitem.h"
 
-class WXDLLEXPORT wxMenu;
-class WXDLLEXPORT wxMenuBarBase;
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxMenuItem;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxMenuBarBase;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxMenuItem;
 
 // pseudo template list classes
 WX_DECLARE_EXPORTED_LIST(wxMenu, wxMenuList);
diff --git a/include/wx/menuitem.h b/include/wx/menuitem.h
index 23429ed8a2..bc9d0bee0f 100644
--- a/include/wx/menuitem.h
+++ b/include/wx/menuitem.h
@@ -26,9 +26,9 @@
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxAcceleratorEntry;
-class WXDLLEXPORT wxMenuItem;
-class WXDLLEXPORT wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxAcceleratorEntry;
+class WXDLLIMPEXP_FWD_CORE wxMenuItem;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
 
 // ----------------------------------------------------------------------------
 // wxMenuItem is an item in the menu which may be either a normal item, a sub
diff --git a/include/wx/mgl/app.h b/include/wx/mgl/app.h
index c92cab42e6..8bd35c9760 100644
--- a/include/wx/mgl/app.h
+++ b/include/wx/mgl/app.h
@@ -18,9 +18,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxApp;
-class WXDLLEXPORT wxLog;
-class WXDLLEXPORT wxEventLoop;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_CORE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxEventLoop;
 
 //-----------------------------------------------------------------------------
 // wxApp
diff --git a/include/wx/mgl/bitmap.h b/include/wx/mgl/bitmap.h
index f794945d54..ab6806b3e9 100644
--- a/include/wx/mgl/bitmap.h
+++ b/include/wx/mgl/bitmap.h
@@ -13,8 +13,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxMemoryDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
 
 class MGLDevCtx;
 struct bitmap_t;
diff --git a/include/wx/mgl/brush.h b/include/wx/mgl/brush.h
index 1bbf1a538b..97fccfdd1a 100644
--- a/include/wx/mgl/brush.h
+++ b/include/wx/mgl/brush.h
@@ -20,8 +20,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 //-----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/mgl/dc.h b/include/wx/mgl/dc.h
index 8c6ae8549e..05251f113c 100644
--- a/include/wx/mgl/dc.h
+++ b/include/wx/mgl/dc.h
@@ -18,7 +18,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 
 //-----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/mgl/dcclient.h b/include/wx/mgl/dcclient.h
index ca78d1df80..0011f1ca72 100644
--- a/include/wx/mgl/dcclient.h
+++ b/include/wx/mgl/dcclient.h
@@ -16,10 +16,10 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindowDC;
-class WXDLLEXPORT wxPaintDC;
-class WXDLLEXPORT wxClientDC;
-class WXDLLEXPORT wxWindowMGL;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxClientDC;
+class WXDLLIMPEXP_FWD_CORE wxWindowMGL;
 
 //-----------------------------------------------------------------------------
 // wxWindowDC
diff --git a/include/wx/mgl/dcmemory.h b/include/wx/mgl/dcmemory.h
index 39804f20f1..7bd0f9ce85 100644
--- a/include/wx/mgl/dcmemory.h
+++ b/include/wx/mgl/dcmemory.h
@@ -17,7 +17,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxMemoryDC;
+class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
 
 //-----------------------------------------------------------------------------
 // wxMemoryDC
diff --git a/include/wx/mgl/dcscreen.h b/include/wx/mgl/dcscreen.h
index 2f5a178b08..a60a4f2cac 100644
--- a/include/wx/mgl/dcscreen.h
+++ b/include/wx/mgl/dcscreen.h
@@ -16,7 +16,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxScreenDC;
+class WXDLLIMPEXP_FWD_CORE wxScreenDC;
 
 //-----------------------------------------------------------------------------
 // wxScreenDC
diff --git a/include/wx/mgl/font.h b/include/wx/mgl/font.h
index b33e7341c5..a8f9a25fbe 100644
--- a/include/wx/mgl/font.h
+++ b/include/wx/mgl/font.h
@@ -15,10 +15,10 @@
 // classes
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxPaintDC;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxFont;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxFont;
 
 struct font_t;
 
diff --git a/include/wx/mgl/palette.h b/include/wx/mgl/palette.h
index c8d46785cd..459403fc40 100644
--- a/include/wx/mgl/palette.h
+++ b/include/wx/mgl/palette.h
@@ -20,7 +20,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 struct palette_t;
 
 //-----------------------------------------------------------------------------
diff --git a/include/wx/mgl/pen.h b/include/wx/mgl/pen.h
index a18d97efb2..6dd307ae0c 100644
--- a/include/wx/mgl/pen.h
+++ b/include/wx/mgl/pen.h
@@ -20,8 +20,8 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxPen;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxPen;
 
 //-----------------------------------------------------------------------------
 // wxPen
diff --git a/include/wx/mgl/private.h b/include/wx/mgl/private.h
index 6b56a9d0b1..04560002b6 100644
--- a/include/wx/mgl/private.h
+++ b/include/wx/mgl/private.h
@@ -21,7 +21,7 @@
 #undef true
 #undef false
 
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 
 // ---------------------------------------------------------------------------
diff --git a/include/wx/mgl/region.h b/include/wx/mgl/region.h
index 35f3137f34..f1ae0e3e46 100644
--- a/include/wx/mgl/region.h
+++ b/include/wx/mgl/region.h
@@ -63,7 +63,7 @@ protected:
 
 private:
     DECLARE_DYNAMIC_CLASS(wxRegion);
-    friend class WXDLLEXPORT wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
 };
 
 
diff --git a/include/wx/mimetype.h b/include/wx/mimetype.h
index 515cf34521..588b010b9a 100644
--- a/include/wx/mimetype.h
+++ b/include/wx/mimetype.h
@@ -29,9 +29,9 @@
 #include <stdarg.h>
 
 // fwd decls
-class WXDLLIMPEXP_BASE wxIconLocation;
-class WXDLLIMPEXP_BASE wxFileTypeImpl;
-class WXDLLIMPEXP_BASE wxMimeTypesManagerImpl;
+class WXDLLIMPEXP_FWD_BASE wxIconLocation;
+class WXDLLIMPEXP_FWD_BASE wxFileTypeImpl;
+class WXDLLIMPEXP_FWD_BASE wxMimeTypesManagerImpl;
 
 // these constants define the MIME informations source under UNIX and are used
 // by wxMimeTypesManager::Initialize()
@@ -284,7 +284,7 @@ WX_DECLARE_USER_EXPORTED_OBJARRAY(wxFileTypeInfo, wxArrayFileTypeInfo,
 
 class WXDLLIMPEXP_BASE wxFileType
 {
-friend class WXDLLIMPEXP_BASE wxMimeTypesManagerImpl;  // it has access to m_impl
+friend class WXDLLIMPEXP_FWD_BASE wxMimeTypesManagerImpl;  // it has access to m_impl
 
 public:
     // An object of this class must be passed to Get{Open|Print}Command. The
diff --git a/include/wx/module.h b/include/wx/module.h
index 1e39f0e003..e255fe8bbd 100644
--- a/include/wx/module.h
+++ b/include/wx/module.h
@@ -17,7 +17,7 @@
 #include "wx/dynarray.h"
 
 // declare a linked list of modules
-class WXDLLIMPEXP_BASE wxModule;
+class WXDLLIMPEXP_FWD_BASE wxModule;
 WX_DECLARE_USER_EXPORTED_LIST(wxModule, wxModuleList, WXDLLIMPEXP_BASE);
 
 // and an array of class info objects
diff --git a/include/wx/motif/app.h b/include/wx/motif/app.h
index 8c1159b34c..088f2d39cc 100644
--- a/include/wx/motif/app.h
+++ b/include/wx/motif/app.h
@@ -23,14 +23,14 @@
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxApp;
-class WXDLLEXPORT wxKeyEvent;
-class WXDLLEXPORT wxLog;
-class WXDLLEXPORT wxEventLoop;
-class WXDLLEXPORT wxXVisualInfo;
-class WXDLLEXPORT wxPerDisplayData;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxEventLoop;
+class WXDLLIMPEXP_FWD_CORE wxXVisualInfo;
+class WXDLLIMPEXP_FWD_CORE wxPerDisplayData;
 
 // ----------------------------------------------------------------------------
 // the wxApp class for Motif - see wxAppBase for more details
diff --git a/include/wx/motif/clipbrd.h b/include/wx/motif/clipbrd.h
index 00210ca1ff..d95df6ad49 100644
--- a/include/wx/motif/clipbrd.h
+++ b/include/wx/motif/clipbrd.h
@@ -14,7 +14,7 @@
 
 #if wxUSE_CLIPBOARD
 
-class WXDLLIMPEXP_CORE wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
 struct wxDataIdToDataObject;
 
 #include "wx/list.h"
diff --git a/include/wx/motif/cursor.h b/include/wx/motif/cursor.h
index e30e1f0db4..11a68c5364 100644
--- a/include/wx/motif/cursor.h
+++ b/include/wx/motif/cursor.h
@@ -15,7 +15,7 @@
 #include "wx/object.h"
 #include "wx/gdicmn.h"
 
-class WXDLLEXPORT wxImage;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 // Cursor
 class WXDLLEXPORT wxCursor: public wxObject
diff --git a/include/wx/motif/dcclient.h b/include/wx/motif/dcclient.h
index 54bffa81ff..69d2de39ce 100644
--- a/include/wx/motif/dcclient.h
+++ b/include/wx/motif/dcclient.h
@@ -18,8 +18,8 @@
 // fwd declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindowDC;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented
 // differently. On many platforms, however, they will be the same.
diff --git a/include/wx/motif/dialog.h b/include/wx/motif/dialog.h
index d4b0da8672..1e6821d5c1 100644
--- a/include/wx/motif/dialog.h
+++ b/include/wx/motif/dialog.h
@@ -12,7 +12,7 @@
 #ifndef _WX_DIALOG_H_
 #define _WX_DIALOG_H_
 
-class WXDLLEXPORT wxEventLoop;
+class WXDLLIMPEXP_FWD_CORE wxEventLoop;
 
 // Dialog boxes
 class WXDLLEXPORT wxDialog : public wxDialogBase
diff --git a/include/wx/motif/dnd.h b/include/wx/motif/dnd.h
index 614096f548..3e28339d18 100644
--- a/include/wx/motif/dnd.h
+++ b/include/wx/motif/dnd.h
@@ -23,14 +23,14 @@
 // classes
 //-------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLEXPORT wxDropTarget;
-class WXDLLEXPORT wxTextDropTarget;
-class WXDLLEXPORT wxFileDropTarget;
-class WXDLLEXPORT wxPrivateDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxTextDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxFileDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxPrivateDropTarget;
 
-class WXDLLEXPORT wxDropSource;
+class WXDLLIMPEXP_FWD_CORE wxDropSource;
 
 //-------------------------------------------------------------------------
 // wxDropTarget
diff --git a/include/wx/motif/listbox.h b/include/wx/motif/listbox.h
index d124453bde..29faf7d6dc 100644
--- a/include/wx/motif/listbox.h
+++ b/include/wx/motif/listbox.h
@@ -16,7 +16,7 @@
 #include "wx/clntdata.h"
 
 // forward decl for GetSelections()
-class WXDLLEXPORT wxArrayInt;
+class WXDLLIMPEXP_FWD_CORE wxArrayInt;
 
 // List box item
 class WXDLLEXPORT wxListBox: public wxListBoxBase
diff --git a/include/wx/motif/mdi.h b/include/wx/motif/mdi.h
index e27da81e02..7266a0100d 100644
--- a/include/wx/motif/mdi.h
+++ b/include/wx/motif/mdi.h
@@ -23,14 +23,14 @@ but wxMDIChildFrame::GetParent should return the parent frame.
 #include "wx/frame.h"
 #include "wx/notebook.h"
 
-class WXDLLEXPORT wxMDIClientWindow;
-class WXDLLEXPORT wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
 class WXDLLEXPORT wxMDIParentFrame: public wxFrame
 {
     DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
 
-        friend class WXDLLEXPORT wxMDIChildFrame;
+        friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 public:
 
     wxMDIParentFrame();
diff --git a/include/wx/motif/menu.h b/include/wx/motif/menu.h
index 788c7c2248..22ed6b55a0 100644
--- a/include/wx/motif/menu.h
+++ b/include/wx/motif/menu.h
@@ -16,7 +16,7 @@
 #include "wx/font.h"
 #include "wx/arrstr.h"
 
-class WXDLLIMPEXP_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 // ----------------------------------------------------------------------------
 // Menu
diff --git a/include/wx/motif/menuitem.h b/include/wx/motif/menuitem.h
index e9c6bc965d..7df8dd2e4e 100644
--- a/include/wx/motif/menuitem.h
+++ b/include/wx/motif/menuitem.h
@@ -14,7 +14,7 @@
 
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
 
 // ----------------------------------------------------------------------------
 // wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour
diff --git a/include/wx/motif/palette.h b/include/wx/motif/palette.h
index 47b0ae7c05..644e066af9 100644
--- a/include/wx/motif/palette.h
+++ b/include/wx/motif/palette.h
@@ -15,7 +15,7 @@
 #include "wx/gdiobj.h"
 #include "wx/list.h"
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 // Palette for one display
 class wxXPalette : public wxObject
@@ -34,7 +34,7 @@ public:
 
 class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPalette;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
     wxPaletteRefData();
     virtual ~wxPaletteRefData();
diff --git a/include/wx/motif/private.h b/include/wx/motif/private.h
index 09f072e520..816fc71fcc 100644
--- a/include/wx/motif/private.h
+++ b/include/wx/motif/private.h
@@ -16,11 +16,11 @@
 #include "X11/Xlib.h"
 #include "wx/evtloop.h"
 
-class WXDLLEXPORT wxFont;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxSize;
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxColour;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxSize;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 #include "wx/x11/privx.h"
 
diff --git a/include/wx/motif/spinbutt.h b/include/wx/motif/spinbutt.h
index 6350672923..71ce033ee7 100644
--- a/include/wx/motif/spinbutt.h
+++ b/include/wx/motif/spinbutt.h
@@ -12,7 +12,7 @@
 #ifndef _WX_SPINBUTT_H_
 #define _WX_SPINBUTT_H_
 
-class WXDLLEXPORT wxArrowButton; // internal
+class WXDLLIMPEXP_FWD_CORE wxArrowButton; // internal
 
 class WXDLLEXPORT wxSpinButton : public wxSpinButtonBase
 {
diff --git a/include/wx/motif/window.h b/include/wx/motif/window.h
index 7a8e21899f..c5a294f3c3 100644
--- a/include/wx/motif/window.h
+++ b/include/wx/motif/window.h
@@ -20,8 +20,8 @@
 
 class WXDLLIMPEXP_CORE wxWindow : public wxWindowBase
 {
-    friend class WXDLLEXPORT wxDC;
-    friend class WXDLLEXPORT wxWindowDC;
+    friend class WXDLLIMPEXP_FWD_CORE wxDC;
+    friend class WXDLLIMPEXP_FWD_CORE wxWindowDC;
 
 public:
     wxWindow() { Init(); }
diff --git a/include/wx/mstream.h b/include/wx/mstream.h
index d3a1e0ab9b..97d6f5e00b 100644
--- a/include/wx/mstream.h
+++ b/include/wx/mstream.h
@@ -18,7 +18,7 @@
 
 #include "wx/stream.h"
 
-class WXDLLIMPEXP_BASE wxMemoryOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxMemoryOutputStream;
 
 class WXDLLIMPEXP_BASE wxMemoryInputStream : public wxInputStream
 {
diff --git a/include/wx/msw/accel.h b/include/wx/msw/accel.h
index 236c044b0c..277290a4cb 100644
--- a/include/wx/msw/accel.h
+++ b/include/wx/msw/accel.h
@@ -12,7 +12,7 @@
 #ifndef _WX_ACCEL_H_
 #define _WX_ACCEL_H_
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // ----------------------------------------------------------------------------
 // the accel table has all accelerators for a given window or menu
diff --git a/include/wx/msw/app.h b/include/wx/msw/app.h
index 754dc8f39b..ba8a192543 100644
--- a/include/wx/msw/app.h
+++ b/include/wx/msw/app.h
@@ -15,11 +15,11 @@
 #include "wx/event.h"
 #include "wx/icon.h"
 
-class WXDLLIMPEXP_CORE wxFrame;
-class WXDLLIMPEXP_CORE wxWindow;
-class WXDLLIMPEXP_CORE wxApp;
-class WXDLLIMPEXP_CORE wxKeyEvent;
-class WXDLLIMPEXP_BASE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_BASE wxLog;
 
 // Represents the application. Derive OnInit and declare
 // a new App object to start application
diff --git a/include/wx/msw/bitmap.h b/include/wx/msw/bitmap.h
index edd355e23a..ffde65f429 100644
--- a/include/wx/msw/bitmap.h
+++ b/include/wx/msw/bitmap.h
@@ -15,20 +15,20 @@
 #include "wx/msw/gdiimage.h"
 #include "wx/palette.h"
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxBitmapHandler;
-class WXDLLEXPORT wxBitmapRefData;
-class WXDLLEXPORT wxControl;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
+class WXDLLIMPEXP_FWD_CORE wxBitmapRefData;
+class WXDLLIMPEXP_FWD_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 #if wxUSE_WXDIB
-class WXDLLEXPORT wxDIB;
+class WXDLLIMPEXP_FWD_CORE wxDIB;
 #endif
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxMask;
-class WXDLLEXPORT wxPalette;
-class WXDLLEXPORT wxPixelDataBase;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxMask;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
 
 // ----------------------------------------------------------------------------
 // wxBitmap: a mono or colour bitmap
diff --git a/include/wx/msw/brush.h b/include/wx/msw/brush.h
index 3500cbf3b3..6e21585ad1 100644
--- a/include/wx/msw/brush.h
+++ b/include/wx/msw/brush.h
@@ -16,7 +16,7 @@
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 // ----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/msw/checklst.h b/include/wx/msw/checklst.h
index e347ba14fe..a632216403 100644
--- a/include/wx/msw/checklst.h
+++ b/include/wx/msw/checklst.h
@@ -16,8 +16,8 @@
   #error  "wxCheckListBox class requires owner-drawn functionality."
 #endif
 
-class WXDLLEXPORT wxOwnerDrawn;
-class WXDLLEXPORT wxCheckListBoxItem; // fwd decl, defined in checklst.cpp
+class WXDLLIMPEXP_FWD_CORE wxOwnerDrawn;
+class WXDLLIMPEXP_FWD_CORE wxCheckListBoxItem; // fwd decl, defined in checklst.cpp
 
 class WXDLLEXPORT wxCheckListBox : public wxCheckListBoxBase
 {
diff --git a/include/wx/msw/clipbrd.h b/include/wx/msw/clipbrd.h
index 2a760e2676..ee04acf8f7 100644
--- a/include/wx/msw/clipbrd.h
+++ b/include/wx/msw/clipbrd.h
@@ -47,7 +47,7 @@ WXDLLEXPORT bool wxGetClipboardFormatName(wxDataFormat dataFormat,
 // wxClipboard
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
 class WXDLLEXPORT wxClipboard : public wxClipboardBase
 {
     DECLARE_DYNAMIC_CLASS(wxClipboard)
diff --git a/include/wx/msw/cursor.h b/include/wx/msw/cursor.h
index 24fb71f1d7..f8025338a4 100644
--- a/include/wx/msw/cursor.h
+++ b/include/wx/msw/cursor.h
@@ -14,7 +14,7 @@
 
 #include "wx/msw/gdiimage.h"
 
-class WXDLLEXPORT wxImage;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 // Cursor
 class WXDLLEXPORT wxCursor : public wxGDIImage
diff --git a/include/wx/msw/dcclient.h b/include/wx/msw/dcclient.h
index b85000d9d0..6399130d1c 100644
--- a/include/wx/msw/dcclient.h
+++ b/include/wx/msw/dcclient.h
@@ -24,7 +24,7 @@
 // ----------------------------------------------------------------------------
 
 // this one if used by wxPaintDC only
-struct WXDLLEXPORT wxPaintDCInfo;
+struct WXDLLIMPEXP_FWD_CORE wxPaintDCInfo;
 
 WX_DECLARE_EXPORTED_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo);
 
diff --git a/include/wx/msw/dde.h b/include/wx/msw/dde.h
index d8b0fabebe..4595599738 100644
--- a/include/wx/msw/dde.h
+++ b/include/wx/msw/dde.h
@@ -38,8 +38,8 @@
  *
  */
 
-class WXDLLIMPEXP_BASE wxDDEServer;
-class WXDLLIMPEXP_BASE wxDDEClient;
+class WXDLLIMPEXP_FWD_BASE wxDDEServer;
+class WXDLLIMPEXP_FWD_BASE wxDDEClient;
 
 class WXDLLIMPEXP_BASE wxDDEConnection: public wxConnectionBase
 {
diff --git a/include/wx/msw/dialog.h b/include/wx/msw/dialog.h
index b8c0fb857f..3f128f4120 100644
--- a/include/wx/msw/dialog.h
+++ b/include/wx/msw/dialog.h
@@ -16,10 +16,10 @@
 
 extern WXDLLEXPORT_DATA(const wxChar) wxDialogNameStr[];
 
-class WXDLLEXPORT wxDialogModalData;
+class WXDLLIMPEXP_FWD_CORE wxDialogModalData;
 
 #if wxUSE_TOOLBAR && (defined(__SMARTPHONE__) || defined(__POCKETPC__))
-class WXDLLEXPORT wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
 extern WXDLLEXPORT_DATA(const wxChar) wxToolBarNameStr[];
 #endif
 
diff --git a/include/wx/msw/dib.h b/include/wx/msw/dib.h
index 0a9fd4587a..9b0751296f 100644
--- a/include/wx/msw/dib.h
+++ b/include/wx/msw/dib.h
@@ -12,8 +12,8 @@
 #ifndef _WX_MSW_DIB_H_
 #define _WX_MSW_DIB_H_
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 #include "wx/msw/private.h"
 
diff --git a/include/wx/msw/gdiimage.h b/include/wx/msw/gdiimage.h
index 2111414a63..b22ff3ceaa 100644
--- a/include/wx/msw/gdiimage.h
+++ b/include/wx/msw/gdiimage.h
@@ -20,9 +20,9 @@
 #include "wx/gdicmn.h"          // wxBITMAP_TYPE_INVALID
 #include "wx/list.h"
 
-class WXDLLEXPORT wxGDIImageRefData;
-class WXDLLEXPORT wxGDIImageHandler;
-class WXDLLEXPORT wxGDIImage;
+class WXDLLIMPEXP_FWD_CORE wxGDIImageRefData;
+class WXDLLIMPEXP_FWD_CORE wxGDIImageHandler;
+class WXDLLIMPEXP_FWD_CORE wxGDIImage;
 
 WX_DECLARE_EXPORTED_LIST(wxGDIImageHandler, wxGDIImageHandlerList);
 
diff --git a/include/wx/msw/listbox.h b/include/wx/msw/listbox.h
index afe5f34d1e..d4eb27141c 100644
--- a/include/wx/msw/listbox.h
+++ b/include/wx/msw/listbox.h
@@ -19,7 +19,7 @@
 // ----------------------------------------------------------------------------
 
 #if wxUSE_OWNER_DRAWN
-  class WXDLLEXPORT wxOwnerDrawn;
+  class WXDLLIMPEXP_FWD_CORE wxOwnerDrawn;
 
   // define the array of list box items
   #include  "wx/dynarray.h"
@@ -28,7 +28,7 @@
 #endif // wxUSE_OWNER_DRAWN
 
 // forward decl for GetSelections()
-class WXDLLIMPEXP_BASE wxArrayInt;
+class WXDLLIMPEXP_FWD_BASE wxArrayInt;
 
 // ----------------------------------------------------------------------------
 // List box control
diff --git a/include/wx/msw/listctrl.h b/include/wx/msw/listctrl.h
index cf4bfdd64e..b732827376 100644
--- a/include/wx/msw/listctrl.h
+++ b/include/wx/msw/listctrl.h
@@ -14,7 +14,7 @@
 
 #include "wx/textctrl.h"
 
-class WXDLLEXPORT wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 /*
     The wxListCtrl can show lists of items in four different modes:
diff --git a/include/wx/msw/mdi.h b/include/wx/msw/mdi.h
index 3b9c41387e..8366985ec7 100644
--- a/include/wx/msw/mdi.h
+++ b/include/wx/msw/mdi.h
@@ -16,8 +16,8 @@
 
 extern WXDLLEXPORT_DATA(const wxChar) wxStatusLineNameStr[];
 
-class WXDLLEXPORT wxMDIClientWindow;
-class WXDLLEXPORT wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
 // ---------------------------------------------------------------------------
 // wxMDIParentFrame
@@ -114,7 +114,7 @@ protected:
     bool m_parentFrameActive;
 
 private:
-    friend class WXDLLEXPORT wxMDIChildFrame;
+    friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
diff --git a/include/wx/msw/menu.h b/include/wx/msw/menu.h
index 89bc911dab..fde7364053 100644
--- a/include/wx/msw/menu.h
+++ b/include/wx/msw/menu.h
@@ -19,10 +19,10 @@
     WX_DEFINE_EXPORTED_ARRAY_PTR(wxAcceleratorEntry *, wxAcceleratorArray);
 #endif // wxUSE_ACCEL
 
-class WXDLLEXPORT wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 #if defined(__WXWINCE__) && wxUSE_TOOLBAR
-class WXDLLEXPORT wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
 #endif
 
 
diff --git a/include/wx/msw/metafile.h b/include/wx/msw/metafile.h
index c37eefa682..0ef7398f88 100644
--- a/include/wx/msw/metafile.h
+++ b/include/wx/msw/metafile.h
@@ -23,11 +23,11 @@
 // Metafile and metafile device context classes
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxMetafile;
+class WXDLLIMPEXP_FWD_CORE wxMetafile;
 
 class WXDLLEXPORT wxMetafileRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxMetafile;
+    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 public:
     wxMetafileRefData();
     virtual ~wxMetafileRefData();
diff --git a/include/wx/msw/ole/access.h b/include/wx/msw/ole/access.h
index 91ff1e85cb..f32062f2a4 100644
--- a/include/wx/msw/ole/access.h
+++ b/include/wx/msw/ole/access.h
@@ -19,7 +19,7 @@
 // ----------------------------------------------------------------------------
 
 class wxIAccessible;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // ----------------------------------------------------------------------------
 // macros
diff --git a/include/wx/msw/ole/dropsrc.h b/include/wx/msw/ole/dropsrc.h
index d92c31f7d8..9bdcb3584c 100644
--- a/include/wx/msw/ole/dropsrc.h
+++ b/include/wx/msw/ole/dropsrc.h
@@ -19,8 +19,8 @@
 // ----------------------------------------------------------------------------
 
 class wxIDropSource;
-class WXDLLEXPORT wxDataObject;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // ----------------------------------------------------------------------------
 // macros
diff --git a/include/wx/msw/ole/oleutils.h b/include/wx/msw/ole/oleutils.h
index 403daf6034..b70a76ade8 100644
--- a/include/wx/msw/ole/oleutils.h
+++ b/include/wx/msw/ole/oleutils.h
@@ -230,7 +230,7 @@ private:
 
 #if wxUSE_VARIANT
 // Convert variants
-class WXDLLIMPEXP_BASE wxVariant;
+class WXDLLIMPEXP_FWD_BASE wxVariant;
 
 WXDLLEXPORT bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant);
 WXDLLEXPORT bool wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant);
diff --git a/include/wx/msw/palette.h b/include/wx/msw/palette.h
index 561c8ae689..bbeab7e7dd 100644
--- a/include/wx/msw/palette.h
+++ b/include/wx/msw/palette.h
@@ -14,11 +14,11 @@
 
 #include "wx/gdiobj.h"
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPalette;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
     wxPaletteRefData(void);
     virtual ~wxPaletteRefData(void);
diff --git a/include/wx/msw/printdlg.h b/include/wx/msw/printdlg.h
index 868ed30f76..7a0101ec81 100644
--- a/include/wx/msw/printdlg.h
+++ b/include/wx/msw/printdlg.h
@@ -19,7 +19,7 @@
 #include "wx/prntbase.h"
 #include "wx/printdlg.h"
 
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 
 //----------------------------------------------------------------------------
 // wxWindowsPrintNativeData
diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h
index 22049abda7..262fc9ff80 100644
--- a/include/wx/msw/private.h
+++ b/include/wx/msw/private.h
@@ -23,9 +23,9 @@
 
 #include "wx/log.h"
 
-class WXDLLEXPORT wxFont;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindowBase;
 
 // ---------------------------------------------------------------------------
 // private constants
diff --git a/include/wx/msw/radiobox.h b/include/wx/msw/radiobox.h
index 05bccdc050..45cb608755 100644
--- a/include/wx/msw/radiobox.h
+++ b/include/wx/msw/radiobox.h
@@ -14,7 +14,7 @@
 
 #include "wx/statbox.h"
 
-class WXDLLEXPORT wxSubwindows;
+class WXDLLIMPEXP_FWD_CORE wxSubwindows;
 
 // ----------------------------------------------------------------------------
 // wxRadioBox
diff --git a/include/wx/msw/region.h b/include/wx/msw/region.h
index d867083f3f..e9463fdd13 100644
--- a/include/wx/msw/region.h
+++ b/include/wx/msw/region.h
@@ -52,7 +52,7 @@ protected:
     virtual bool DoOffset(wxCoord x, wxCoord y);
     virtual bool DoCombine(const wxRegion& region, wxRegionOp op);
 
-    friend class WXDLLEXPORT wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
 
     DECLARE_DYNAMIC_CLASS(wxRegion)
 };
diff --git a/include/wx/msw/registry.h b/include/wx/msw/registry.h
index f5e4124b63..fc297cfca7 100644
--- a/include/wx/msw/registry.h
+++ b/include/wx/msw/registry.h
@@ -12,7 +12,7 @@
 #ifndef _WX_MSW_REGISTRY_H_
 #define _WX_MSW_REGISTRY_H_
 
-class WXDLLIMPEXP_BASE wxOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxOutputStream;
 
 // ----------------------------------------------------------------------------
 // class wxRegKey encapsulates window HKEY handle
diff --git a/include/wx/msw/slider95.h b/include/wx/msw/slider95.h
index a1891f8d89..70ce173c71 100644
--- a/include/wx/msw/slider95.h
+++ b/include/wx/msw/slider95.h
@@ -12,7 +12,7 @@
 #ifndef _WX_SLIDER95_H_
 #define _WX_SLIDER95_H_
 
-class WXDLLEXPORT wxSubwindows;
+class WXDLLIMPEXP_FWD_CORE wxSubwindows;
 
 // Slider
 class WXDLLEXPORT wxSlider : public wxSliderBase
diff --git a/include/wx/msw/spinctrl.h b/include/wx/msw/spinctrl.h
index 2a5f56f5c0..2427369e45 100644
--- a/include/wx/msw/spinctrl.h
+++ b/include/wx/msw/spinctrl.h
@@ -18,7 +18,7 @@
 
 #include "wx/dynarray.h"
 
-class WXDLLEXPORT wxSpinCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxSpinCtrl *, wxArraySpins);
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/msw/tabctrl.h b/include/wx/msw/tabctrl.h
index 4e348af1d2..29b57c4b5b 100644
--- a/include/wx/msw/tabctrl.h
+++ b/include/wx/msw/tabctrl.h
@@ -12,7 +12,7 @@
 #ifndef _WX_TABCTRL_H_
 #define _WX_TABCTRL_H_
 
-class WXDLLIMPEXP_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 // extern WXDLLEXPORT_DATA(const wxChar) wxToolBarNameStr[];
 
diff --git a/include/wx/msw/taskbar.h b/include/wx/msw/taskbar.h
index 9533b19bc4..8dbbc96aac 100644
--- a/include/wx/msw/taskbar.h
+++ b/include/wx/msw/taskbar.h
@@ -16,7 +16,7 @@
 #include "wx/icon.h"
 
 // private helper class:
-class WXDLLIMPEXP_ADV wxTaskBarIconWindow;
+class WXDLLIMPEXP_FWD_ADV wxTaskBarIconWindow;
 
 class WXDLLIMPEXP_ADV wxTaskBarIcon: public wxTaskBarIconBase
 {
diff --git a/include/wx/msw/tooltip.h b/include/wx/msw/tooltip.h
index 8a3aed1844..d3cf88fc24 100644
--- a/include/wx/msw/tooltip.h
+++ b/include/wx/msw/tooltip.h
@@ -14,7 +14,7 @@
 
 #include "wx/object.h"
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 class WXDLLEXPORT wxToolTip : public wxObject
 {
diff --git a/include/wx/msw/treectrl.h b/include/wx/msw/treectrl.h
index 4e7f7ca231..117a79090c 100644
--- a/include/wx/msw/treectrl.h
+++ b/include/wx/msw/treectrl.h
@@ -32,7 +32,7 @@
 // fwd decl
 class  WXDLLEXPORT wxImageList;
 class  WXDLLEXPORT wxDragImage;
-struct WXDLLEXPORT wxTreeViewItem;
+struct WXDLLIMPEXP_FWD_CORE wxTreeViewItem;
 
 #if WXWIN_COMPATIBILITY_2_6
     // NB: all the following flags are for compatbility only and will be removed in the
diff --git a/include/wx/msw/wince/choicece.h b/include/wx/msw/wince/choicece.h
index 60558e4d08..3b827e73a4 100644
--- a/include/wx/msw/wince/choicece.h
+++ b/include/wx/msw/wince/choicece.h
@@ -22,7 +22,7 @@
 
 #include "wx/dynarray.h"
 
-class WXDLLEXPORT wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxChoice *, wxArrayChoiceSpins);
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/msw/wince/textctrlce.h b/include/wx/msw/wince/textctrlce.h
index 259a3daadb..d04b118fd1 100644
--- a/include/wx/msw/wince/textctrlce.h
+++ b/include/wx/msw/wince/textctrlce.h
@@ -14,7 +14,7 @@
 
 #include "wx/dynarray.h"
 
-class WXDLLEXPORT wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxTextCtrl *, wxArrayTextSpins);
 
 class WXDLLEXPORT wxTextCtrl : public wxTextCtrlBase
diff --git a/include/wx/object.h b/include/wx/object.h
index a65117de24..e24fc89e1c 100644
--- a/include/wx/object.h
+++ b/include/wx/object.h
@@ -19,8 +19,8 @@
 
 #include "wx/memory.h"
 
-class WXDLLIMPEXP_BASE wxObject;
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxObject;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
 #ifndef wxUSE_EXTENDED_RTTI
 #define wxUSE_EXTENDED_RTTI 0
@@ -65,12 +65,12 @@ class WXDLLIMPEXP_BASE wxString;
 // conditional compilation
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxClassInfo;
-class WXDLLIMPEXP_BASE wxHashTable;
-class WXDLLIMPEXP_BASE wxObject;
-class WXDLLIMPEXP_BASE wxPluginLibrary;
-class WXDLLIMPEXP_BASE wxObjectRefData;
-class WXDLLIMPEXP_BASE wxHashTable_Node;
+class WXDLLIMPEXP_FWD_BASE wxClassInfo;
+class WXDLLIMPEXP_FWD_BASE wxHashTable;
+class WXDLLIMPEXP_FWD_BASE wxObject;
+class WXDLLIMPEXP_FWD_BASE wxPluginLibrary;
+class WXDLLIMPEXP_FWD_BASE wxObjectRefData;
+class WXDLLIMPEXP_FWD_BASE wxHashTable_Node;
 
 // ----------------------------------------------------------------------------
 // wxClassInfo
@@ -80,7 +80,7 @@ typedef wxObject *(*wxObjectConstructorFn)(void);
 
 class WXDLLIMPEXP_BASE wxClassInfo
 {
-    friend class WXDLLIMPEXP_BASE wxObject;
+    friend class WXDLLIMPEXP_FWD_BASE wxObject;
     friend WXDLLIMPEXP_BASE wxObject *wxCreateDynamicObject(const wxString& name);
 public:
     wxClassInfo( const wxChar *className,
@@ -408,7 +408,7 @@ inline void* wxCheckCast(void *ptr)
 
 class WXDLLIMPEXP_BASE wxObjectRefData
 {
-    friend class WXDLLIMPEXP_BASE wxObject;
+    friend class WXDLLIMPEXP_FWD_BASE wxObject;
 
 public:
     wxObjectRefData() : m_count(1) { }
@@ -594,7 +594,7 @@ inline wxObject *wxCheckDynamicCast(wxObject *obj, wxClassInfo *classInfo)
 #if wxUSE_EXTENDED_RTTI
 class WXDLLIMPEXP_BASE wxDynamicObject : public wxObject
 {
-    friend class WXDLLIMPEXP_BASE wxDynamicClassInfo ;
+    friend class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo ;
 public:
     // instantiates this object with an instance of its superclass
     wxDynamicObject(wxObject* superClassInstance, const wxDynamicClassInfo *info) ;
diff --git a/include/wx/os2/accel.h b/include/wx/os2/accel.h
index 819c857ee2..21236393c9 100644
--- a/include/wx/os2/accel.h
+++ b/include/wx/os2/accel.h
@@ -14,7 +14,7 @@
 
 #include "wx/object.h"
 
-class WXDLLEXPORT wxAcceleratorTable;
+class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable;
 
 // Hold Ctrl key down
 #define wxACCEL_ALT     0x01
diff --git a/include/wx/os2/app.h b/include/wx/os2/app.h
index c97e1d4e93..13d3911521 100644
--- a/include/wx/os2/app.h
+++ b/include/wx/os2/app.h
@@ -37,11 +37,11 @@
 #include "wx/event.h"
 #include "wx/icon.h"
 
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxApp;
-class WXDLLEXPORT wxKeyEvent;
-class WXDLLEXPORT wxLog;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxLog;
 
 WXDLLEXPORT_DATA(extern wxApp*) wxTheApp;
 WXDLLEXPORT_DATA(extern HAB)    vHabmain;
diff --git a/include/wx/os2/bitmap.h b/include/wx/os2/bitmap.h
index 552cbe22d9..ef7f919bb8 100644
--- a/include/wx/os2/bitmap.h
+++ b/include/wx/os2/bitmap.h
@@ -17,15 +17,15 @@
 #include "wx/gdicmn.h"
 #include "wx/palette.h"
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxControl;
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxBitmapHandler;
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxMask;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxControl;
-class WXDLLEXPORT wxImage;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxMask;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 // ----------------------------------------------------------------------------
 // Bitmap data
diff --git a/include/wx/os2/brush.h b/include/wx/os2/brush.h
index c37808f3ef..9743686938 100644
--- a/include/wx/os2/brush.h
+++ b/include/wx/os2/brush.h
@@ -16,11 +16,11 @@
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 class WXDLLEXPORT wxBrushRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxBrush;
+    friend class WXDLLIMPEXP_FWD_CORE wxBrush;
 public:
     wxBrushRefData();
     wxBrushRefData(const wxBrushRefData& rData);
diff --git a/include/wx/os2/checkbox.h b/include/wx/os2/checkbox.h
index c2ea188dab..0e15c8e495 100644
--- a/include/wx/os2/checkbox.h
+++ b/include/wx/os2/checkbox.h
@@ -15,7 +15,7 @@
 #include "wx/control.h"
 
 // Checkbox item (single checkbox)
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase
 {
  public:
diff --git a/include/wx/os2/clipbrd.h b/include/wx/os2/clipbrd.h
index 729b956dfe..dfbd291c5e 100644
--- a/include/wx/os2/clipbrd.h
+++ b/include/wx/os2/clipbrd.h
@@ -50,7 +50,7 @@ WXDLLEXPORT bool wxGetClipboardFormatName(wxDataFormat dataFormat,
 // wxClipboard
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
 class WXDLLEXPORT wxClipboard : public wxClipboardBase
 {
     DECLARE_DYNAMIC_CLASS(wxClipboard)
diff --git a/include/wx/os2/dcclient.h b/include/wx/os2/dcclient.h
index f202a3b34b..fc18c8f8ae 100644
--- a/include/wx/os2/dcclient.h
+++ b/include/wx/os2/dcclient.h
@@ -24,7 +24,7 @@
 // ----------------------------------------------------------------------------
 
 // this one if used by wxPaintDC only
-struct WXDLLEXPORT wxPaintDCInfo;
+struct WXDLLIMPEXP_FWD_CORE wxPaintDCInfo;
 
 WX_DECLARE_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo);
 
diff --git a/include/wx/os2/dialog.h b/include/wx/os2/dialog.h
index 7c34ac3480..4a0d30a3f2 100644
--- a/include/wx/os2/dialog.h
+++ b/include/wx/os2/dialog.h
@@ -16,7 +16,7 @@
 
 WXDLLEXPORT_DATA(extern const wxChar) wxDialogNameStr[];
 
-class WXDLLEXPORT wxDialogModalData;
+class WXDLLIMPEXP_FWD_CORE wxDialogModalData;
 
 //
 // Dialog boxes
diff --git a/include/wx/os2/gdiimage.h b/include/wx/os2/gdiimage.h
index 4b645fe9da..7269022b2b 100644
--- a/include/wx/os2/gdiimage.h
+++ b/include/wx/os2/gdiimage.h
@@ -20,9 +20,9 @@
 #include "wx/gdicmn.h"          // wxBITMAP_TYPE_INVALID
 #include "wx/list.h"
 
-class WXDLLEXPORT wxGDIImageRefData;
-class WXDLLEXPORT wxGDIImageHandler;
-class WXDLLEXPORT wxGDIImage;
+class WXDLLIMPEXP_FWD_CORE wxGDIImageRefData;
+class WXDLLIMPEXP_FWD_CORE wxGDIImageHandler;
+class WXDLLIMPEXP_FWD_CORE wxGDIImage;
 
 WX_DECLARE_EXPORTED_LIST(wxGDIImageHandler, wxGDIImageHandlerList);
 
diff --git a/include/wx/os2/listbox.h b/include/wx/os2/listbox.h
index aad4af0780..012d913b09 100644
--- a/include/wx/os2/listbox.h
+++ b/include/wx/os2/listbox.h
@@ -17,7 +17,7 @@
 // ----------------------------------------------------------------------------
 
 #if wxUSE_OWNER_DRAWN
-    class WXDLLEXPORT wxOwnerDrawn;
+    class WXDLLIMPEXP_FWD_CORE wxOwnerDrawn;
 
     // define the array of list box items
     #include  "wx/dynarray.h"
diff --git a/include/wx/os2/listctrl.h b/include/wx/os2/listctrl.h
index ff50c28277..9240abb47a 100644
--- a/include/wx/os2/listctrl.h
+++ b/include/wx/os2/listctrl.h
@@ -20,7 +20,7 @@
 #include "wx/textctrl.h"
 
 
-class WXDLLEXPORT wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 typedef int (wxCALLBACK *wxListCtrlCompare)(long lItem1, long lItem2, long lSortData);
 
diff --git a/include/wx/os2/mdi.h b/include/wx/os2/mdi.h
index 7bea970db9..37f17ffd01 100644
--- a/include/wx/os2/mdi.h
+++ b/include/wx/os2/mdi.h
@@ -16,14 +16,14 @@
 
 #include "wx/frame.h"
 
-class WXDLLEXPORT wxMDIClientWindow;
-class WXDLLEXPORT wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
 class WXDLLEXPORT wxMDIParentFrame: public wxFrame
 {
 DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
 
-  friend class WXDLLEXPORT wxMDIChildFrame;
+  friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 public:
 
   wxMDIParentFrame();
diff --git a/include/wx/os2/menu.h b/include/wx/os2/menu.h
index b871f900e4..f7edd51be0 100644
--- a/include/wx/os2/menu.h
+++ b/include/wx/os2/menu.h
@@ -20,7 +20,7 @@
     WX_DEFINE_EXPORTED_ARRAY_PTR(wxAcceleratorEntry *, wxAcceleratorArray);
 #endif // wxUSE_ACCEL
 
-class WXDLLEXPORT wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 void wxSetShortCutKey(wxChar* zText);
 
diff --git a/include/wx/os2/metafile.h b/include/wx/os2/metafile.h
index d75be165e5..55cf236972 100644
--- a/include/wx/os2/metafile.h
+++ b/include/wx/os2/metafile.h
@@ -30,11 +30,11 @@
 #define wxMetaFile wxMetafile
 #define wxMetaFileDC wxMetafileDC
 
-class WXDLLEXPORT wxMetafile;
+class WXDLLIMPEXP_FWD_CORE wxMetafile;
 
 class WXDLLEXPORT wxMetafileRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxMetafile;
+    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 public:
     wxMetafileRefData(void);
     virtual ~wxMetafileRefData(void);
diff --git a/include/wx/os2/palette.h b/include/wx/os2/palette.h
index f6d7f0f92e..3f094805f2 100644
--- a/include/wx/os2/palette.h
+++ b/include/wx/os2/palette.h
@@ -15,11 +15,11 @@
 #include "wx/gdiobj.h"
 #include "wx/os2/private.h"
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPalette;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
     wxPaletteRefData();
     virtual ~wxPaletteRefData();
diff --git a/include/wx/os2/pen.h b/include/wx/os2/pen.h
index 151aef8118..a036a152a0 100644
--- a/include/wx/os2/pen.h
+++ b/include/wx/os2/pen.h
@@ -17,11 +17,11 @@
 
 typedef long wxPMDash;
 
-class WXDLLEXPORT wxPen;
+class WXDLLIMPEXP_FWD_CORE wxPen;
 
 class WXDLLEXPORT wxPenRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPen;
+    friend class WXDLLIMPEXP_FWD_CORE wxPen;
 public:
     wxPenRefData();
     wxPenRefData(const wxPenRefData& rData);
diff --git a/include/wx/os2/private.h b/include/wx/os2/private.h
index f4e7e99454..2dc0f10f7f 100644
--- a/include/wx/os2/private.h
+++ b/include/wx/os2/private.h
@@ -78,10 +78,10 @@
 #include "wx/dlimpexp.h"
 #include "wx/fontenc.h"
 
-class WXDLLEXPORT wxFont;
-class WXDLLEXPORT wxWindow;
-class WXDLLIMPEXP_BASE wxString;
-class WXDLLEXPORT wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_BASE wxString;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 // ---------------------------------------------------------------------------
 // private constants
diff --git a/include/wx/os2/radiobox.h b/include/wx/os2/radiobox.h
index eb790894ce..fbb8c60859 100644
--- a/include/wx/os2/radiobox.h
+++ b/include/wx/os2/radiobox.h
@@ -13,7 +13,7 @@
 #define _WX_RADIOBOX_H_
 
 // List box item
-class WXDLLEXPORT wxBitmap ;
+class WXDLLIMPEXP_FWD_CORE wxBitmap ;
 
 class WXDLLEXPORT wxRadioBox: public wxControl, public wxRadioBoxBase
 {
diff --git a/include/wx/os2/region.h b/include/wx/os2/region.h
index f4e2235cc0..22a48dc188 100644
--- a/include/wx/os2/region.h
+++ b/include/wx/os2/region.h
@@ -75,7 +75,7 @@ protected:
     virtual bool DoOffset(wxCoord x, wxCoord y);
     virtual bool DoCombine(const wxRegion& region, wxRegionOp op);
 
-    friend class WXDLLEXPORT wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
     DECLARE_DYNAMIC_CLASS(wxRegion);
 
 }; // end of CLASS wxRegion
diff --git a/include/wx/os2/spinctrl.h b/include/wx/os2/spinctrl.h
index 8e7feec3a4..c28c645ef3 100644
--- a/include/wx/os2/spinctrl.h
+++ b/include/wx/os2/spinctrl.h
@@ -14,7 +14,7 @@
 
 #include "wx/spinbutt.h"    // the base class
 #include "wx/dynarray.h"
-class WXDLLEXPORT wxSpinCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxSpinCtrl *, wxArraySpins);
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/os2/treectrl.h b/include/wx/os2/treectrl.h
index ae1ca33d04..ad33b1d81d 100644
--- a/include/wx/os2/treectrl.h
+++ b/include/wx/os2/treectrl.h
@@ -29,7 +29,7 @@ typedef long wxDataType;
 // fwd decl
 class  WXDLLEXPORT wxImageList;
 class  WXDLLEXPORT wxDragImage;
-struct WXDLLEXPORT wxTreeViewItem;
+struct WXDLLIMPEXP_FWD_CORE wxTreeViewItem;
 
 // a callback function used for sorting tree items, it should return -1 if the
 // first item precedes the second, +1 if the second precedes the first or 0 if
diff --git a/include/wx/os2/window.h b/include/wx/os2/window.h
index 4e035fa4df..9070497a44 100644
--- a/include/wx/os2/window.h
+++ b/include/wx/os2/window.h
@@ -34,7 +34,7 @@
 // forward declarations
 // ---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxButton;
+class WXDLLIMPEXP_FWD_CORE wxButton;
 
 // ---------------------------------------------------------------------------
 // wxWindow declaration for OS/2 PM
diff --git a/include/wx/overlay.h b/include/wx/overlay.h
index 2b6d267824..a5e2d97be6 100644
--- a/include/wx/overlay.h
+++ b/include/wx/overlay.h
@@ -28,8 +28,8 @@
 // internal code
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxOverlayImpl;
-class WXDLLEXPORT wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxOverlayImpl;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
 
 class WXDLLEXPORT wxOverlay
 {
@@ -45,7 +45,7 @@ public:
     wxOverlayImpl *GetImpl() { return m_impl; }
 
 private:
-    friend class WXDLLEXPORT wxDCOverlay;
+    friend class WXDLLIMPEXP_FWD_CORE wxDCOverlay;
 
     // returns true if it has been setup
     bool IsOk();
diff --git a/include/wx/palmos/app.h b/include/wx/palmos/app.h
index 4211588f04..4289b470c2 100644
--- a/include/wx/palmos/app.h
+++ b/include/wx/palmos/app.h
@@ -15,11 +15,11 @@
 #include "wx/event.h"
 #include "wx/icon.h"
 
-class WXDLLIMPEXP_CORE wxFrame;
-class WXDLLIMPEXP_CORE wxWindow;
-class WXDLLIMPEXP_CORE wxApp;
-class WXDLLIMPEXP_CORE wxKeyEvent;
-class WXDLLIMPEXP_BASE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_BASE wxLog;
 
 // Represents the application. Derive OnInit and declare
 // a new App object to start application
diff --git a/include/wx/palmos/bitmap.h b/include/wx/palmos/bitmap.h
index 71f4d9bef9..1dece9b6bd 100644
--- a/include/wx/palmos/bitmap.h
+++ b/include/wx/palmos/bitmap.h
@@ -16,20 +16,20 @@
 #include "wx/gdicmn.h"
 #include "wx/palette.h"
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxBitmapHandler;
-class WXDLLEXPORT wxBitmapRefData;
-class WXDLLEXPORT wxControl;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
+class WXDLLIMPEXP_FWD_CORE wxBitmapRefData;
+class WXDLLIMPEXP_FWD_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 #if wxUSE_WXDIB
-class WXDLLEXPORT wxDIB;
+class WXDLLIMPEXP_FWD_CORE wxDIB;
 #endif
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxMask;
-class WXDLLEXPORT wxPalette;
-class WXDLLEXPORT wxPixelDataBase;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxMask;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
 
 // ----------------------------------------------------------------------------
 // wxBitmap: a mono or colour bitmap
diff --git a/include/wx/palmos/brush.h b/include/wx/palmos/brush.h
index 4fce485d8e..6d45ab0298 100644
--- a/include/wx/palmos/brush.h
+++ b/include/wx/palmos/brush.h
@@ -16,7 +16,7 @@
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
 
 // ----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/palmos/checklst.h b/include/wx/palmos/checklst.h
index 0c28425e25..caf994612e 100644
--- a/include/wx/palmos/checklst.h
+++ b/include/wx/palmos/checklst.h
@@ -16,8 +16,8 @@
   #error  "wxCheckListBox class requires owner-drawn functionality."
 #endif
 
-class WXDLLEXPORT wxOwnerDrawn;
-class WXDLLEXPORT wxCheckListBoxItem; // fwd decl, defined in checklst.cpp
+class WXDLLIMPEXP_FWD_CORE wxOwnerDrawn;
+class WXDLLIMPEXP_FWD_CORE wxCheckListBoxItem; // fwd decl, defined in checklst.cpp
 
 class WXDLLEXPORT wxCheckListBox : public wxCheckListBoxBase
 {
diff --git a/include/wx/palmos/clipbrd.h b/include/wx/palmos/clipbrd.h
index 8d6e19fab9..c12699bbc0 100644
--- a/include/wx/palmos/clipbrd.h
+++ b/include/wx/palmos/clipbrd.h
@@ -47,7 +47,7 @@ WXDLLEXPORT bool wxGetClipboardFormatName(wxDataFormat dataFormat,
 // wxClipboard
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
 class WXDLLEXPORT wxClipboard : public wxObject
 {
     DECLARE_DYNAMIC_CLASS(wxClipboard)
diff --git a/include/wx/palmos/cursor.h b/include/wx/palmos/cursor.h
index f4e8a90e0d..856880890c 100644
--- a/include/wx/palmos/cursor.h
+++ b/include/wx/palmos/cursor.h
@@ -14,7 +14,7 @@
 
 #include "wx/palmos/gdiimage.h"
 
-class WXDLLEXPORT wxImage;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 // Cursor
 class WXDLLEXPORT wxCursor : public wxGDIImage
diff --git a/include/wx/palmos/dcclient.h b/include/wx/palmos/dcclient.h
index 8cf365c379..5ac553fbb7 100644
--- a/include/wx/palmos/dcclient.h
+++ b/include/wx/palmos/dcclient.h
@@ -24,7 +24,7 @@
 // ----------------------------------------------------------------------------
 
 // this one if used by wxPaintDC only
-struct WXDLLEXPORT wxPaintDCInfo;
+struct WXDLLIMPEXP_FWD_CORE wxPaintDCInfo;
 
 WX_DECLARE_EXPORTED_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo);
 
diff --git a/include/wx/palmos/dialog.h b/include/wx/palmos/dialog.h
index 7c9e3b1edf..ef6f5b3dcd 100644
--- a/include/wx/palmos/dialog.h
+++ b/include/wx/palmos/dialog.h
@@ -16,7 +16,7 @@
 
 WXDLLEXPORT_DATA(extern const wxChar) wxDialogNameStr[];
 
-class WXDLLEXPORT wxDialogModalData;
+class WXDLLIMPEXP_FWD_CORE wxDialogModalData;
 
 // Dialog boxes
 class WXDLLEXPORT wxDialog : public wxDialogBase
diff --git a/include/wx/palmos/dib.h b/include/wx/palmos/dib.h
index 38d4d67643..7b57fce36b 100644
--- a/include/wx/palmos/dib.h
+++ b/include/wx/palmos/dib.h
@@ -12,8 +12,8 @@
 #ifndef _WX_PALMOS_DIB_H_
 #define _WX_PALMOS_DIB_H_
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 #include "wx/msw/private.h"
 
diff --git a/include/wx/palmos/gdiimage.h b/include/wx/palmos/gdiimage.h
index edaa3553f5..5c2bfcdeba 100644
--- a/include/wx/palmos/gdiimage.h
+++ b/include/wx/palmos/gdiimage.h
@@ -20,9 +20,9 @@
 #include "wx/gdicmn.h"          // wxBITMAP_TYPE_INVALID
 #include "wx/list.h"
 
-class WXDLLEXPORT wxGDIImageRefData;
-class WXDLLEXPORT wxGDIImageHandler;
-class WXDLLEXPORT wxGDIImage;
+class WXDLLIMPEXP_FWD_CORE wxGDIImageRefData;
+class WXDLLIMPEXP_FWD_CORE wxGDIImageHandler;
+class WXDLLIMPEXP_FWD_CORE wxGDIImage;
 
 WX_DECLARE_EXPORTED_LIST(wxGDIImageHandler, wxGDIImageHandlerList);
 
diff --git a/include/wx/palmos/glcanvas.h b/include/wx/palmos/glcanvas.h
index 9a6097c9e6..5b0fded577 100644
--- a/include/wx/palmos/glcanvas.h
+++ b/include/wx/palmos/glcanvas.h
@@ -19,7 +19,7 @@
 
 #include <GL/gl.h>
 
-class WXDLLIMPEXP_GL wxGLCanvas;     /* forward reference */
+class WXDLLIMPEXP_FWD_GL wxGLCanvas;     /* forward reference */
 
 class WXDLLIMPEXP_GL wxGLContext: public wxObject
 {
diff --git a/include/wx/palmos/listbox.h b/include/wx/palmos/listbox.h
index 6275079fff..0f6e6e7578 100644
--- a/include/wx/palmos/listbox.h
+++ b/include/wx/palmos/listbox.h
@@ -19,7 +19,7 @@
 // ----------------------------------------------------------------------------
 
 #if wxUSE_OWNER_DRAWN
-  class WXDLLEXPORT wxOwnerDrawn;
+  class WXDLLIMPEXP_FWD_CORE wxOwnerDrawn;
 
   // define the array of list box items
   #include  "wx/dynarray.h"
diff --git a/include/wx/palmos/listctrl.h b/include/wx/palmos/listctrl.h
index 43a0883441..c7e6f6d2e2 100644
--- a/include/wx/palmos/listctrl.h
+++ b/include/wx/palmos/listctrl.h
@@ -20,7 +20,7 @@
 #include "wx/textctrl.h"
 
 
-class WXDLLEXPORT wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 /*
     The wxListCtrl can show lists of items in four different modes:
diff --git a/include/wx/palmos/mdi.h b/include/wx/palmos/mdi.h
index 7e4e9ab890..2743319b68 100644
--- a/include/wx/palmos/mdi.h
+++ b/include/wx/palmos/mdi.h
@@ -16,8 +16,8 @@
 
 WXDLLEXPORT_DATA(extern const wxChar) wxStatusLineNameStr[];
 
-class WXDLLEXPORT wxMDIClientWindow;
-class WXDLLEXPORT wxMDIChildFrame;
+class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow;
+class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
 // ---------------------------------------------------------------------------
 // wxMDIParentFrame
@@ -99,7 +99,7 @@ protected:
     bool m_parentFrameActive;
 
 private:
-    friend class WXDLLEXPORT wxMDIChildFrame;
+    friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
 
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
diff --git a/include/wx/palmos/menu.h b/include/wx/palmos/menu.h
index 9f8ea2e4c4..4980b4523c 100644
--- a/include/wx/palmos/menu.h
+++ b/include/wx/palmos/menu.h
@@ -19,10 +19,10 @@
     WX_DEFINE_EXPORTED_ARRAY_PTR(wxAcceleratorEntry *, wxAcceleratorArray);
 #endif // wxUSE_ACCEL
 
-class WXDLLEXPORT wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
 
 #if defined(__WXWINCE__) && wxUSE_TOOLBAR
-class WXDLLEXPORT wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
 #endif
 
 #include "wx/arrstr.h"
diff --git a/include/wx/palmos/metafile.h b/include/wx/palmos/metafile.h
index 0ca14ac864..ccbb807c26 100644
--- a/include/wx/palmos/metafile.h
+++ b/include/wx/palmos/metafile.h
@@ -23,11 +23,11 @@
 // Metafile and metafile device context classes
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxMetafile;
+class WXDLLIMPEXP_FWD_CORE wxMetafile;
 
 class WXDLLEXPORT wxMetafileRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxMetafile;
+    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 public:
     wxMetafileRefData();
     virtual ~wxMetafileRefData();
diff --git a/include/wx/palmos/palette.h b/include/wx/palmos/palette.h
index 690299c08c..668e05116f 100644
--- a/include/wx/palmos/palette.h
+++ b/include/wx/palmos/palette.h
@@ -14,11 +14,11 @@
 
 #include "wx/gdiobj.h"
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPalette;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
     wxPaletteRefData(void);
     virtual ~wxPaletteRefData(void);
diff --git a/include/wx/palmos/pen.h b/include/wx/palmos/pen.h
index 4edd52052f..41a7146509 100644
--- a/include/wx/palmos/pen.h
+++ b/include/wx/palmos/pen.h
@@ -18,7 +18,7 @@
 
 typedef WXDWORD wxMSWDash;
 
-class WXDLLEXPORT wxPen;
+class WXDLLIMPEXP_FWD_CORE wxPen;
 
 // VZ: this class should be made private
 class WXDLLEXPORT wxPenRefData : public wxGDIRefData
@@ -54,7 +54,7 @@ protected:
     WXHPEN        m_hPen;
 
 private:
-    friend class WXDLLEXPORT wxPen;
+    friend class WXDLLIMPEXP_FWD_CORE wxPen;
 
     // Cannot use
     //  DECLARE_NO_COPY_CLASS(wxPenRefData)
diff --git a/include/wx/palmos/printdlg.h b/include/wx/palmos/printdlg.h
index d20d0ebc64..3276d0e6f0 100644
--- a/include/wx/palmos/printdlg.h
+++ b/include/wx/palmos/printdlg.h
@@ -17,7 +17,7 @@
 #include "wx/dialog.h"
 #include "wx/cmndata.h"
 
-class WXDLLEXPORT wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDC;
 
 // ---------------------------------------------------------------------------
 // wxPrinterDialog: the common dialog for printing.
diff --git a/include/wx/palmos/radiobox.h b/include/wx/palmos/radiobox.h
index a018e6e669..4b34521de5 100644
--- a/include/wx/palmos/radiobox.h
+++ b/include/wx/palmos/radiobox.h
@@ -12,8 +12,8 @@
 #ifndef _WX_RADIOBOX_H_
 #define _WX_RADIOBOX_H_
 
-class WXDLLEXPORT wxBitmap;
-class WXDLLEXPORT wxRadioButton;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxRadioButton;
 
 // ----------------------------------------------------------------------------
 // wxRadioBox
diff --git a/include/wx/palmos/region.h b/include/wx/palmos/region.h
index 8a7479bbe6..5e973f8073 100644
--- a/include/wx/palmos/region.h
+++ b/include/wx/palmos/region.h
@@ -55,7 +55,7 @@ protected:
     virtual bool DoOffset(wxCoord x, wxCoord y);
     virtual bool DoCombine(const wxRegion& region, wxRegionOp op);
 
-    friend class WXDLLEXPORT wxRegionIterator;
+    friend class WXDLLIMPEXP_FWD_CORE wxRegionIterator;
 
     DECLARE_DYNAMIC_CLASS(wxRegion)
 };
diff --git a/include/wx/palmos/spinctrl.h b/include/wx/palmos/spinctrl.h
index 865f08b035..d0237f1346 100644
--- a/include/wx/palmos/spinctrl.h
+++ b/include/wx/palmos/spinctrl.h
@@ -16,7 +16,7 @@
 
 #include "wx/dynarray.h"
 
-class WXDLLEXPORT wxSpinCtrl;
+class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxSpinCtrl *, wxArraySpins);
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/palmos/taskbar.h b/include/wx/palmos/taskbar.h
index 5c3231b898..8a5b6e46be 100644
--- a/include/wx/palmos/taskbar.h
+++ b/include/wx/palmos/taskbar.h
@@ -15,7 +15,7 @@
 #include "wx/icon.h"
 
 // private helper class:
-class WXDLLIMPEXP_ADV wxTaskBarIconWindow;
+class WXDLLIMPEXP_FWD_ADV wxTaskBarIconWindow;
 
 class WXDLLIMPEXP_ADV wxTaskBarIcon: public wxTaskBarIconBase
 {
diff --git a/include/wx/palmos/treectrl.h b/include/wx/palmos/treectrl.h
index c56ea51238..7c235454df 100644
--- a/include/wx/palmos/treectrl.h
+++ b/include/wx/palmos/treectrl.h
@@ -26,7 +26,7 @@
 // fwd decl
 class  WXDLLEXPORT wxImageList;
 class  WXDLLEXPORT wxDragImage;
-struct WXDLLEXPORT wxTreeViewItem;
+struct WXDLLIMPEXP_FWD_CORE wxTreeViewItem;
 
 // hash storing attributes for our items
 WX_DECLARE_EXPORTED_VOIDPTR_HASH_MAP(wxTreeItemAttr *, wxMapTreeAttr);
diff --git a/include/wx/paper.h b/include/wx/paper.h
index 1f26fbd102..2d2bf3f7b5 100644
--- a/include/wx/paper.h
+++ b/include/wx/paper.h
@@ -68,7 +68,7 @@ private:
 
 WX_DECLARE_STRING_HASH_MAP(wxPrintPaperType*, wxStringToPrintPaperTypeHashMap);
 
-class WXDLLEXPORT wxPrintPaperTypeList;
+class WXDLLIMPEXP_FWD_CORE wxPrintPaperTypeList;
 
 class WXDLLEXPORT wxPrintPaperDatabase
 {
diff --git a/include/wx/pickerbase.h b/include/wx/pickerbase.h
index 8fc0846b2a..b7a696d7eb 100644
--- a/include/wx/pickerbase.h
+++ b/include/wx/pickerbase.h
@@ -16,8 +16,8 @@
 #include "wx/sizer.h"
 #include "wx/containr.h"
 
-class WXDLLIMPEXP_CORE wxTextCtrl;
-class WXDLLEXPORT wxToolTip;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxToolTip;
 
 extern WXDLLEXPORT_DATA(const wxChar) wxButtonNameStr[];
 
diff --git a/include/wx/popupwin.h b/include/wx/popupwin.h
index e9d5ef6485..dc2ede540f 100644
--- a/include/wx/popupwin.h
+++ b/include/wx/popupwin.h
@@ -77,8 +77,8 @@ public:
 // when the user clicks mouse outside it or if it loses focus in any other way
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxPopupWindowHandler;
-class WXDLLEXPORT wxPopupFocusHandler;
+class WXDLLIMPEXP_FWD_CORE wxPopupWindowHandler;
+class WXDLLIMPEXP_FWD_CORE wxPopupFocusHandler;
 
 class WXDLLEXPORT wxPopupTransientWindow : public wxPopupWindow
 {
@@ -157,8 +157,8 @@ protected:
 // wxPopupComboWindow: wxPopupTransientWindow used by wxComboBox
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxComboBox;
-class WXDLLEXPORT wxComboCtrl;
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxComboCtrl;
 
 class WXDLLEXPORT wxPopupComboWindow : public wxPopupTransientWindow
 {
diff --git a/include/wx/private/overlay.h b/include/wx/private/overlay.h
index 71b265014f..06c5c641bc 100644
--- a/include/wx/private/overlay.h
+++ b/include/wx/private/overlay.h
@@ -28,7 +28,7 @@
 
 #include "wx/bitmap.h"
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // generic implementation of wxOverlay
 class wxOverlayImpl
diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h
index d8eb3c27a1..fbeeca8090 100644
--- a/include/wx/prntbase.h
+++ b/include/wx/prntbase.h
@@ -23,21 +23,21 @@
 #include "wx/dialog.h"
 #include "wx/frame.h"
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxChoice;
-class WXDLLEXPORT wxPrintout;
-class WXDLLEXPORT wxPrinterBase;
-class WXDLLEXPORT wxPrintDialogBase;
-class WXDLLEXPORT wxPrintDialog;
-class WXDLLEXPORT wxPageSetupDialogBase;
-class WXDLLEXPORT wxPageSetupDialog;
-class WXDLLEXPORT wxPrintPreviewBase;
-class WXDLLEXPORT wxPreviewCanvas;
-class WXDLLEXPORT wxPreviewControlBar;
-class WXDLLEXPORT wxPreviewFrame;
-class WXDLLEXPORT wxPrintFactory;
-class WXDLLEXPORT wxPrintNativeDataBase;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxChoice;
+class WXDLLIMPEXP_FWD_CORE wxPrintout;
+class WXDLLIMPEXP_FWD_CORE wxPrinterBase;
+class WXDLLIMPEXP_FWD_CORE wxPrintDialogBase;
+class WXDLLIMPEXP_FWD_CORE wxPrintDialog;
+class WXDLLIMPEXP_FWD_CORE wxPageSetupDialogBase;
+class WXDLLIMPEXP_FWD_CORE wxPageSetupDialog;
+class WXDLLIMPEXP_FWD_CORE wxPrintPreviewBase;
+class WXDLLIMPEXP_FWD_CORE wxPreviewCanvas;
+class WXDLLIMPEXP_FWD_CORE wxPreviewControlBar;
+class WXDLLIMPEXP_FWD_CORE wxPreviewFrame;
+class WXDLLIMPEXP_FWD_CORE wxPrintFactory;
+class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase;
 
 //----------------------------------------------------------------------------
 // error consts
diff --git a/include/wx/quantize.h b/include/wx/quantize.h
index db6110dc62..6726d176f9 100644
--- a/include/wx/quantize.h
+++ b/include/wx/quantize.h
@@ -22,8 +22,8 @@
  * For conditions of distribution and use, see the accompanying README file.
  */
 
-class WXDLLEXPORT wxImage;
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 /*
  * wxQuantize
diff --git a/include/wx/radiobox.h b/include/wx/radiobox.h
index 31948da68d..a91b8c5ebd 100644
--- a/include/wx/radiobox.h
+++ b/include/wx/radiobox.h
@@ -20,7 +20,7 @@
 
 #include "wx/dynarray.h"
 
-class WXDLLEXPORT wxToolTip;
+class WXDLLIMPEXP_FWD_CORE wxToolTip;
 
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxToolTip *, wxToolTipArray);
 
diff --git a/include/wx/regex.h b/include/wx/regex.h
index 7f9b2c04b0..9889d34777 100644
--- a/include/wx/regex.h
+++ b/include/wx/regex.h
@@ -16,7 +16,7 @@
 
 #if wxUSE_REGEX
 
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
 // ----------------------------------------------------------------------------
 // constants
@@ -68,7 +68,7 @@ enum
 // wxRegEx: a regular expression
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxRegExImpl;
+class WXDLLIMPEXP_FWD_BASE wxRegExImpl;
 
 class WXDLLIMPEXP_BASE wxRegEx
 {
diff --git a/include/wx/region.h b/include/wx/region.h
index 1d038a6cbf..eede02e617 100644
--- a/include/wx/region.h
+++ b/include/wx/region.h
@@ -15,9 +15,9 @@
 #include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLEXPORT wxColour;
-class WXDLLEXPORT wxRegion;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxRegion;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/renderer.h b/include/wx/renderer.h
index 79e8a0c2a3..14ffb00d94 100644
--- a/include/wx/renderer.h
+++ b/include/wx/renderer.h
@@ -25,8 +25,8 @@
 #ifndef _WX_RENDERER_H_
 #define _WX_RENDERER_H_
 
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 #include "wx/gdicmn.h" // for wxPoint
 #include "wx/colour.h"
diff --git a/include/wx/richtext/richtextbuffer.h b/include/wx/richtext/richtextbuffer.h
index 8aa5c2136a..b8d2912ed9 100644
--- a/include/wx/richtext/richtextbuffer.h
+++ b/include/wx/richtext/richtextbuffer.h
@@ -91,19 +91,19 @@ extern WXDLLIMPEXP_RICHTEXT const wxChar wxRichTextLineBreakChar;
  * Forward declarations
  */
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextCtrl;
-class WXDLLIMPEXP_RICHTEXT wxRichTextObject;
-class WXDLLIMPEXP_RICHTEXT wxRichTextCacheObject;
-class WXDLLIMPEXP_RICHTEXT wxRichTextObjectList;
-class WXDLLIMPEXP_RICHTEXT wxRichTextLine;
-class WXDLLIMPEXP_RICHTEXT wxRichTextParagraph;
-class WXDLLIMPEXP_RICHTEXT wxRichTextFileHandler;
-class WXDLLIMPEXP_RICHTEXT wxRichTextStyleSheet;
-class WXDLLIMPEXP_RICHTEXT wxTextAttrEx;
-class WXDLLIMPEXP_RICHTEXT wxRichTextListStyleDefinition;
-class WXDLLIMPEXP_RICHTEXT wxRichTextEvent;
-class WXDLLIMPEXP_RICHTEXT wxRichTextRenderer;
-class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCtrl;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextObject;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCacheObject;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextObjectList;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextLine;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextParagraph;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextFileHandler;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextStyleSheet;
+class WXDLLIMPEXP_FWD_RICHTEXT wxTextAttrEx;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextListStyleDefinition;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextEvent;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextRenderer;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextBuffer;
 
 /*!
  * Flags determining the available space, passed to Layout
@@ -1460,8 +1460,8 @@ protected:
  * wxRichTextImageBlock stores information about an image, in binary in-memory form
  */
 
-class WXDLLIMPEXP_BASE wxDataInputStream;
-class WXDLLIMPEXP_BASE wxDataOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxDataInputStream;
+class WXDLLIMPEXP_FWD_BASE wxDataOutputStream;
 
 class WXDLLIMPEXP_RICHTEXT wxRichTextImageBlock: public wxObject
 {
@@ -1608,8 +1608,8 @@ protected:
  * This is a kind of box, used to represent the whole buffer
  */
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextCommand;
-class WXDLLIMPEXP_RICHTEXT wxRichTextAction;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCommand;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextAction;
 
 class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer: public wxRichTextParagraphLayoutBox
 {
@@ -1998,7 +1998,7 @@ enum wxRichTextCommandId
  *
  */
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextAction;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextAction;
 class WXDLLIMPEXP_RICHTEXT wxRichTextCommand: public wxCommand
 {
 public:
diff --git a/include/wx/richtext/richtextctrl.h b/include/wx/richtext/richtextctrl.h
index 1cd42ec016..7ad2a54c77 100644
--- a/include/wx/richtext/richtextctrl.h
+++ b/include/wx/richtext/richtextctrl.h
@@ -27,7 +27,7 @@
 #define wxRICHTEXT_BUFFERED_PAINTING 0
 #endif
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextStyleDefinition;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextStyleDefinition;
 
 /*!
  * Styles and flags
diff --git a/include/wx/richtext/richtextformatdlg.h b/include/wx/richtext/richtextformatdlg.h
index 2e78084bac..3e2726342b 100644
--- a/include/wx/richtext/richtextformatdlg.h
+++ b/include/wx/richtext/richtextformatdlg.h
@@ -30,8 +30,8 @@
 #include "wx/richtext/richtextbuffer.h"
 #include "wx/richtext/richtextstyles.h"
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog;
-class WXDLLIMPEXP_CORE wxImageList;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextFormattingDialog;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 /*!
  * Flags determining the pages and buttons to be created in the dialog
diff --git a/include/wx/richtext/richtextstyles.h b/include/wx/richtext/richtextstyles.h
index 104e1a0bdb..96659e7f9d 100644
--- a/include/wx/richtext/richtextstyles.h
+++ b/include/wx/richtext/richtextstyles.h
@@ -36,8 +36,8 @@
  * Forward declarations
  */
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextCtrl;
-class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCtrl;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextBuffer;
 
 /*!
  * wxRichTextStyleDefinition class declaration
diff --git a/include/wx/richtext/richtextxml.h b/include/wx/richtext/richtextxml.h
index ef282fc67e..5399ab5e32 100644
--- a/include/wx/richtext/richtextxml.h
+++ b/include/wx/richtext/richtextxml.h
@@ -25,7 +25,7 @@
  * wxRichTextXMLHandler
  */
 
-class WXDLLIMPEXP_XML wxXmlNode;
+class WXDLLIMPEXP_FWD_XML wxXmlNode;
 
 class WXDLLIMPEXP_RICHTEXT wxRichTextXMLHandler: public wxRichTextFileHandler
 {
diff --git a/include/wx/sckipc.h b/include/wx/sckipc.h
index 6611cc8593..a131e2b1fd 100644
--- a/include/wx/sckipc.h
+++ b/include/wx/sckipc.h
@@ -49,8 +49,8 @@
  *
  */
 
-class WXDLLIMPEXP_NET wxTCPServer;
-class WXDLLIMPEXP_NET wxTCPClient;
+class WXDLLIMPEXP_FWD_NET wxTCPServer;
+class WXDLLIMPEXP_FWD_NET wxTCPClient;
 
 class WXDLLIMPEXP_NET wxTCPConnection: public wxConnectionBase
 {
diff --git a/include/wx/scrolwin.h b/include/wx/scrolwin.h
index 485195577d..e7660e93ea 100644
--- a/include/wx/scrolwin.h
+++ b/include/wx/scrolwin.h
@@ -14,8 +14,8 @@
 
 #include "wx/panel.h"
 
-class WXDLLEXPORT wxScrollHelperEvtHandler;
-class WXDLLEXPORT wxTimer;
+class WXDLLIMPEXP_FWD_CORE wxScrollHelperEvtHandler;
+class WXDLLIMPEXP_FWD_CORE wxTimer;
 
 // default scrolled window style: scroll in both directions
 #define wxScrolledWindowStyle (wxHSCROLL | wxVSCROLL)
diff --git a/include/wx/settings.h b/include/wx/settings.h
index 304c225e30..8b467f51ce 100644
--- a/include/wx/settings.h
+++ b/include/wx/settings.h
@@ -15,7 +15,7 @@
 #include "wx/colour.h"
 #include "wx/font.h"
 
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // possible values for wxSystemSettings::GetFont() parameter
 //
diff --git a/include/wx/sizer.h b/include/wx/sizer.h
index ea5803beba..40f32e6e19 100644
--- a/include/wx/sizer.h
+++ b/include/wx/sizer.h
@@ -20,10 +20,10 @@
 // classes
 //---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxButton;
-class WXDLLEXPORT wxBoxSizer;
-class WXDLLEXPORT wxSizerItem;
-class WXDLLEXPORT wxSizer;
+class WXDLLIMPEXP_FWD_CORE wxButton;
+class WXDLLIMPEXP_FWD_CORE wxBoxSizer;
+class WXDLLIMPEXP_FWD_CORE wxSizerItem;
+class WXDLLIMPEXP_FWD_CORE wxSizer;
 
 #ifndef wxUSE_BORDER_BY_DEFAULT
     #ifdef __SMARTPHONE__
@@ -853,7 +853,7 @@ private:
 
 #if wxUSE_STATBOX
 
-class WXDLLEXPORT wxStaticBox;
+class WXDLLIMPEXP_FWD_CORE wxStaticBox;
 
 class WXDLLEXPORT wxStaticBoxSizer: public wxBoxSizer
 {
diff --git a/include/wx/snglinst.h b/include/wx/snglinst.h
index da34c90e5a..a060048360 100644
--- a/include/wx/snglinst.h
+++ b/include/wx/snglinst.h
@@ -55,7 +55,7 @@ private:
     void Init() { m_impl = NULL; }
 
     // the implementation details (platform specific)
-    class WXDLLIMPEXP_BASE wxSingleInstanceCheckerImpl *m_impl;
+    class WXDLLIMPEXP_FWD_BASE wxSingleInstanceCheckerImpl *m_impl;
 
     DECLARE_NO_COPY_CLASS(wxSingleInstanceChecker)
 };
diff --git a/include/wx/stackwalk.h b/include/wx/stackwalk.h
index 911d28fdf8..144dbd8e6d 100644
--- a/include/wx/stackwalk.h
+++ b/include/wx/stackwalk.h
@@ -16,7 +16,7 @@
 
 #if wxUSE_STACKWALKER
 
-class WXDLLIMPEXP_BASE wxStackFrame;
+class WXDLLIMPEXP_FWD_BASE wxStackFrame;
 
 // ----------------------------------------------------------------------------
 // wxStackFrame: a single stack level
diff --git a/include/wx/stc/stc.h b/include/wx/stc/stc.h
index bd36f73a31..c36ca88671 100644
--- a/include/wx/stc/stc.h
+++ b/include/wx/stc/stc.h
@@ -28,7 +28,7 @@
 #include "wx/dnd.h"
 #include "wx/stopwatch.h"
 
-class WXDLLIMPEXP_CORE wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxScrollBar;
 
 // SWIG can't handle "#if" type of conditionals, only "#ifdef"
 #ifdef SWIG
@@ -1797,8 +1797,8 @@ struct SCNotification;
 
 #ifndef SWIG
 extern WXDLLIMPEXP_STC const wxChar* wxSTCNameStr;
-class  WXDLLIMPEXP_STC wxStyledTextCtrl;
-class  WXDLLIMPEXP_STC wxStyledTextEvent;
+class WXDLLIMPEXP_FWD_STC wxStyledTextCtrl;
+class WXDLLIMPEXP_FWD_STC wxStyledTextEvent;
 #endif
 
 //----------------------------------------------------------------------
diff --git a/include/wx/strconv.h b/include/wx/strconv.h
index b36ad0b862..2cd26bd30d 100644
--- a/include/wx/strconv.h
+++ b/include/wx/strconv.h
@@ -29,7 +29,7 @@
 
 #if wxUSE_WCHAR_T
 
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
 // the error value returned by wxMBConv methods
 #define wxCONV_FAILED ((size_t)-1)
diff --git a/include/wx/stream.h b/include/wx/stream.h
index ebdda32f34..73522f1c37 100644
--- a/include/wx/stream.h
+++ b/include/wx/stream.h
@@ -21,9 +21,9 @@
 #include "wx/string.h"
 #include "wx/filefn.h"  // for wxFileOffset, wxInvalidOffset and wxSeekMode
 
-class WXDLLIMPEXP_BASE wxStreamBase;
-class WXDLLIMPEXP_BASE wxInputStream;
-class WXDLLIMPEXP_BASE wxOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxStreamBase;
+class WXDLLIMPEXP_FWD_BASE wxInputStream;
+class WXDLLIMPEXP_FWD_BASE wxOutputStream;
 
 typedef wxInputStream& (*__wxInputManip)(wxInputStream&);
 typedef wxOutputStream& (*__wxOutputManip)(wxOutputStream&);
diff --git a/include/wx/string.h b/include/wx/string.h
index ac8c35b8bf..83d702c5bc 100644
--- a/include/wx/string.h
+++ b/include/wx/string.h
@@ -59,7 +59,7 @@
 #include "wx/stringops.h"
 #include "wx/unichar.h"
 
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
 // unless this symbol is predefined to disable the compatibility functions, do
 // use them
@@ -276,7 +276,7 @@ private:
     size_t m_offset;
     bool m_owned;
 
-    friend class WXDLLIMPEXP_BASE wxString;
+    friend class WXDLLIMPEXP_FWD_BASE wxString;
 };
 
 // ----------------------------------------------------------------------------
@@ -652,13 +652,13 @@ public:
           /* for internal wxString use only: */                             \
           underlying_iterator impl() const { return m_cur; }                \
                                                                             \
-          friend class WXDLLIMPEXP_BASE wxString;                           \
-          friend class WXDLLIMPEXP_BASE wxCStrData;                         \
+          friend class wxString;                                            \
+          friend class wxCStrData;                                          \
                                                                             \
       private:                                                              \
           underlying_iterator m_cur
 
-  class WXDLLIMPEXP_BASE const_iterator;
+  class WXDLLIMPEXP_FWD_BASE const_iterator;
 
 #if wxUSE_UNICODE_UTF8
   // NB: In UTF-8 build, (non-const) iterator needs to keep reference
@@ -2627,11 +2627,11 @@ private:
 
   wxStringIteratorNodeHead m_iterators;
 
-  friend class WXDLLIMPEXP_BASE wxStringIteratorNode;
-  friend class WXDLLIMPEXP_BASE wxUniCharRef;
+  friend class WXDLLIMPEXP_FWD_BASE wxStringIteratorNode;
+  friend class WXDLLIMPEXP_FWD_BASE wxUniCharRef;
 #endif // wxUSE_UNICODE_UTF8
 
-  friend class WXDLLIMPEXP_BASE wxCStrData;
+  friend class WXDLLIMPEXP_FWD_BASE wxCStrData;
   friend class wxImplStringBuffer;
   friend class wxImplStringBufferLength;
 };
diff --git a/include/wx/stringimpl.h b/include/wx/stringimpl.h
index 6f4f8fba63..c7029974c9 100644
--- a/include/wx/stringimpl.h
+++ b/include/wx/stringimpl.h
@@ -257,14 +257,14 @@ public:
         /* for wxStringImpl use only */                                       \
         operator pointer() const { return m_ptr; }                            \
                                                                               \
-        friend class WXDLLIMPEXP_BASE wxStringImpl;                           \
+        friend class wxStringImpl;                                            \
                                                                               \
         pointer m_ptr
 
   // we need to declare const_iterator in wxStringImpl scope, the friend
   // declaration inside iterator class itself is not enough, or at least not
   // for g++ 3.4 (g++ 4 is ok)
-  class WXDLLIMPEXP_BASE const_iterator;
+  class WXDLLIMPEXP_FWD_BASE const_iterator;
 
   class WXDLLIMPEXP_BASE iterator
   {
@@ -547,7 +547,7 @@ public:
   void DoUngetWriteBuf();
   void DoUngetWriteBuf(size_t nLen);
 
-  friend class WXDLLIMPEXP_BASE wxString;
+  friend class WXDLLIMPEXP_FWD_BASE wxString;
 };
 
 #endif // !wxUSE_STL_BASED_WXSTRING
diff --git a/include/wx/strvararg.h b/include/wx/strvararg.h
index 8e40bd1ff1..2e6f3033a4 100644
--- a/include/wx/strvararg.h
+++ b/include/wx/strvararg.h
@@ -22,8 +22,8 @@
 #include "wx/buffer.h"
 #include "wx/unichar.h"
 
-class WXDLLIMPEXP_BASE wxCStrData;
-class WXDLLIMPEXP_BASE wxString;
+class WXDLLIMPEXP_FWD_BASE wxCStrData;
+class WXDLLIMPEXP_FWD_BASE wxString;
 
 // ----------------------------------------------------------------------------
 // WX_DEFINE_VARARG_FUNC* macros
diff --git a/include/wx/taskbar.h b/include/wx/taskbar.h
index c7763b3b83..799792b7bb 100644
--- a/include/wx/taskbar.h
+++ b/include/wx/taskbar.h
@@ -18,7 +18,7 @@
 
 #include "wx/event.h"
 
-class WXDLLIMPEXP_ADV wxTaskBarIconEvent;
+class WXDLLIMPEXP_FWD_ADV wxTaskBarIconEvent;
 
 // ----------------------------------------------------------------------------
 // wxTaskBarIconBase: define wxTaskBarIcon interface
diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h
index 96920150b9..8c4b93543b 100644
--- a/include/wx/tbarbase.h
+++ b/include/wx/tbarbase.h
@@ -24,9 +24,9 @@
 #include "wx/list.h"
 #include "wx/control.h"
 
-class WXDLLEXPORT wxToolBarBase;
-class WXDLLEXPORT wxToolBarToolBase;
-class WXDLLEXPORT wxImage;
+class WXDLLIMPEXP_FWD_CORE wxToolBarBase;
+class WXDLLIMPEXP_FWD_CORE wxToolBarToolBase;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h
index 1314ef112f..5494405586 100644
--- a/include/wx/textctrl.h
+++ b/include/wx/textctrl.h
@@ -39,8 +39,8 @@
     #define wxHAS_TEXT_WINDOW_STREAM 0
 #endif
 
-class WXDLLEXPORT wxTextCtrl;
-class WXDLLEXPORT wxTextCtrlBase;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrlBase;
 
 // ----------------------------------------------------------------------------
 // wxTextCtrl types
diff --git a/include/wx/thread.h b/include/wx/thread.h
index 34b632b39c..10c30ead59 100644
--- a/include/wx/thread.h
+++ b/include/wx/thread.h
@@ -110,11 +110,11 @@ enum wxMutexType
 };
 
 // forward declarations
-class WXDLLIMPEXP_BASE wxThreadHelper;
-class WXDLLIMPEXP_BASE wxConditionInternal;
-class WXDLLIMPEXP_BASE wxMutexInternal;
-class WXDLLIMPEXP_BASE wxSemaphoreInternal;
-class WXDLLIMPEXP_BASE wxThreadInternal;
+class WXDLLIMPEXP_FWD_BASE wxThreadHelper;
+class WXDLLIMPEXP_FWD_BASE wxConditionInternal;
+class WXDLLIMPEXP_FWD_BASE wxMutexInternal;
+class WXDLLIMPEXP_FWD_BASE wxSemaphoreInternal;
+class WXDLLIMPEXP_FWD_BASE wxThreadInternal;
 
 // ----------------------------------------------------------------------------
 // A mutex object is a synchronization object whose state is set to signaled
diff --git a/include/wx/timer.h b/include/wx/timer.h
index 3135963190..8c6e01625b 100644
--- a/include/wx/timer.h
+++ b/include/wx/timer.h
@@ -32,7 +32,7 @@
 // only send the notification once and then stop the timer
 #define wxTIMER_ONE_SHOT true
 
-class WXDLLIMPEXP_BASE wxTimerImpl;
+class WXDLLIMPEXP_FWD_BASE wxTimerImpl;
 
 // the interface of wxTimer class
 class WXDLLIMPEXP_BASE wxTimer : public wxEvtHandler
diff --git a/include/wx/tipwin.h b/include/wx/tipwin.h
index 75588a5a3e..898ca6805f 100644
--- a/include/wx/tipwin.h
+++ b/include/wx/tipwin.h
@@ -26,7 +26,7 @@
 #endif
 #include "wx/arrstr.h"
 
-class WXDLLEXPORT wxTipWindowView;
+class WXDLLIMPEXP_FWD_CORE wxTipWindowView;
 
 // ----------------------------------------------------------------------------
 // wxTipWindow
diff --git a/include/wx/toolbook.h b/include/wx/toolbook.h
index f829b796b4..404933ee50 100644
--- a/include/wx/toolbook.h
+++ b/include/wx/toolbook.h
@@ -18,8 +18,8 @@
 
 #include "wx/bookctrl.h"
 
-class WXDLLEXPORT wxToolBarBase;
-class WXDLLEXPORT wxCommandEvent;
+class WXDLLIMPEXP_FWD_CORE wxToolBarBase;
+class WXDLLIMPEXP_FWD_CORE wxCommandEvent;
 
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED;
 extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING;
diff --git a/include/wx/toplevel.h b/include/wx/toplevel.h
index f10caf9f33..1a20a04658 100644
--- a/include/wx/toplevel.h
+++ b/include/wx/toplevel.h
@@ -25,7 +25,7 @@
 // the default names for various classes
 extern WXDLLEXPORT_DATA(const wxChar) wxFrameNameStr[];
 
-class WXDLLEXPORT wxTopLevelWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxTopLevelWindowBase;
 
 // ----------------------------------------------------------------------------
 // constants
diff --git a/include/wx/treebase.h b/include/wx/treebase.h
index 59127ef63f..c706914558 100644
--- a/include/wx/treebase.h
+++ b/include/wx/treebase.h
@@ -101,8 +101,8 @@ inline bool operator!=(const wxTreeItemId& i1, const wxTreeItemId& i2)
 
 class WXDLLEXPORT wxTreeItemData: public wxClientData
 {
-friend class WXDLLEXPORT wxTreeCtrl;
-friend class WXDLLEXPORT wxGenericTreeCtrl;
+friend class WXDLLIMPEXP_FWD_CORE wxTreeCtrl;
+friend class WXDLLIMPEXP_FWD_CORE wxGenericTreeCtrl;
 public:
     // creation/destruction
     // --------------------
@@ -263,7 +263,7 @@ private:
 //     descriptions below
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT  wxTreeCtrlBase;
+class WXDLLIMPEXP_FWD_CORE wxTreeCtrlBase;
 
 class WXDLLEXPORT wxTreeEvent : public wxNotifyEvent
 {
@@ -318,8 +318,8 @@ private:
     wxString      m_label;
     bool          m_editCancelled;
 
-    friend class WXDLLEXPORT wxTreeCtrl;
-    friend class WXDLLEXPORT wxGenericTreeCtrl;
+    friend class WXDLLIMPEXP_FWD_CORE wxTreeCtrl;
+    friend class WXDLLIMPEXP_FWD_CORE wxGenericTreeCtrl;
 
     DECLARE_DYNAMIC_CLASS(wxTreeEvent)
 };
diff --git a/include/wx/treebook.h b/include/wx/treebook.h
index 5d4e3469c3..798acf318b 100644
--- a/include/wx/treebook.h
+++ b/include/wx/treebook.h
@@ -21,7 +21,7 @@
 
 typedef wxWindow wxTreebookPage;
 
-class WXDLLEXPORT wxTreeEvent;
+class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
 
 // ----------------------------------------------------------------------------
 // wxTreebook
diff --git a/include/wx/treectrl.h b/include/wx/treectrl.h
index 0a9c49c566..8a4d940a1d 100644
--- a/include/wx/treectrl.h
+++ b/include/wx/treectrl.h
@@ -24,7 +24,7 @@
 #include "wx/treebase.h"
 #include "wx/textctrl.h" // wxTextCtrl::ms_classinfo used through CLASSINFO macro
 
-class WXDLLEXPORT wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 // ----------------------------------------------------------------------------
 // wxTreeCtrlBase
diff --git a/include/wx/txtstrm.h b/include/wx/txtstrm.h
index 0bcf3e7d2c..a2614ab559 100644
--- a/include/wx/txtstrm.h
+++ b/include/wx/txtstrm.h
@@ -17,8 +17,8 @@
 
 #if wxUSE_STREAMS
 
-class WXDLLIMPEXP_BASE wxTextInputStream;
-class WXDLLIMPEXP_BASE wxTextOutputStream;
+class WXDLLIMPEXP_FWD_BASE wxTextInputStream;
+class WXDLLIMPEXP_FWD_BASE wxTextOutputStream;
 
 typedef wxTextInputStream& (*__wxTextInputManip)(wxTextInputStream&);
 typedef wxTextOutputStream& (*__wxTextOutputManip)(wxTextOutputStream&);
diff --git a/include/wx/unichar.h b/include/wx/unichar.h
index a7a74dec83..b91db6676b 100644
--- a/include/wx/unichar.h
+++ b/include/wx/unichar.h
@@ -15,8 +15,8 @@
 #include "wx/chartype.h"
 #include "wx/stringimpl.h"
 
-class WXDLLIMPEXP_BASE wxUniCharRef;
-class WXDLLIMPEXP_BASE wxStringIteratorNode;
+class WXDLLIMPEXP_FWD_BASE wxUniCharRef;
+class WXDLLIMPEXP_FWD_BASE wxStringIteratorNode;
 
 // This class represents single Unicode character. It can be converted to
 // and from char or wchar_t and implements commonly used character operations.
@@ -255,7 +255,7 @@ private:
     wxUniChar UniChar() const { return *m_pos; }
 #endif
 
-    friend class WXDLLIMPEXP_BASE wxUniChar;
+    friend class WXDLLIMPEXP_FWD_BASE wxUniChar;
 
 private:
     // reference to the string and pointer to the character in string
diff --git a/include/wx/univ/button.h b/include/wx/univ/button.h
index c5856b5ab7..59e97a533a 100644
--- a/include/wx/univ/button.h
+++ b/include/wx/univ/button.h
@@ -12,7 +12,7 @@
 #ifndef _WX_UNIV_BUTTON_H_
 #define _WX_UNIV_BUTTON_H_
 
-class WXDLLEXPORT wxInputHandler;
+class WXDLLIMPEXP_FWD_CORE wxInputHandler;
 
 #include "wx/bitmap.h"
 
diff --git a/include/wx/univ/colschem.h b/include/wx/univ/colschem.h
index 451c0ed4b3..b591c7d0e2 100644
--- a/include/wx/univ/colschem.h
+++ b/include/wx/univ/colschem.h
@@ -12,7 +12,7 @@
 #ifndef _WX_UNIV_COLSCHEM_H_
 #define _WX_UNIV_COLSCHEM_H_
 
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 #include "wx/colour.h"
 #include "wx/checkbox.h"
diff --git a/include/wx/univ/combobox.h b/include/wx/univ/combobox.h
index 383582c06f..830f3e2ef5 100644
--- a/include/wx/univ/combobox.h
+++ b/include/wx/univ/combobox.h
@@ -15,7 +15,7 @@
 
 #include "wx/combo.h"
 
-class WXDLLEXPORT wxListBox;
+class WXDLLIMPEXP_FWD_CORE wxListBox;
 
 // ----------------------------------------------------------------------------
 // NB: some actions supported by this control are in wx/generic/combo.h
diff --git a/include/wx/univ/control.h b/include/wx/univ/control.h
index 2c88bbe682..4d7d370ab1 100644
--- a/include/wx/univ/control.h
+++ b/include/wx/univ/control.h
@@ -12,9 +12,9 @@
 #ifndef _WX_UNIV_CONTROL_H_
 #define _WX_UNIV_CONTROL_H_
 
-class WXDLLEXPORT wxControlRenderer;
-class WXDLLEXPORT wxInputHandler;
-class WXDLLEXPORT wxRenderer;
+class WXDLLIMPEXP_FWD_CORE wxControlRenderer;
+class WXDLLIMPEXP_FWD_CORE wxInputHandler;
+class WXDLLIMPEXP_FWD_CORE wxRenderer;
 
 // we must include it as most/all control classes derive their handlers from
 // it
diff --git a/include/wx/univ/dialog.h b/include/wx/univ/dialog.h
index 8a00658066..02efd9193a 100644
--- a/include/wx/univ/dialog.h
+++ b/include/wx/univ/dialog.h
@@ -12,8 +12,8 @@
 #define _WX_UNIV_DIALOG_H_
 
 extern WXDLLEXPORT_DATA(const wxChar) wxDialogNameStr[];
-class WXDLLEXPORT wxWindowDisabler;
-class WXDLLEXPORT wxEventLoop;
+class WXDLLIMPEXP_FWD_CORE wxWindowDisabler;
+class WXDLLIMPEXP_FWD_CORE wxEventLoop;
 
 // Dialog boxes
 class WXDLLEXPORT wxDialog : public wxDialogBase
diff --git a/include/wx/univ/inpcons.h b/include/wx/univ/inpcons.h
index 0fbd1ba2da..874d2f9e86 100644
--- a/include/wx/univ/inpcons.h
+++ b/include/wx/univ/inpcons.h
@@ -12,8 +12,8 @@
 #ifndef _WX_UNIV_INPCONS_H_
 #define _WX_UNIV_INPCONS_H_
 
-class WXDLLEXPORT wxInputHandler;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxInputHandler;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 #include "wx/object.h"
 #include "wx/event.h"
diff --git a/include/wx/univ/menu.h b/include/wx/univ/menu.h
index e023830bf0..591df3bd66 100644
--- a/include/wx/univ/menu.h
+++ b/include/wx/univ/menu.h
@@ -19,12 +19,12 @@
 #include "wx/dynarray.h"
 
 // fwd declarations
-class WXDLLEXPORT wxMenuInfo;
+class WXDLLIMPEXP_FWD_CORE wxMenuInfo;
 WX_DECLARE_EXPORTED_OBJARRAY(wxMenuInfo, wxMenuInfoArray);
 
-class WXDLLEXPORT wxMenuGeometryInfo;
-class WXDLLEXPORT wxPopupMenuWindow;
-class WXDLLEXPORT wxRenderer;
+class WXDLLIMPEXP_FWD_CORE wxMenuGeometryInfo;
+class WXDLLIMPEXP_FWD_CORE wxPopupMenuWindow;
+class WXDLLIMPEXP_FWD_CORE wxRenderer;
 
 // ----------------------------------------------------------------------------
 // wxMenu
diff --git a/include/wx/univ/notebook.h b/include/wx/univ/notebook.h
index 44befbf909..d2896f472c 100644
--- a/include/wx/univ/notebook.h
+++ b/include/wx/univ/notebook.h
@@ -14,7 +14,7 @@
 
 #include "wx/arrstr.h"
 
-class WXDLLEXPORT wxSpinButton;
+class WXDLLIMPEXP_FWD_CORE wxSpinButton;
 
 // ----------------------------------------------------------------------------
 // the actions supported by this control
diff --git a/include/wx/univ/radiobox.h b/include/wx/univ/radiobox.h
index 17b4f8951b..94830801a9 100644
--- a/include/wx/univ/radiobox.h
+++ b/include/wx/univ/radiobox.h
@@ -12,7 +12,7 @@
 #ifndef _WX_UNIV_RADIOBOX_H_
 #define _WX_UNIV_RADIOBOX_H_
 
-class WXDLLEXPORT wxRadioButton;
+class WXDLLIMPEXP_FWD_CORE wxRadioButton;
 
 #include "wx/statbox.h"
 #include "wx/dynarray.h"
diff --git a/include/wx/univ/renderer.h b/include/wx/univ/renderer.h
index 9d66b616fe..940b3bc286 100644
--- a/include/wx/univ/renderer.h
+++ b/include/wx/univ/renderer.h
@@ -30,27 +30,27 @@
 
 #include "wx/renderer.h"
 
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxCheckListBox;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxCheckListBox;
 
 #if wxUSE_LISTBOX
-    class WXDLLEXPORT wxListBox;
+    class WXDLLIMPEXP_FWD_CORE wxListBox;
 #endif // wxUSE_LISTBOX
 
 #if wxUSE_MENUS
-   class WXDLLEXPORT wxMenu;
-   class WXDLLEXPORT wxMenuGeometryInfo;
+   class WXDLLIMPEXP_FWD_CORE wxMenu;
+   class WXDLLIMPEXP_FWD_CORE wxMenuGeometryInfo;
 #endif // wxUSE_MENUS
 
-class WXDLLEXPORT wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxScrollBar;
 
 #if wxUSE_TEXTCTRL
-    class WXDLLEXPORT wxTextCtrl;
+    class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 #endif
 
 #if wxUSE_GAUGE
-    class WXDLLEXPORT wxGauge;
+    class WXDLLIMPEXP_FWD_CORE wxGauge;
 #endif // wxUSE_GAUGE
 
 #include "wx/string.h"
diff --git a/include/wx/univ/scrarrow.h b/include/wx/univ/scrarrow.h
index 3ccda643d2..263b8ecf2e 100644
--- a/include/wx/univ/scrarrow.h
+++ b/include/wx/univ/scrarrow.h
@@ -23,11 +23,11 @@
 // to derive from the wxControlWithArrows interface and implement its methods.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxControlWithArrows;
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxMouseEvent;
-class WXDLLEXPORT wxRect;
-class WXDLLEXPORT wxRenderer;
+class WXDLLIMPEXP_FWD_CORE wxControlWithArrows;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxMouseEvent;
+class WXDLLIMPEXP_FWD_CORE wxRect;
+class WXDLLIMPEXP_FWD_CORE wxRenderer;
 
 // ----------------------------------------------------------------------------
 // wxScrollArrows: an abstraction of scrollbar arrow
diff --git a/include/wx/univ/scrolbar.h b/include/wx/univ/scrolbar.h
index ec258c30e2..a11cef70fe 100644
--- a/include/wx/univ/scrolbar.h
+++ b/include/wx/univ/scrolbar.h
@@ -12,7 +12,7 @@
 #ifndef _WX_UNIV_SCROLBAR_H_
 #define _WX_UNIV_SCROLBAR_H_
 
-class WXDLLEXPORT wxScrollTimer;
+class WXDLLIMPEXP_FWD_CORE wxScrollTimer;
 
 #include "wx/univ/scrarrow.h"
 #include "wx/renderer.h"
diff --git a/include/wx/univ/scrthumb.h b/include/wx/univ/scrthumb.h
index 78f91b0c26..00ab7aacae 100644
--- a/include/wx/univ/scrthumb.h
+++ b/include/wx/univ/scrthumb.h
@@ -20,10 +20,10 @@
 // This class is similar to wxScrollThumb.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxControlWithThumb;
-class WXDLLEXPORT wxMouseEvent;
-class WXDLLEXPORT wxRect;
-class WXDLLEXPORT wxScrollTimer;
+class WXDLLIMPEXP_FWD_CORE wxControlWithThumb;
+class WXDLLIMPEXP_FWD_CORE wxMouseEvent;
+class WXDLLIMPEXP_FWD_CORE wxRect;
+class WXDLLIMPEXP_FWD_CORE wxScrollTimer;
 
 #include "wx/timer.h"
 
@@ -76,7 +76,7 @@ private:
     Shaft m_shaftPart;
 
     // the data for the mouse capture
-    struct WXDLLEXPORT wxScrollThumbCaptureData *m_captureData;
+    struct WXDLLIMPEXP_FWD_CORE wxScrollThumbCaptureData *m_captureData;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/univ/stdrend.h b/include/wx/univ/stdrend.h
index 80e53bff0a..8a07e5ccf5 100644
--- a/include/wx/univ/stdrend.h
+++ b/include/wx/univ/stdrend.h
@@ -14,7 +14,7 @@
 #include "wx/univ/renderer.h"
 #include "wx/pen.h"
 
-class WXDLLEXPORT wxColourScheme;
+class WXDLLIMPEXP_FWD_CORE wxColourScheme;
 
 // ----------------------------------------------------------------------------
 // wxStdRenderer: implements as much of wxRenderer API as possible generically
diff --git a/include/wx/univ/textctrl.h b/include/wx/univ/textctrl.h
index f126757e99..941a60c21d 100644
--- a/include/wx/univ/textctrl.h
+++ b/include/wx/univ/textctrl.h
@@ -12,8 +12,8 @@
 #ifndef _WX_UNIV_TEXTCTRL_H_
 #define _WX_UNIV_TEXTCTRL_H_
 
-class WXDLLEXPORT wxCaret;
-class WXDLLEXPORT wxTextCtrlCommandProcessor;
+class WXDLLIMPEXP_FWD_CORE wxCaret;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrlCommandProcessor;
 
 #include "wx/scrolwin.h"    // for wxScrollHelper
 
diff --git a/include/wx/univ/theme.h b/include/wx/univ/theme.h
index a386a2cca8..7d6ebf4a80 100644
--- a/include/wx/univ/theme.h
+++ b/include/wx/univ/theme.h
@@ -20,12 +20,12 @@
 // wxTheme
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxArtProvider;
-class WXDLLEXPORT wxColourScheme;
-class WXDLLEXPORT wxInputConsumer;
-class WXDLLEXPORT wxInputHandler;
-class WXDLLEXPORT wxRenderer;
-struct WXDLLEXPORT wxThemeInfo;
+class WXDLLIMPEXP_FWD_CORE wxArtProvider;
+class WXDLLIMPEXP_FWD_CORE wxColourScheme;
+class WXDLLIMPEXP_FWD_CORE wxInputConsumer;
+class WXDLLIMPEXP_FWD_CORE wxInputHandler;
+class WXDLLIMPEXP_FWD_CORE wxRenderer;
+struct WXDLLIMPEXP_FWD_CORE wxThemeInfo;
 
 class WXDLLEXPORT wxTheme
 {
@@ -73,7 +73,7 @@ private:
 
     // the current theme
     static wxTheme *ms_theme;
-    friend struct WXDLLEXPORT wxThemeInfo;
+    friend struct wxThemeInfo;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/include/wx/univ/toolbar.h b/include/wx/univ/toolbar.h
index 2ee3b1eeb8..272cef7b38 100644
--- a/include/wx/univ/toolbar.h
+++ b/include/wx/univ/toolbar.h
@@ -14,7 +14,7 @@
 
 #include "wx/button.h"      // for wxStdButtonInputHandler
 
-class WXDLLEXPORT wxToolBarTool;
+class WXDLLIMPEXP_FWD_CORE wxToolBarTool;
 
 // ----------------------------------------------------------------------------
 // the actions supported by this control
diff --git a/include/wx/univ/window.h b/include/wx/univ/window.h
index 92b17be4a7..bb8e81d7c6 100644
--- a/include/wx/univ/window.h
+++ b/include/wx/univ/window.h
@@ -16,18 +16,18 @@
 
 #include "wx/bitmap.h"      // for m_bitmapBg
 
-class WXDLLEXPORT wxControlRenderer;
-class WXDLLEXPORT wxEventLoop;
+class WXDLLIMPEXP_FWD_CORE wxControlRenderer;
+class WXDLLIMPEXP_FWD_CORE wxEventLoop;
 
 #if wxUSE_MENUS
-    class WXDLLEXPORT wxMenu;
-    class WXDLLEXPORT wxMenuBar;
+    class WXDLLIMPEXP_FWD_CORE wxMenu;
+    class WXDLLIMPEXP_FWD_CORE wxMenuBar;
 #endif // wxUSE_MENUS
 
-class WXDLLEXPORT wxRenderer;
+class WXDLLIMPEXP_FWD_CORE wxRenderer;
 
 #if wxUSE_SCROLLBAR
-    class WXDLLEXPORT wxScrollBar;
+    class WXDLLIMPEXP_FWD_CORE wxScrollBar;
 #endif // wxUSE_SCROLLBAR
 
 #ifdef __WXX11__
diff --git a/include/wx/unix/execute.h b/include/wx/unix/execute.h
index 7af0c51977..00fa9d0701 100644
--- a/include/wx/unix/execute.h
+++ b/include/wx/unix/execute.h
@@ -12,7 +12,7 @@
 
 #include "wx/unix/pipe.h"
 
-class WXDLLIMPEXP_BASE wxProcess;
+class WXDLLIMPEXP_FWD_BASE wxProcess;
 class wxStreamTempInputBuffer;
 
 // if pid > 0, the execution is async and the data is freed in the callback
diff --git a/include/wx/unix/joystick.h b/include/wx/unix/joystick.h
index 5145446311..955db788d9 100644
--- a/include/wx/unix/joystick.h
+++ b/include/wx/unix/joystick.h
@@ -15,7 +15,7 @@
 #include "wx/event.h"
 #include "wx/thread.h"
 
-class WXDLLEXPORT wxJoystickThread;
+class WXDLLIMPEXP_FWD_CORE wxJoystickThread;
 
 class WXDLLEXPORT wxJoystick: public wxObject
 {
diff --git a/include/wx/unix/mimetype.h b/include/wx/unix/mimetype.h
index e4d925c0fe..d34b020f91 100644
--- a/include/wx/unix/mimetype.h
+++ b/include/wx/unix/mimetype.h
@@ -140,7 +140,7 @@ protected:
     virtual bool WriteMimeInfo(int nIndex, bool delete_mime );
 
     // give it access to m_aXXX variables
-    friend class WXDLLEXPORT wxFileTypeImpl;
+    friend class WXDLLIMPEXP_FWD_CORE wxFileTypeImpl;
 };
 
 
diff --git a/include/wx/unix/sound.h b/include/wx/unix/sound.h
index f420f9485c..797eacd1fa 100644
--- a/include/wx/unix/sound.h
+++ b/include/wx/unix/sound.h
@@ -22,9 +22,9 @@
 // wxSound: simple audio playback class
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxSoundBackend;
-class WXDLLIMPEXP_ADV wxSound;
-class WXDLLIMPEXP_BASE wxDynamicLibrary;
+class WXDLLIMPEXP_FWD_ADV wxSoundBackend;
+class WXDLLIMPEXP_FWD_ADV wxSound;
+class WXDLLIMPEXP_FWD_BASE wxDynamicLibrary;
 
 /// Sound data, as loaded from .wav file:
 class WXDLLIMPEXP_ADV wxSoundData
diff --git a/include/wx/unix/taskbarx11.h b/include/wx/unix/taskbarx11.h
index d5143c303d..d37c6c712e 100644
--- a/include/wx/unix/taskbarx11.h
+++ b/include/wx/unix/taskbarx11.h
@@ -12,11 +12,11 @@
 #ifndef _TASKBAR_H_
 #define _TASKBAR_H_
 
-class WXDLLEXPORT wxIcon;
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLIMPEXP_ADV wxTaskBarIconArea;
+class WXDLLIMPEXP_FWD_ADV wxTaskBarIconArea;
 
 class WXDLLIMPEXP_ADV wxTaskBarIcon: public wxTaskBarIconBase
 {
diff --git a/include/wx/url.h b/include/wx/url.h
index bf8b5385c3..5faae15fb9 100644
--- a/include/wx/url.h
+++ b/include/wx/url.h
@@ -34,7 +34,7 @@ typedef enum {
 } wxURLError;
 
 #if wxUSE_URL_NATIVE
-class WXDLLIMPEXP_NET wxURL;
+class WXDLLIMPEXP_FWD_NET wxURL;
 
 class WXDLLIMPEXP_NET wxURLNativeImp : public wxObject
 {
diff --git a/include/wx/utils.h b/include/wx/utils.h
index a50c70ad8a..b0b2ee611a 100644
--- a/include/wx/utils.h
+++ b/include/wx/utils.h
@@ -23,8 +23,8 @@
     #include "wx/gdicmn.h"
 #endif
 
-class WXDLLIMPEXP_BASE wxArrayString;
-class WXDLLIMPEXP_BASE wxArrayInt;
+class WXDLLIMPEXP_FWD_BASE wxArrayString;
+class WXDLLIMPEXP_FWD_BASE wxArrayInt;
 
 // need this for wxGetDiskSpace() as we can't, unfortunately, forward declare
 // wxLongLong
@@ -46,10 +46,10 @@ class WXDLLIMPEXP_BASE wxArrayInt;
 // Forward declaration
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxProcess;
-class WXDLLIMPEXP_CORE wxFrame;
-class WXDLLIMPEXP_CORE wxWindow;
-class WXDLLIMPEXP_CORE wxWindowList;
+class WXDLLIMPEXP_FWD_CORE wxProcess;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindowList;
 
 // ----------------------------------------------------------------------------
 // Macros
@@ -574,7 +574,7 @@ wxDEPRECATED(
 );
 
 #if wxUSE_ACCEL
-class WXDLLEXPORT wxAcceleratorEntry;
+class WXDLLIMPEXP_FWD_CORE wxAcceleratorEntry;
 
 // use wxAcceleratorEntry::Create() or FromString() methods instead
 wxDEPRECATED(
diff --git a/include/wx/validate.h b/include/wx/validate.h
index b80ca09b8e..83aa586093 100644
--- a/include/wx/validate.h
+++ b/include/wx/validate.h
@@ -18,8 +18,8 @@
 
 #include "wx/event.h"
 
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindowBase;
 
 /*
  A validator has up to three purposes:
@@ -86,7 +86,7 @@ extern WXDLLEXPORT_DATA(const wxValidator) wxDefaultValidator;
     // want to be able to pass wxDefaultValidator to the functions which take
     // a wxValidator parameter to avoid using "#if wxUSE_VALIDATORS"
     // everywhere
-    class WXDLLEXPORT wxValidator;
+    class WXDLLIMPEXP_FWD_CORE wxValidator;
     #define wxDefaultValidator (*((wxValidator *)NULL))
 
     // this macro allows to avoid warnings about unused parameters when
diff --git a/include/wx/vlbox.h b/include/wx/vlbox.h
index f5ce8b88c5..62c145e4e2 100644
--- a/include/wx/vlbox.h
+++ b/include/wx/vlbox.h
@@ -15,7 +15,7 @@
 #include "wx/vscroll.h"         // base class
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxSelectionStore;
+class WXDLLIMPEXP_FWD_CORE wxSelectionStore;
 
 #define wxVListBoxNameStr _T("wxVListBox")
 
diff --git a/include/wx/vscroll.h b/include/wx/vscroll.h
index 189c34c334..4edcfddc24 100644
--- a/include/wx/vscroll.h
+++ b/include/wx/vscroll.h
@@ -15,7 +15,7 @@
 #include "wx/panel.h"
 #include "wx/position.h"
 
-class WXDLLEXPORT wxVarScrollHelperEvtHandler;
+class WXDLLIMPEXP_FWD_CORE wxVarScrollHelperEvtHandler;
 
 
 // Using the same techniques as the wxScrolledWindow class      |
diff --git a/include/wx/window.h b/include/wx/window.h
index a9a881c8a8..9e3ace3a7d 100644
--- a/include/wx/window.h
+++ b/include/wx/window.h
@@ -66,22 +66,22 @@
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxCaret;
-class WXDLLEXPORT wxControl;
-class WXDLLEXPORT wxCursor;
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxDropTarget;
-class WXDLLEXPORT wxItemResource;
-class WXDLLEXPORT wxLayoutConstraints;
-class WXDLLEXPORT wxResourceTable;
-class WXDLLEXPORT wxSizer;
-class WXDLLEXPORT wxToolTip;
-class WXDLLEXPORT wxWindowBase;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxScrollHelper;
+class WXDLLIMPEXP_FWD_CORE wxCaret;
+class WXDLLIMPEXP_FWD_CORE wxControl;
+class WXDLLIMPEXP_FWD_CORE wxCursor;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxItemResource;
+class WXDLLIMPEXP_FWD_CORE wxLayoutConstraints;
+class WXDLLIMPEXP_FWD_CORE wxResourceTable;
+class WXDLLIMPEXP_FWD_CORE wxSizer;
+class WXDLLIMPEXP_FWD_CORE wxToolTip;
+class WXDLLIMPEXP_FWD_CORE wxWindowBase;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxScrollHelper;
 
 #if wxUSE_ACCESSIBILITY
-class WXDLLEXPORT wxAccessible;
+class WXDLLIMPEXP_FWD_CORE wxAccessible;
 #endif
 
 // ----------------------------------------------------------------------------
@@ -1494,7 +1494,7 @@ private:
     static int ms_lastControlId;
 
     // the stack of windows which have captured the mouse
-    static struct WXDLLEXPORT wxWindowNext *ms_winCaptureNext;
+    static struct WXDLLIMPEXP_FWD_CORE wxWindowNext *ms_winCaptureNext;
     // the window that currently has mouse capture
     static wxWindow *ms_winCaptureCurrent;
     // indicates if execution is inside CaptureMouse/ReleaseMouse
diff --git a/include/wx/wizard.h b/include/wx/wizard.h
index c57b2a469c..77a5a73883 100644
--- a/include/wx/wizard.h
+++ b/include/wx/wizard.h
@@ -34,7 +34,7 @@
 #define wxWIZARD_EX_HELPBUTTON   0x00000010
 
 // forward declarations
-class WXDLLIMPEXP_ADV wxWizard;
+class WXDLLIMPEXP_FWD_ADV wxWizard;
 
 // ----------------------------------------------------------------------------
 // wxWizardPage is one of the wizards screen: it must know what are the
diff --git a/include/wx/x11/app.h b/include/wx/x11/app.h
index e6faab08e1..ac5f86fdce 100644
--- a/include/wx/x11/app.h
+++ b/include/wx/x11/app.h
@@ -23,12 +23,12 @@
 // forward declarations
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxApp;
-class WXDLLEXPORT wxKeyEvent;
-class WXDLLEXPORT wxLog;
-class WXDLLEXPORT wxXVisualInfo;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxApp;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxXVisualInfo;
 
 // ----------------------------------------------------------------------------
 // the wxApp class for wxX11 - see wxAppBase for more details
diff --git a/include/wx/x11/bitmap.h b/include/wx/x11/bitmap.h
index 84e7f3ebc0..6c404b6a8e 100644
--- a/include/wx/x11/bitmap.h
+++ b/include/wx/x11/bitmap.h
@@ -22,9 +22,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxMask;
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxImage;
+class WXDLLIMPEXP_FWD_CORE wxMask;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 //-----------------------------------------------------------------------------
 // wxMask
diff --git a/include/wx/x11/brush.h b/include/wx/x11/brush.h
index c261ba205a..ce581ab06d 100644
--- a/include/wx/x11/brush.h
+++ b/include/wx/x11/brush.h
@@ -18,9 +18,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBrush;
-class WXDLLIMPEXP_CORE wxColour;
-class WXDLLIMPEXP_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxBrush;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 //-----------------------------------------------------------------------------
 // wxBrush
diff --git a/include/wx/x11/colour.h b/include/wx/x11/colour.h
index 27e64ac622..4ae37558b6 100644
--- a/include/wx/x11/colour.h
+++ b/include/wx/x11/colour.h
@@ -22,12 +22,12 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxDC;
-class WXDLLIMPEXP_CORE wxPaintDC;
-class WXDLLIMPEXP_CORE wxBitmap;
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLIMPEXP_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxColour;
 
 //-----------------------------------------------------------------------------
 // wxColour
diff --git a/include/wx/x11/dcclient.h b/include/wx/x11/dcclient.h
index 6ae4962b32..542606604b 100644
--- a/include/wx/x11/dcclient.h
+++ b/include/wx/x11/dcclient.h
@@ -19,11 +19,11 @@
 // fwd declarations
 // -----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLIMPEXP_CORE wxWindowDC;
-class WXDLLIMPEXP_CORE wxPaintDC;
-class WXDLLIMPEXP_CORE wxClientDC;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxClientDC;
 
 //-----------------------------------------------------------------------------
 // wxWindowDC
diff --git a/include/wx/x11/dnd.h b/include/wx/x11/dnd.h
index 1643f0d7e7..dc0f7da7a1 100644
--- a/include/wx/x11/dnd.h
+++ b/include/wx/x11/dnd.h
@@ -23,14 +23,14 @@
 // classes
 //-------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
-class WXDLLEXPORT wxDropTarget;
-class WXDLLEXPORT wxTextDropTarget;
-class WXDLLEXPORT wxFileDropTarget;
-class WXDLLEXPORT wxPrivateDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxTextDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxFileDropTarget;
+class WXDLLIMPEXP_FWD_CORE wxPrivateDropTarget;
 
-class WXDLLEXPORT wxDropSource;
+class WXDLLIMPEXP_FWD_CORE wxDropSource;
 
 //-------------------------------------------------------------------------
 // wxDropTarget
diff --git a/include/wx/x11/palette.h b/include/wx/x11/palette.h
index 8babcd8f59..bb33a74b9b 100644
--- a/include/wx/x11/palette.h
+++ b/include/wx/x11/palette.h
@@ -15,7 +15,7 @@
 #include "wx/gdiobj.h"
 #include "wx/list.h"
 
-class WXDLLEXPORT wxPalette;
+class WXDLLIMPEXP_FWD_CORE wxPalette;
 
 // Palette for one display
 class wxXPalette : public wxObject
@@ -34,7 +34,7 @@ public:
 
 class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
-    friend class WXDLLEXPORT wxPalette;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
     wxPaletteRefData();
     virtual ~wxPaletteRefData();
diff --git a/include/wx/x11/pen.h b/include/wx/x11/pen.h
index 7df09ebc19..ccb6310eb5 100644
--- a/include/wx/x11/pen.h
+++ b/include/wx/x11/pen.h
@@ -19,9 +19,9 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxPen;
-class WXDLLIMPEXP_CORE wxColour;
-class WXDLLIMPEXP_CORE wxBitmap;
+class WXDLLIMPEXP_FWD_CORE wxPen;
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxBitmap;
 
 typedef char wxX11Dash;
 
diff --git a/include/wx/x11/private.h b/include/wx/x11/private.h
index 08406a39bf..d1b3a1be5e 100644
--- a/include/wx/x11/private.h
+++ b/include/wx/x11/private.h
@@ -32,9 +32,9 @@
 #include "pango/pango.h"
 #endif
 
-class WXDLLIMPEXP_CORE wxMouseEvent;
-class WXDLLIMPEXP_CORE wxKeyEvent;
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxMouseEvent;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 // ----------------------------------------------------------------------------
 // Some Unicode <-> UTF8 macros stolen from GTK
diff --git a/include/wx/x11/privx.h b/include/wx/x11/privx.h
index 4aa7098bee..3e01dd4fcf 100644
--- a/include/wx/x11/privx.h
+++ b/include/wx/x11/privx.h
@@ -26,10 +26,10 @@
 #pragma message enable nosimpint
 #endif
 
-class WXDLLIMPEXP_CORE wxMouseEvent;
-class WXDLLIMPEXP_CORE wxKeyEvent;
-class WXDLLIMPEXP_CORE wxWindow;
-class WXDLLIMPEXP_CORE wxRegion;
+class WXDLLIMPEXP_FWD_CORE wxMouseEvent;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxRegion;
 
 // ----------------------------------------------------------------------------
 // key events related functions
diff --git a/include/wx/x11/reparent.h b/include/wx/x11/reparent.h
index b795e725f2..b32d43f71c 100644
--- a/include/wx/x11/reparent.h
+++ b/include/wx/x11/reparent.h
@@ -18,7 +18,7 @@
  * This class helps to reparent a specific window
  */
 
-class WXDLLIMPEXP_CORE wxAdoptedWindow;
+class WXDLLIMPEXP_FWD_CORE wxAdoptedWindow;
 class WXDLLIMPEXP_CORE wxReparenter: public wxObject
 {
 public:
diff --git a/include/wx/x11/textctrl.h b/include/wx/x11/textctrl.h
index 97cbf58971..c0c750baa1 100644
--- a/include/wx/x11/textctrl.h
+++ b/include/wx/x11/textctrl.h
@@ -27,7 +27,7 @@
 // classes
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
 //-----------------------------------------------------------------------------
 // helpers
diff --git a/include/wx/x11/window.h b/include/wx/x11/window.h
index 5556bd97f7..8480c4760f 100644
--- a/include/wx/x11/window.h
+++ b/include/wx/x11/window.h
@@ -20,8 +20,8 @@
 
 class WXDLLIMPEXP_CORE wxWindowX11 : public wxWindowBase
 {
-    friend class WXDLLEXPORT wxDC;
-    friend class WXDLLEXPORT wxWindowDC;
+    friend class WXDLLIMPEXP_FWD_CORE wxDC;
+    friend class WXDLLIMPEXP_FWD_CORE wxWindowDC;
 
 public:
     wxWindowX11() { Init(); }
diff --git a/include/wx/xml/xml.h b/include/wx/xml/xml.h
index 8965029289..19557b0b14 100644
--- a/include/wx/xml/xml.h
+++ b/include/wx/xml/xml.h
@@ -28,12 +28,12 @@
     #define WXDLLIMPEXP_XML
 #endif
 
-class WXDLLIMPEXP_XML wxXmlNode;
-class WXDLLIMPEXP_XML wxXmlProperty;
-class WXDLLIMPEXP_XML wxXmlDocument;
-class WXDLLIMPEXP_XML wxXmlIOHandler;
-class WXDLLIMPEXP_BASE wxInputStream;
-class WXDLLIMPEXP_BASE wxOutputStream;
+class WXDLLIMPEXP_FWD_XML wxXmlNode;
+class WXDLLIMPEXP_FWD_XML wxXmlProperty;
+class WXDLLIMPEXP_FWD_XML wxXmlDocument;
+class WXDLLIMPEXP_FWD_XML wxXmlIOHandler;
+class WXDLLIMPEXP_FWD_BASE wxInputStream;
+class WXDLLIMPEXP_FWD_BASE wxOutputStream;
 
 
 // Represents XML node type.
diff --git a/include/wx/xpmdecod.h b/include/wx/xpmdecod.h
index 549e7eba73..5fd3ebe509 100644
--- a/include/wx/xpmdecod.h
+++ b/include/wx/xpmdecod.h
@@ -14,8 +14,8 @@
 
 #if wxUSE_IMAGE && wxUSE_XPM
 
-class WXDLLIMPEXP_CORE wxImage;
-class WXDLLIMPEXP_BASE wxInputStream;
+class WXDLLIMPEXP_FWD_CORE wxImage;
+class WXDLLIMPEXP_FWD_BASE wxInputStream;
 
 // --------------------------------------------------------------------------
 // wxXPMDecoder class
diff --git a/include/wx/xrc/xh_bmpcbox.h b/include/wx/xrc/xh_bmpcbox.h
index fe99d117e2..d846717f32 100644
--- a/include/wx/xrc/xh_bmpcbox.h
+++ b/include/wx/xrc/xh_bmpcbox.h
@@ -15,7 +15,7 @@
 
 #if wxUSE_XRC && wxUSE_BITMAPCOMBOBOX
 
-class WXDLLIMPEXP_ADV wxBitmapComboBox;
+class WXDLLIMPEXP_FWD_ADV wxBitmapComboBox;
 
 class WXDLLIMPEXP_XRC wxBitmapComboBoxXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_choicbk.h b/include/wx/xrc/xh_choicbk.h
index bc9be5b905..20c5346eb3 100644
--- a/include/wx/xrc/xh_choicbk.h
+++ b/include/wx/xrc/xh_choicbk.h
@@ -13,7 +13,7 @@
 
 #if wxUSE_XRC && wxUSE_CHOICEBOOK
 
-class WXDLLEXPORT wxChoicebook;
+class WXDLLIMPEXP_FWD_CORE wxChoicebook;
 
 class WXDLLIMPEXP_XRC wxChoicebookXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_collpane.h b/include/wx/xrc/xh_collpane.h
index 2837ea3dfd..c6ade911cb 100644
--- a/include/wx/xrc/xh_collpane.h
+++ b/include/wx/xrc/xh_collpane.h
@@ -15,7 +15,7 @@
 
 #if wxUSE_XRC && wxUSE_COLLPANE
 
-class WXDLLIMPEXP_ADV wxCollapsiblePane;
+class WXDLLIMPEXP_FWD_ADV wxCollapsiblePane;
 
 class WXDLLIMPEXP_XRC wxCollapsiblePaneXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_listbk.h b/include/wx/xrc/xh_listbk.h
index 7a4675c028..7aa2e0b2f3 100644
--- a/include/wx/xrc/xh_listbk.h
+++ b/include/wx/xrc/xh_listbk.h
@@ -13,7 +13,7 @@
 
 #if wxUSE_XRC && wxUSE_LISTBOOK
 
-class WXDLLEXPORT wxListbook;
+class WXDLLIMPEXP_FWD_CORE wxListbook;
 
 class WXDLLIMPEXP_XRC wxListbookXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_mdi.h b/include/wx/xrc/xh_mdi.h
index 06eeffc340..4eab9a0237 100644
--- a/include/wx/xrc/xh_mdi.h
+++ b/include/wx/xrc/xh_mdi.h
@@ -15,7 +15,7 @@
 
 #if wxUSE_XRC && wxUSE_MDI
 
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
 
 class WXDLLIMPEXP_XRC wxMdiXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_notbk.h b/include/wx/xrc/xh_notbk.h
index 1cbb9e5dd0..2d1131c295 100644
--- a/include/wx/xrc/xh_notbk.h
+++ b/include/wx/xrc/xh_notbk.h
@@ -14,7 +14,7 @@
 
 #if wxUSE_XRC && wxUSE_NOTEBOOK
 
-class WXDLLEXPORT wxNotebook;
+class WXDLLIMPEXP_FWD_CORE wxNotebook;
 
 class WXDLLIMPEXP_XRC wxNotebookXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_sizer.h b/include/wx/xrc/xh_sizer.h
index f97aba525d..c26179e95e 100644
--- a/include/wx/xrc/xh_sizer.h
+++ b/include/wx/xrc/xh_sizer.h
@@ -18,7 +18,7 @@
 #include "wx/sizer.h"
 #include "wx/gbsizer.h"
 
-class WXDLLEXPORT wxSizer;
+class WXDLLIMPEXP_FWD_CORE wxSizer;
 
 class WXDLLIMPEXP_XRC wxSizerXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_toolb.h b/include/wx/xrc/xh_toolb.h
index c836af30cb..a8d853407a 100644
--- a/include/wx/xrc/xh_toolb.h
+++ b/include/wx/xrc/xh_toolb.h
@@ -15,7 +15,7 @@
 
 #if wxUSE_XRC && wxUSE_TOOLBAR
 
-class WXDLLEXPORT wxToolBar;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
 
 class WXDLLIMPEXP_XRC wxToolBarXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xh_wizrd.h b/include/wx/xrc/xh_wizrd.h
index 5342ee665b..a9ff5d0768 100644
--- a/include/wx/xrc/xh_wizrd.h
+++ b/include/wx/xrc/xh_wizrd.h
@@ -15,8 +15,8 @@
 
 #if wxUSE_XRC && wxUSE_WIZARDDLG
 
-class WXDLLEXPORT wxWizard;
-class WXDLLEXPORT wxWizardPageSimple;
+class WXDLLIMPEXP_FWD_CORE wxWizard;
+class WXDLLIMPEXP_FWD_CORE wxWizardPageSimple;
 
 class WXDLLIMPEXP_XRC wxWizardXmlHandler : public wxXmlResourceHandler
 {
diff --git a/include/wx/xrc/xmlres.h b/include/wx/xrc/xmlres.h
index d5da40ca60..1f03015c1d 100644
--- a/include/wx/xrc/xmlres.h
+++ b/include/wx/xrc/xmlres.h
@@ -30,17 +30,17 @@
 
 #include "wx/xml/xml.h"
 
-class WXDLLEXPORT wxMenu;
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxDialog;
-class WXDLLEXPORT wxPanel;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxToolBar;
-
-class WXDLLIMPEXP_XRC wxXmlResourceHandler;
-class WXDLLIMPEXP_XRC wxXmlSubclassFactory;
-class WXDLLIMPEXP_XRC wxXmlSubclassFactoriesList;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxDialog;
+class WXDLLIMPEXP_FWD_CORE wxPanel;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
+
+class WXDLLIMPEXP_FWD_XRC wxXmlResourceHandler;
+class WXDLLIMPEXP_FWD_XRC wxXmlSubclassFactory;
+class WXDLLIMPEXP_FWD_XRC wxXmlSubclassFactoriesList;
 class wxXmlResourceModule;
 
 
diff --git a/include/wx/xti.h b/include/wx/xti.h
index 659f26c6d2..25d18e1ace 100644
--- a/include/wx/xti.h
+++ b/include/wx/xti.h
@@ -80,14 +80,14 @@
 
 #define EMPTY_MACROVALUE /**/
 
-class WXDLLIMPEXP_BASE wxObject;
-class WXDLLIMPEXP_BASE wxClassInfo;
-class WXDLLIMPEXP_BASE wxDynamicClassInfo;
-class WXDLLIMPEXP_BASE wxHashTable;
-class WXDLLIMPEXP_BASE wxHashTable_Node;
-class WXDLLIMPEXP_BASE wxObjectRefData;
-class WXDLLIMPEXP_BASE wxEvent;
-class WXDLLIMPEXP_BASE wxEvtHandler;
+class WXDLLIMPEXP_FWD_BASE wxObject;
+class WXDLLIMPEXP_FWD_BASE wxClassInfo;
+class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo;
+class WXDLLIMPEXP_FWD_BASE wxHashTable;
+class WXDLLIMPEXP_FWD_BASE wxHashTable_Node;
+class WXDLLIMPEXP_FWD_BASE wxObjectRefData;
+class WXDLLIMPEXP_FWD_BASE wxEvent;
+class WXDLLIMPEXP_FWD_BASE wxEvtHandler;
 
 typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
 
@@ -368,8 +368,8 @@ enum wxTypeKind
     wxT_LAST_TYPE_KIND = wxT_DELEGATE // sentinel for bad data, asserts, debugging
 };
 
-class WXDLLIMPEXP_BASE wxxVariant ;
-class WXDLLIMPEXP_BASE wxTypeInfo ;
+class WXDLLIMPEXP_FWD_BASE wxxVariant ;
+class WXDLLIMPEXP_FWD_BASE wxTypeInfo ;
 
 WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxTypeInfo* , wxTypeInfoMap , class WXDLLIMPEXP_BASE ) ;
 
@@ -931,7 +931,7 @@ enum {
 
 class WXDLLIMPEXP_BASE wxPropertyInfo
 {
-    friend class WXDLLIMPEXP_BASE wxDynamicClassInfo ;
+    friend class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo ;
 public :
     wxPropertyInfo(wxPropertyInfo* &iter,
                    wxClassInfo* itsClass,
@@ -1205,7 +1205,7 @@ public: \
 
 class WXDLLIMPEXP_BASE wxHandlerInfo
 {
-    friend class WXDLLIMPEXP_BASE wxDynamicClassInfo ;
+    friend class WXDLLIMPEXP_FWD_BASE wxDynamicClassInfo ;
 public :
     wxHandlerInfo(wxHandlerInfo* &iter,
                    wxClassInfo* itsClass,
@@ -1593,15 +1593,15 @@ typedef wxObject *(*wxObjectConstructorFn)(void);
 typedef wxObject* (*wxVariantToObjectConverter)( wxxVariant &data ) ;
 typedef wxxVariant (*wxObjectToVariantConverter)( wxObject* ) ;
 
-class WXDLLIMPEXP_BASE wxWriter;
-class WXDLLIMPEXP_BASE wxPersister;
+class WXDLLIMPEXP_FWD_BASE wxWriter;
+class WXDLLIMPEXP_FWD_BASE wxPersister;
 
 typedef bool (*wxObjectStreamingCallback) ( const wxObject *, wxWriter * , wxPersister * , wxxVariantArray & ) ;
 
 class WXDLLIMPEXP_BASE wxClassInfo
 {
-    friend class WXDLLIMPEXP_BASE wxPropertyInfo ;
-    friend class WXDLLIMPEXP_BASE wxHandlerInfo ;
+    friend class WXDLLIMPEXP_FWD_BASE wxPropertyInfo ;
+    friend class WXDLLIMPEXP_FWD_BASE wxHandlerInfo ;
     friend wxObject *wxCreateDynamicObject(const wxString& name);
 public:
     wxClassInfo(const wxClassInfo **_Parents,
@@ -1840,7 +1840,7 @@ WXDLLIMPEXP_BASE wxObject *wxCreateDynamicObject(const wxString& name);
 
 class WXDLLIMPEXP_BASE wxDynamicClassInfo : public wxClassInfo
 {
-    friend class WXDLLIMPEXP_BASE wxDynamicObject ;
+    friend class WXDLLIMPEXP_FWD_BASE wxDynamicObject ;
 public :
     wxDynamicClassInfo( const wxChar *_UnitName, const wxChar *_ClassName , const wxClassInfo* superClass ) ;
     virtual ~wxDynamicClassInfo() ;
diff --git a/include/wx/xtistrm.h b/include/wx/xtistrm.h
index 023675a6f5..0f62e428c7 100644
--- a/include/wx/xtistrm.h
+++ b/include/wx/xtistrm.h
@@ -39,8 +39,8 @@ Main interfaces for streaming out objects.
 // or modify the value before it is streamed-out.
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_BASE wxWriter ;
-class WXDLLIMPEXP_BASE wxReader ;
+class WXDLLIMPEXP_FWD_BASE wxWriter ;
+class WXDLLIMPEXP_FWD_BASE wxReader ;
 
 class WXDLLIMPEXP_BASE wxPersister
 {
@@ -150,7 +150,7 @@ private :
 Streaming callbacks for depersisting XML to code, or running objects
 */
 
-class WXDLLIMPEXP_BASE wxDepersister ;
+class WXDLLIMPEXP_FWD_BASE wxDepersister ;
 
 /*
 wxReader handles streaming in a class from a arbitrary format. While walking through
@@ -347,7 +347,7 @@ an object into a C++ initialization function. this will move to
 a utility lib soon
 */
 
-class WXDLLIMPEXP_BASE wxTextOutputStream ;
+class WXDLLIMPEXP_FWD_BASE wxTextOutputStream ;
 
 class WXDLLIMPEXP_BASE wxCodeDepersister : public wxDepersister
 {
diff --git a/include/wx/xtixml.h b/include/wx/xtixml.h
index 2466e4731c..ce64af46cc 100644
--- a/include/wx/xtixml.h
+++ b/include/wx/xtixml.h
@@ -18,7 +18,7 @@
 
 #include "wx/xtistrm.h"
 
-class WXDLLIMPEXP_XML wxXmlNode ;
+class WXDLLIMPEXP_FWD_XML wxXmlNode ;
 
 class WXDLLIMPEXP_XML wxXmlWriter : public wxWriter
 {
diff --git a/include/wx/zipstrm.h b/include/wx/zipstrm.h
index 21a897bf68..6486492a5a 100644
--- a/include/wx/zipstrm.h
+++ b/include/wx/zipstrm.h
@@ -112,8 +112,8 @@ enum wxZipFlags
 
 // Forward decls
 //
-class WXDLLIMPEXP_BASE wxZipEntry;
-class WXDLLIMPEXP_BASE wxZipInputStream;
+class WXDLLIMPEXP_FWD_BASE wxZipEntry;
+class WXDLLIMPEXP_FWD_BASE wxZipInputStream;
 
 
 /////////////////////////////////////////////////////////////////////////////
diff --git a/src/common/iconbndl.cpp b/src/common/iconbndl.cpp
index 961eb7f4a3..2d3074716b 100644
--- a/src/common/iconbndl.cpp
+++ b/src/common/iconbndl.cpp
@@ -54,7 +54,7 @@ public:
 protected:
     wxIconArray m_icons;
 
-    friend class WXDLLEXPORT wxIconBundle;
+    friend class wxIconBundle;
 };
 
 // ============================================================================
diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp
index cebbbae872..82311285ba 100644
--- a/src/generic/treectlg.cpp
+++ b/src/generic/treectlg.cpp
@@ -49,7 +49,7 @@
 // array types
 // -----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxGenericTreeItem;
+class WXDLLIMPEXP_FWD_CORE wxGenericTreeItem;
 
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxGenericTreeItem *, wxArrayGenericTreeItems);
 
diff --git a/src/stc/ScintillaWX.h b/src/stc/ScintillaWX.h
index cba7248983..26e9c239e5 100644
--- a/src/stc/ScintillaWX.h
+++ b/src/stc/ScintillaWX.h
@@ -60,8 +60,8 @@
 //----------------------------------------------------------------------
 
 
-class WXDLLIMPEXP_CORE wxDC;
-class WXDLLIMPEXP_STC wxStyledTextCtrl;           // forward
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_STC wxStyledTextCtrl;           // forward
 class ScintillaWX;
 
 
diff --git a/src/univ/themes/gtk.cpp b/src/univ/themes/gtk.cpp
index 018f9d3d36..0246f9d12a 100644
--- a/src/univ/themes/gtk.cpp
+++ b/src/univ/themes/gtk.cpp
@@ -66,7 +66,7 @@
 #include "wx/univ/inphand.h"
 #include "wx/univ/colschem.h"
 
-class WXDLLEXPORT wxGTKMenuGeometryInfo;
+class wxGTKMenuGeometryInfo;
 
 // ----------------------------------------------------------------------------
 // constants
@@ -1573,7 +1573,7 @@ void wxGTKRenderer::DrawSliderThumb(wxDC& dc,
 // ----------------------------------------------------------------------------
 
 // wxGTKMenuGeometryInfo: the wxMenuGeometryInfo used by wxGTKRenderer
-class WXDLLEXPORT wxGTKMenuGeometryInfo : public wxMenuGeometryInfo
+class wxGTKMenuGeometryInfo : public wxMenuGeometryInfo
 {
 public:
     virtual wxSize GetSize() const { return m_size; }