+ wxPosition VirtualHitTest(wxCoord x, wxCoord y) const;
+ const wxPosition VirtualHitTest(const wxPoint& pos) const;
+ //@}
+};
+
+
+
+/**
+ @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 the
+ wxScrolledWindow class which can be only used when
+ all rows have the same heights. It lacks some other wxScrolledWindow features
+ however, notably it can't scroll only a rectangle of the window and not its
+ entire client area.
+
+ To use this class, you need to derive from it and implement the
+ wxVarVScrollHelper::OnGetRowHeight pure virtual
+ method. You also must call wxVarVScrollHelper::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 wxVarVScrollHelper::GetVisibleRowsBegin
+ and wxVarVScrollHelper::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.
+
+ @library{wxcore}
+ @category{miscwnd}
+
+ @see wxHScrolledWindow, wxHVScrolledWindow
+*/
+class wxVScrolledWindow : public wxPanel, public wxVarVScrollHelper
+{
+public:
+ //@{
+ /**
+ This is the normal constructor, no need to call @c Create() after using this
+ one.
+ Note that @c wxVSCROLL is always automatically added to our 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();
+ 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 @ref wxvscrolledwindow() "non-default constuctor"
+ but returns status code: @true if ok, @false if the window couldn't
+ be created.
+ Just as with the constructor above, 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);
+
+ //@{
+ /**
+ 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.
+
+ Deprecated for wxVarVScrollHelper::SetRowCount.
+ */
+ size_t GetFirstVisibleLine();
+ const size_t GetLastVisibleLine();
+ const size_t GetLineCount();
+ const int HitTest(wxCoord x, wxCoord y);
+ const int HitTest(const wxPoint& pt);
+ const virtual wxCoord OnGetLineHeight(size_t line);
+ const virtual void OnGetLinesHint(size_t lineMin,
+ size_t lineMax);
+ const virtual void RefreshLine(size_t line);
+ virtual void RefreshLines(size_t from, size_t to);
+ virtual bool ScrollLines(int lines);
+ virtual bool ScrollPages(int pages);
+ bool ScrollToLine(size_t line);
+ void SetLineCount(size_t count);