Scrollbars come in various guises in wxWidgets. All windows have the potential to show a vertical scrollbar and/or a horizontal scrollbar: it is a basic capability of a window. However, in practice, not all windows do make use of scrollbars, such as a single-line wx.TextCtrl.
Because any class derived from wxWindow may have scrollbars, there are functions to manipulate the scrollbars and event handlers to intercept scroll events. But just because a window generates a scroll event, doesn't mean that the window necessarily handles it and physically scrolls the window. The base class wxWindow in fact doesn't have any default functionality to handle scroll events. If you created a wxWindow object with scrollbars, and then clicked on the scrollbars, nothing at all would happen. This is deliberate, because the interpretation of scroll events varies from one window class to another.
wx.ScrolledWindow (formerly wxCanvas) is an example of a window that adds functionality to make scrolling really work. It assumes that scrolling happens in consistent units, not different-sized jumps, and that page size is represented by the visible portion of the window. It is suited to drawing applications, but perhaps not so suitable for a sophisticated editor in which the amount scrolled may vary according to the size of text on a given line. For this, you would derive from wxWindow and implement scrolling yourself. wx.Grid is an example of a class that implements its own scrolling, largely because columns and rows can vary in size.
The scrollbar model
The function wx.Window.SetScrollbar gives a clue about the way a scrollbar is modeled. This function takes the following arguments:
SetScrollbar(wxVERTICAL, 0, 16, 50);
Note that with the window at this size, the thumb position can never go above 50 minus 16, or 34.
You can determine how many lines are currently visible by dividing the current view size by the character height in pixels.
When defining your own scrollbar behaviour, you will always need to recalculate the scrollbar settings when the window size changes. You could therefore put your scrollbar calculations and SetScrollbar call into a function named AdjustScrollbars, which can be called initially and also from your wxSizeEvent handler function.