As this class has only inline methods it doesn't need to be exported from the
DLL and actually exporting it results in linking problems when using
wxScrolled<wxWindow> (which, unlike wxScrolled<wxPanel>, is not used in wx
itself and so doesn't seem to be instantiated) in DLL client even with VC > 6.
An alternative solution would be to change WXDLLIMPEXP_TEMPLATE_INSTANCE_CORE
macro to explicitly instantiate the template in the DLL even for VC > 6 but
this wouldn't solve the problem for wxScrolled<CustomClass> while removing the
DLL export declaration should.
Also use wxScrolled<wxWindow> in addition to wxScrolled<wxPanel> in the scroll
sample to test that it links correctly.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62036
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// but wxScrolledWindow includes wxControlContainer functionality and that's
// not always desirable.
template<class T>
// but wxScrolledWindow includes wxControlContainer functionality and that's
// not always desirable.
template<class T>
-class WXDLLIMPEXP_CORE wxScrolled : public T,
- public wxScrollHelper,
- private wxScrolledT_Helper
+class wxScrolled : public T,
+ public wxScrollHelper,
+ private wxScrolledT_Helper
{
public:
wxScrolled() : wxScrollHelper(this) { }
{
public:
wxScrolled() : wxScrollHelper(this) { }
-// VC++ <= 6 requires this; it's unlikely any other specializations would
-// be needed by user code _and_ they were using VC6, so we list only wxWindow
-// (typical use) and wxPanel (wxScrolledWindow use) specializations here
-WXDLLIMPEXP_TEMPLATE_INSTANCE_CORE( wxScrolled<wxPanel> )
-WXDLLIMPEXP_TEMPLATE_INSTANCE_CORE( wxScrolled<wxWindow> )
-
// for compatibility with existing code, we provide wxScrolledWindow
// "typedef" for wxScrolled<wxPanel>. It's not a real typedef because we
// want wxScrolledWindow to show in wxRTTI information (the class is widely
// for compatibility with existing code, we provide wxScrolledWindow
// "typedef" for wxScrolled<wxPanel>. It's not a real typedef because we
// want wxScrolledWindow to show in wxRTTI information (the class is widely
/////////////////////////////////////////////////////////////////////////////
// Name: scroll.cpp
/////////////////////////////////////////////////////////////////////////////
// Name: scroll.cpp
-// Purpose: wxScrolledWindow sample
+// Purpose: wxScrolled sample
// Author: Robert Roebling
// RCS-ID: $Id$
// Copyright: (C) 1998 Robert Roebling, 2002 Ron Lee, 2003 Matt Gregory
// Author: Robert Roebling
// RCS-ID: $Id$
// Copyright: (C) 1998 Robert Roebling, 2002 Ron Lee, 2003 Matt Gregory
// ----------------------------------------------------------------------------
// MySimpleCanvas: a scrolled window which draws a simple rectangle
// ----------------------------------------------------------------------------
// MySimpleCanvas: a scrolled window which draws a simple rectangle
-class MySimpleCanvas : public wxScrolledWindow
+class MySimpleCanvas : public wxScrolled<wxWindow>
};
MySimpleCanvas(wxWindow *parent)
};
MySimpleCanvas(wxWindow *parent)
- : wxScrolledWindow(parent, wxID_ANY)
+ : wxScrolled<wxWindow>(parent, wxID_ANY)
{
SetScrollRate( 10, 10 );
SetVirtualSize( WIDTH, HEIGHT );
{
SetScrollRate( 10, 10 );
SetVirtualSize( WIDTH, HEIGHT );
// ----------------------------------------------------------------------
// MyCanvas
// ----------------------------------------------------------------------
// MyCanvas
-class MyCanvas : public wxScrolledWindow
+class MyCanvas : public wxScrolled<wxPanel>
{
public:
MyCanvas(wxWindow *parent);
{
public:
MyCanvas(wxWindow *parent);
};
// ----------------------------------------------------------------------------
};
// ----------------------------------------------------------------------------
-// example using sizers with wxScrolledWindow
+// example using sizers with wxScrolled
// ----------------------------------------------------------------------------
const wxSize SMALL_BUTTON( 100, 50 );
const wxSize LARGE_BUTTON( 300, 200 );
// ----------------------------------------------------------------------------
const wxSize SMALL_BUTTON( 100, 50 );
const wxSize LARGE_BUTTON( 300, 200 );
-class MySizerScrolledWindow : public wxScrolledWindow
+class MySizerScrolledWindow : public wxScrolled<wxWindow>
{
public:
MySizerScrolledWindow(wxWindow *parent);
{
public:
MySizerScrolledWindow(wxWindow *parent);
class MySubColLabels : public wxWindow
{
public:
class MySubColLabels : public wxWindow
{
public:
- MySubColLabels(wxScrolledWindow *parent)
+ MySubColLabels(wxScrolled<wxWindow> *parent)
: wxWindow(parent, wxID_ANY)
{
m_owner = parent;
: wxWindow(parent, wxID_ANY)
{
m_owner = parent;
dc.DrawText("Column 3", 205, 5);
}
dc.DrawText("Column 3", 205, 5);
}
- wxScrolledWindow *m_owner;
+ wxScrolled<wxWindow> *m_owner;
};
class MySubRowLabels : public wxWindow
{
public:
};
class MySubRowLabels : public wxWindow
{
public:
- MySubRowLabels(wxScrolledWindow *parent)
+ MySubRowLabels(wxScrolled<wxWindow> *parent)
: wxWindow(parent, wxID_ANY)
{
m_owner = parent;
: wxWindow(parent, wxID_ANY)
{
m_owner = parent;
dc.DrawText("Row 6", 5, 130);
}
dc.DrawText("Row 6", 5, 130);
}
- wxScrolledWindow *m_owner;
+ wxScrolled<wxWindow> *m_owner;
};
class MySubCanvas : public wxPanel
{
public:
};
class MySubCanvas : public wxPanel
{
public:
- MySubCanvas(wxScrolledWindow *parent, wxWindow *cols, wxWindow *rows)
+ MySubCanvas(wxScrolled<wxWindow> *parent, wxWindow *cols, wxWindow *rows)
: wxPanel(parent, wxID_ANY)
{
m_owner = parent;
: wxPanel(parent, wxID_ANY)
{
m_owner = parent;
- wxScrolledWindow *m_owner;
+ wxScrolled<wxWindow> *m_owner;
wxWindow *m_colLabels,
*m_rowLabels;
};
wxWindow *m_colLabels,
*m_rowLabels;
};
-class MySubScrolledWindow : public wxScrolledWindow
+class MySubScrolledWindow : public wxScrolled<wxWindow>
};
MySubScrolledWindow(wxWindow *parent)
};
MySubScrolledWindow(wxWindow *parent)
- : wxScrolledWindow(parent, wxID_ANY)
+ : wxScrolled<wxWindow>(parent, wxID_ANY)
{
// create the children
MySubColLabels *cols = new MySubColLabels(this);
{
// create the children
MySubColLabels *cols = new MySubColLabels(this);
};
// ----------------------------------------------------------------------------
};
// ----------------------------------------------------------------------------
-// more simple examples of wxScrolledWindow usage
+// more simple examples of wxScrolled usage
// ----------------------------------------------------------------------------
// base class for both of them
// ----------------------------------------------------------------------------
// base class for both of them
-class MyScrolledWindowBase : public wxScrolledWindow
+class MyScrolledWindowBase : public wxScrolled<wxWindow>
{
public:
MyScrolledWindowBase(wxWindow *parent)
{
public:
MyScrolledWindowBase(wxWindow *parent)
- : wxScrolledWindow(parent, wxID_ANY,
- wxDefaultPosition, wxDefaultSize,
- wxBORDER_SUNKEN)
+ : wxScrolled<wxWindow>(parent, wxID_ANY,
+ wxDefaultPosition, wxDefaultSize,
+ wxBORDER_SUNKEN)
{
m_nLines = 50;
m_winSync = NULL;
{
m_nLines = 50;
m_winSync = NULL;
virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL)
{
virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL)
{
- wxScrolledWindow::ScrollWindow(dx, dy, rect);
+ wxScrolled<wxWindow>::ScrollWindow(dx, dy, rect);
// functionality
// ----------------------------------------------------------------------------
// functionality
// ----------------------------------------------------------------------------
-class MyAutoScrollingWindow : public wxScrolledWindow
+class MyAutoScrollingWindow : public wxScrolled<wxWindow>
{
public:
MyAutoScrollingWindow( wxWindow* parent );
{
public:
MyAutoScrollingWindow( wxWindow* parent );
const wxWindowID ID_NEWBUTTON = wxWindow::NewControlId();
const wxWindowID ID_NEWBUTTON = wxWindow::NewControlId();
-BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
+BEGIN_EVENT_TABLE(MyCanvas, wxScrolled<wxPanel>)
EVT_PAINT( MyCanvas::OnPaint)
EVT_RIGHT_DOWN( MyCanvas::OnMouseRightDown)
EVT_MOUSEWHEEL( MyCanvas::OnMouseWheel)
EVT_PAINT( MyCanvas::OnPaint)
EVT_RIGHT_DOWN( MyCanvas::OnMouseRightDown)
EVT_MOUSEWHEEL( MyCanvas::OnMouseWheel)
END_EVENT_TABLE()
MyCanvas::MyCanvas(wxWindow *parent)
END_EVENT_TABLE()
MyCanvas::MyCanvas(wxWindow *parent)
- : wxScrolledWindow(parent, wxID_ANY,
- wxDefaultPosition, wxDefaultSize,
- wxSUNKEN_BORDER | wxTAB_TRAVERSAL)
+ : wxScrolled<wxPanel>(parent, wxID_ANY,
+ wxDefaultPosition, wxDefaultSize,
+ wxSUNKEN_BORDER | wxTAB_TRAVERSAL)
{
// you can use either a single SetScrollbars() call or these 2 functions,
// usually using them is better because you normally won't need to change
{
// you can use either a single SetScrollbars() call or these 2 functions,
// usually using them is better because you normally won't need to change
// ----------------------------------------------------------------------------
MySizerScrolledWindow::MySizerScrolledWindow(wxWindow *parent)
// ----------------------------------------------------------------------------
MySizerScrolledWindow::MySizerScrolledWindow(wxWindow *parent)
- : wxScrolledWindow(parent)
+ : wxScrolled<wxWindow>(parent)
{
SetBackgroundColour( "GREEN" );
{
SetBackgroundColour( "GREEN" );
void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
{
void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
{
- (void)wxMessageBox( "wxScrolledWindow sample\n"
+ (void)wxMessageBox( "Scrolled window sample\n"
"\n"
"Robert Roebling (c) 1998\n"
"Vadim Zeitlin (c) 2008\n"
"\n"
"Robert Roebling (c) 1998\n"
"Vadim Zeitlin (c) 2008\n"
// MyAutoScrollingWindow
// ----------------------------------------------------------------------------
// MyAutoScrollingWindow
// ----------------------------------------------------------------------------
-BEGIN_EVENT_TABLE(MyAutoScrollingWindow, wxScrolledWindow)
+BEGIN_EVENT_TABLE(MyAutoScrollingWindow, wxScrolled<wxWindow>)
EVT_LEFT_DOWN(MyAutoScrollingWindow::OnMouseLeftDown)
EVT_LEFT_UP(MyAutoScrollingWindow::OnMouseLeftUp)
EVT_MOTION(MyAutoScrollingWindow::OnMouseMove)
EVT_LEFT_DOWN(MyAutoScrollingWindow::OnMouseLeftDown)
EVT_LEFT_UP(MyAutoScrollingWindow::OnMouseLeftUp)
EVT_MOTION(MyAutoScrollingWindow::OnMouseMove)
END_EVENT_TABLE()
MyAutoScrollingWindow::MyAutoScrollingWindow(wxWindow* parent)
END_EVENT_TABLE()
MyAutoScrollingWindow::MyAutoScrollingWindow(wxWindow* parent)
- : wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize,
- wxVSCROLL | wxHSCROLL | wxSUNKEN_BORDER),
+ : wxScrolled<wxWindow>(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize,
+ wxVSCROLL | wxHSCROLL | wxSUNKEN_BORDER),
m_selStart(-1, -1),
m_cursor(-1, -1),
m_font(9, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)
m_selStart(-1, -1),
m_cursor(-1, -1),
m_font(9, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)