+/**
+ @class wxVScrolledWindow
+ @wxheader{vscroll.h}
+
+ In the name of this class, "V" may stand for "variable" because it can be
+ used for scrolling rows of variable heights; "virtual", because it is not
+ necessary to know the heights of all rows in advance -- only those which
+ are shown on the screen need to be measured; or even "vertical", because
+ this class only supports scrolling vertically.
+
+ In any case, this is a generalization of wxScrolled which can be only used
+ when all rows have the same heights. It lacks some other wxScrolled
+ features however, notably it can't scroll specific pixel sizes of the
+ window or its exact client area size.
+
+ To use this class, you need to derive from it and implement the
+ OnGetRowHeight() pure virtual method. You also must call SetRowCount() to
+ let the base class know how many rows it should display, but from that
+ moment on the scrolling is handled entirely by wxVScrolledWindow. You only
+ need to draw the visible part of contents in your @c OnPaint() method as
+ usual. You should use GetVisibleRowsBegin() and GetVisibleRowsEnd() to
+ select the lines to display. Note that the device context origin is not
+ shifted so the first visible row always appears at the point (0, 0) in
+ physical as well as logical coordinates.
+
+ @section wxWidgets 2.8 Compatibility Functions
+
+ The following functions provide backwards compatibility for applications
+ originally built using wxVScrolledWindow in 2.6 or 2.8. Originally,
+ wxVScrolledWindow referred to scrolling "lines". We now use "units" in
+ wxVarScrollHelperBase to avoid implying any orientation (since the
+ functions are used for both horizontal and vertical scrolling in derived
+ classes). And in the new wxVScrolledWindow and wxHScrolledWindow classes,
+ we refer to them as "rows" and "columns", respectively. This is to help
+ clear some confusion in not only those classes, but also in
+ wxHVScrolledWindow where functions are inherited from both.
+
+ You are encouraged to update any existing code using these function to use
+ the new replacements mentioned below, and avoid using these functions for
+ any new code as they are deprecated.
+
+ @beginTable
+ @row2col{ <tt>size_t %GetFirstVisibleLine() const</tt>,
+ Deprecated for GetVisibleRowsBegin(). }
+ @row2col{ <tt>size_t %GetLastVisibleLine() const</tt>,
+ Deprecated for GetVisibleRowsEnd(). This function originally had a
+ slight design flaw in that it was possible to return
+ <tt>(size_t)-1</tt> (ie: a large positive number) if the scroll
+ position was 0 and the first line wasn't completely visible. }
+ @row2col{ <tt>size_t %GetLineCount() const</tt>,
+ Deprecated for GetRowCount(). }
+ @row2col{ <tt>int %HitTest(wxCoord x\, wxCoord y) const
+ @n int %HitTest(const wxPoint& pt) const</tt>,
+ Deprecated for VirtualHitTest(). }
+ @row2col{ <tt>virtual wxCoord %OnGetLineHeight(size_t line) const</tt>,
+ Deprecated for OnGetRowHeight(). }
+ @row2col{ <tt>virtual void %OnGetLinesHint(size_t lineMin\, size_t lineMax) const</tt>,
+ Deprecated for OnGetRowsHeightHint(). }
+ @row2col{ <tt>virtual void %RefreshLine(size_t line)</tt>,
+ Deprecated for RefreshRow(). }
+ @row2col{ <tt>virtual void %RefreshLines(size_t from\, size_t to)</tt>,
+ Deprecated for RefreshRows(). }
+ @row2col{ <tt>virtual bool %ScrollLines(int lines)</tt>,
+ Deprecated for ScrollRows(). }
+ @row2col{ <tt>virtual bool %ScrollPages(int pages)</tt>,
+ Deprecated for ScrollRowPages(). }
+ @row2col{ <tt>bool %ScrollToLine(size_t line)</tt>,
+ Deprecated for ScrollToRow(). }
+ @row2col{ <tt>void %SetLineCount(size_t count)</tt>,
+ Deprecated for SetRowCount(). }
+ @endTable
+
+ @library{wxcore}
+ @category{miscwnd}
+
+ @see wxHScrolledWindow, wxHVScrolledWindow
+*/
+class wxVScrolledWindow : public wxPanel, public wxVarVScrollHelper
+{
+public:
+ /**
+ Default constructor, you must call Create() later.
+ */
+ wxVScrolledWindow();
+ /**
+ This is the normal constructor, no need to call Create() after using
+ this constructor.
+
+ @note @c wxVSCROLL is always automatically added to the style, there is
+ no need to specify it explicitly.
+
+ @param parent
+ The parent window, must not be @NULL.
+ @param id
+ The identifier of this window, wxID_ANY by default.
+ @param pos
+ The initial window position.
+ @param size
+ The initial window size.
+ @param style
+ The window style. There are no special style bits defined for this
+ class.
+ @param name
+ The name for this window; usually not used.
+ */
+ wxVScrolledWindow(wxWindow* parent, wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize, long style = 0,
+ const wxString& name = wxPanelNameStr);
+
+ /**
+ Same as the non-default constuctor, but returns a status code: @true if
+ ok, @false if the window couldn't be created.
+
+ Just as with the constructor, the @c wxVSCROLL style is always used,
+ there is no need to specify it explicitly.
+ */
+ bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize, long style = 0,
+ const wxString& name = wxPanelNameStr);
+};
+
+
+