+ See @ref overview_events_prog for more information.
+ */
+ virtual int ChangeSelection(size_t page) = 0;
+
+ //@}
+
+
+
+ /**
+ Sets the width and height of the pages.
+
+ @note This method is currently not implemented for wxGTK.
+ */
+ virtual void SetPageSize(const wxSize& size);
+
+ /**
+ Returns the index of the tab at the specified position or @c wxNOT_FOUND
+ if none. If @a flags parameter is non-@NULL, the position of the point
+ inside the tab is returned as well.
+
+ @param pt
+ Specifies the point for the hit test.
+ @param flags
+ Return value for detailed information. One of the following values:
+ <TABLE><TR><TD>wxBK_HITTEST_NOWHERE</TD>
+ <TD>There was no tab under this point.</TD></TR>
+ <TR><TD>wxBK_HITTEST_ONICON</TD>
+ <TD>The point was over an icon (currently wxMSW only).</TD></TR>
+ <TR><TD>wxBK_HITTEST_ONLABEL</TD>
+ <TD>The point was over a label (currently wxMSW only).</TD></TR>
+ <TR><TD>wxBK_HITTEST_ONITEM</TD>
+ <TD>The point was over an item, but not on the label or icon.</TD></TR>
+ <TR><TD>wxBK_HITTEST_ONPAGE</TD>
+ <TD>The point was over a currently selected page, not over any tab.
+ Note that this flag is present only if wxNOT_FOUND is returned.</TD></TR>
+ </TABLE>
+
+ @return Returns the zero-based tab index or @c wxNOT_FOUND if there is no
+ tab at the specified position.
+ */
+ virtual int HitTest(const wxPoint& pt, long* flags = NULL) const;
+
+
+
+ /**
+ @name Page management functions
+
+ Functions for adding/removing pages from this control.
+ */
+ //@{
+
+ /**
+ Adds a new page.
+ The call to this function may generate the page changing events.
+
+ @param page
+ Specifies the new page.
+ @param text
+ Specifies the text for the new page.
+ @param select
+ Specifies whether the page should be selected.
+ @param imageId
+ Specifies the optional image index for the new page.
+
+ @return @true if successful, @false otherwise.
+
+ @remarks Do not delete the page, it will be deleted by the book control.
+
+ @see InsertPage()
+ */
+ virtual bool AddPage(wxWindow* page, const wxString& text,
+ bool select = false, int imageId = wxNOT_FOUND);
+
+ /**
+ Deletes all pages.
+ */
+ virtual bool DeleteAllPages();
+
+ /**
+ Deletes the specified page, and the associated window.
+ The call to this function generates the page changing events.
+ */
+ virtual bool DeletePage(size_t page);
+
+ /**
+ Inserts a new page at the specified position.
+
+ @param index
+ Specifies the position for the new page.
+ @param page
+ Specifies the new page.
+ @param text
+ Specifies the text for the new page.
+ @param select
+ Specifies whether the page should be selected.
+ @param imageId
+ Specifies the optional image index for the new page.
+
+ @return @true if successful, @false otherwise.
+
+ @remarks Do not delete the page, it will be deleted by the book control.
+
+ @see AddPage()
+ */
+ virtual bool InsertPage(size_t index,
+ wxWindow* page,
+ const wxString& text,
+ bool select = false,
+ int imageId = wxNOT_FOUND) = 0;
+
+ /**
+ Deletes the specified page, without deleting the associated window.
+ */
+ virtual bool RemovePage(size_t page);
+
+ /**
+ Returns the number of pages in the control.
+ */
+ virtual size_t GetPageCount() const;
+
+ /**
+ Returns the window at the given page position.
+ */
+ wxWindow* GetPage(size_t page) const;
+
+ //@}
+
+
+/*
+ other functions which may be worth documenting:
+
+ // geometry
+ // --------
+
+ // calculate the size of the control from the size of its page
+ virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
+
+ // get/set size of area between book control area and page area
+ unsigned int GetInternalBorder() const { return m_internalBorder; }
+ void SetInternalBorder(unsigned int border) { m_internalBorder = border; }
+
+ // Sets/gets the margin around the controller
+ void SetControlMargin(int margin) { m_controlMargin = margin; }
+ int GetControlMargin() const { return m_controlMargin; }
+
+ // returns true if we have wxBK_TOP or wxBK_BOTTOM style
+ bool IsVertical() const { return HasFlag(wxBK_BOTTOM | wxBK_TOP); }
+
+ // set/get option to shrink to fit current page
+ void SetFitToCurrentPage(bool fit) { m_fitToCurrentPage = fit; }
+ bool GetFitToCurrentPage() const { return m_fitToCurrentPage; }
+
+ // returns the sizer containing the control, if any
+ wxSizer* GetControlSizer() const { return m_controlSizer; }
+
+ // we do have multiple pages
+ virtual bool HasMultiplePages() const { return true; }
+
+ // we don't want focus for ourselves
+ virtual bool AcceptsFocus() const { return false; }
+
+ // returns true if the platform should explicitly apply a theme border
+ virtual bool CanApplyThemeBorder() const { return false; }
+*/