wxNotebook

This class represents a notebook control, which manages multiple windows with associated tabs.

To use the class, create a wxNotebook object and call AddPage or InsertPage, passing a window to be used as the page. Do not explicitly delete the window for a page that is currently managed by wxNotebook.

wxNotebookPage is a typedef for wxWindow.

Derived from

wxControl
wxWindow
wxEvtHandler
wxObject

Include files

<wx/notebook.h>

Window styles

wxNB_TOP Place tabs on the top side.
wxNB_LEFT Place tabs on the left side.
wxNB_RIGHT Place tabs on the right side.
wxNB_BOTTOM Place tabs under instead of above the notebook pages.
wxNB_FIXEDWIDTH (Windows only) All tabs will have same width.
wxNB_MULTILINE (Windows only) There can be several rows of tabs.
wxNB_NOPAGETHEME (Windows only) Display a solid colour on notebook pages, and not a gradient, which can reduce performance.
wxNB_FLAT (Windows CE only) Show tabs in a flat style.

The styles wxNB_LEFT, RIGHT and BOTTOM are not supported under Microsoft Windows XP when using visual themes.

See also window styles overview.

Event handling

To process input from a notebook control, use the following event handler macros to direct input to member functions that take a wxNotebookEvent argument.

EVT_NOTEBOOK_PAGE_CHANGED(id, func) The page selection was changed. Processes a wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED event.
EVT_NOTEBOOK_PAGE_CHANGING(id, func) The page selection is about to be changed. Processes a wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING event. This event can be vetoed.

Page backgrounds

On Windows XP, the default theme paints a gradient on the notebook's pages. If you wish to suppress this theme, for aesthetic or performance reasons, there are three ways of doing it. You can use wxNB_NOPAGETHEME to disable themed drawing for a particular notebook, you can call wxSystemOptions::SetOption to disable it for the whole application, or you can disable it for individual pages by using SetBackgroundColour.

To disable themed pages globally:

    wxSystemOptions::SetOption(wxT("msw.notebook.themed-background"), 0);

Set the value to 1 to enable it again.

To give a single page a solid background that more or less fits in with the overall theme, use:

    wxColour col = notebook->GetThemeBackgroundColour();
    if (col.Ok())
    {
        page->SetBackgroundColour(col);
    }

On platforms other than Windows, or if the application is not using Windows themes, GetThemeBackgroundColour will return an uninitialised colour object, and the above code will therefore work on all platforms.

See also

wxBookCtrl, wxNotebookEvent, wxImageList, notebook sample



wxNotebook::wxNotebook



wxNotebook(void)

Default constructor.



wxNotebook(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxNotebookNameStr)

Constructs a notebook control.

Note that sometimes you can reduce flicker by passing the wxCLIP_CHILDREN window style.

Parameters

parent
The parent window. Must be non-NULL.

id
The window identifier.

pos
The window position.

size
The window size.

style
The window style. See wxNotebook.

name
The name of the control (used only under Motif).



wxNotebook::~wxNotebook



~wxNotebook(void)

Destroys the wxNotebook object.



wxNotebook::AddPage



bool AddPage(wxNotebookPage* page, const wxString& text, bool select = false, int imageId = -1)

Adds a new page.

The call to this function may generate the page changing events.

Parameters

page
Specifies the new page.

text
Specifies the text for the new page.

select
Specifies whether the page should be selected.

imageId
Specifies the optional image index for the new page.

Return value

true if successful, false otherwise.

Remarks

Do not delete the page, it will be deleted by the notebook.

See also

wxNotebook::InsertPage



wxNotebook::AdvanceSelection



void AdvanceSelection(bool forward = true)

Cycles through the tabs.

The call to this function generates the page changing events.



wxNotebook::AssignImageList



void AssignImageList(wxImageList* imageList)

Sets the image list for the page control and takes ownership of the list.

See also

wxImageList, SetImageList



wxNotebook::Create



bool Create(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size, long style = 0, const wxString& name = wxNotebookNameStr)

Creates a notebook control. See wxNotebook::wxNotebook for a description of the parameters.



wxNotebook::DeleteAllPages



bool DeleteAllPages(void)

Deletes all pages.



wxNotebook::DeletePage



bool DeletePage(size_t page)

Deletes the specified page, and the associated window.

The call to this function generates the page changing events.



wxNotebook::GetCurrentPage

wxWindow * GetCurrentPage(void) const

Returns the currently selected notebook age or NULL.



wxNotebook::GetImageList

wxImageList* GetImageList(void) const

Returns the associated image list.

See also

wxImageList, wxNotebook::SetImageList



wxNotebook::GetPage



wxNotebookPage* GetPage(size_t page)

Returns the window at the given page position.



wxNotebook::GetPageCount

size_t GetPageCount(void) const

Returns the number of pages in the notebook control.



wxNotebook::GetPageImage

int GetPageImage(size_t nPage) const

Returns the image index for the given page.



wxNotebook::GetPageText

wxString GetPageText(size_t nPage) const

Returns the string for the given page.



wxNotebook::GetRowCount

int GetRowCount(void) const

Returns the number of rows in the notebook control.



wxNotebook::GetSelection

int GetSelection(void) const

Returns the currently selected page, or $-1$ if none was selected.

Note that this method may return either the previously or newly selected page when called from the EVT_NOTEBOOK_PAGE_CHANGED handler depending on the platform and so wxNotebookEvent::GetSelection should be used instead in this case.



wxNotebook::GetThemeBackgroundColour

wxColour GetThemeBackgroundColour(void) const

If running under Windows and themes are enabled for the application, this function returns a suitable colour for painting the background of a notebook page, and can be passed to SetBackgroundColour. Otherwise, an uninitialised colour will be returned.



wxNotebook::HitTest



int HitTest(const wxPoint& pt, long *flags = NULL)

Returns the index of the tab at the specified position or wxNOT_FOUND if none. If flags parameter is non NULL, the position of the point inside the tab is returned as well.

NB: This method is currently only implemented under wxMSW and wxUniv.

Parameters

pt
Specifies the point for the hit test.

flags
Return value for detailed information. One of the following values:
wxNB_HITTEST_NOWHERE There was no tab under this point.
wxNB_HITTEST_ONICON The point was over an icon (currently wxMSW only).
wxNB_HITTEST_ONLABEL The point was over a label (currently wxMSW only).
wxNB_HITTEST_ONITEM The point was over an item, but not on the label or icon.

Return value

Returns the zero-based tab index or wxNOT_FOUND if there is no tab is at the specified position.



wxNotebook::InsertPage



bool InsertPage(size_t index, wxNotebookPage* page, const wxString& text, bool select = false, int imageId = -1)

Inserts a new page at the specified position.

Parameters

index
Specifies the position for the new page.

page
Specifies the new page.

text
Specifies the text for the new page.

select
Specifies whether the page should be selected.

imageId
Specifies the optional image index for the new page.

Return value

true if successful, false otherwise.

Remarks

Do not delete the page, it will be deleted by the notebook.

See also

wxNotebook::AddPage



wxNotebook::OnSelChange



void OnSelChange(wxNotebookEvent& event)

An event handler function, called when the page selection is changed.

See also

wxNotebookEvent



wxNotebook::RemovePage



bool RemovePage(size_t page)

Deletes the specified page, without deleting the associated window.



wxNotebook::SetImageList



void SetImageList(wxImageList* imageList)

Sets the image list for the page control. It does not take ownership of the image list, you must delete it yourself.

See also

wxImageList, AssignImageList



wxNotebook::SetPadding



void SetPadding(const wxSize& padding)

Sets the amount of space around each page's icon and label, in pixels.

NB: The vertical padding cannot be changed in wxGTK.



wxNotebook::SetPageSize



void SetPageSize(const wxSize& size)

Sets the width and height of the pages.

NB: This method is currently not implemented for wxGTK.



wxNotebook::SetPageImage



bool SetPageImage(size_t page, int image)

Sets the image index for the given page. image is an index into the image list which was set with wxNotebook::SetImageList.



wxNotebook::SetPageText



bool SetPageText(size_t page, const wxString& text)

Sets the text for the given page.



wxNotebook::SetSelection



int SetSelection(size_t page)

Sets the selection for the given page, returning the previous selection.

The call to this function generates the page changing events.

See also

wxNotebook::GetSelection

ymasuda 平成17年11月19日