+
+protected:
+
+ /**
+ The derived class must implement this function to actually draw the
+ item with the given index on the provided DC.
+
+ @param dc
+ The device context to use for drawing.
+ @param rect
+ The bounding rectangle for the item being drawn (DC clipping
+ region is set to this rectangle before calling this function).
+ @param n
+ The index of the item to be drawn.
+
+ @todo Change this function signature to non-const.
+ */
+ virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const = 0;
+
+ /**
+ This method is used to draw the item's background and, maybe, a border
+ around it.
+
+ The base class version implements a reasonable default behaviour which
+ consists in drawing the selected item with the standard background
+ colour and drawing a border around the item if it is either selected or
+ current.
+
+ @todo Change this function signature to non-const.
+ */
+ virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const;
+
+ /**
+ This method may be used to draw separators between the lines. The
+ rectangle passed to it may be modified, typically to deflate it a bit
+ before passing to OnDrawItem().
+
+ The base class version of this method doesn't do anything.
+
+ @param dc
+ The device context to use for drawing.
+ @param rect
+ The bounding rectangle for the item.
+ @param n
+ The index of the item.
+
+ @todo Change this function signature to non-const.
+ */
+ virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const;
+
+ /**
+ The derived class must implement this method to return the height of
+ the specified item (in pixels).
+ */
+ virtual wxCoord OnMeasureItem(size_t n) const = 0;