\chapter{Alphabetical class reference}\label{classref}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\overview{Tab classes overview}{wxtaboverview}

\section{\class{wxPanelTabView}: wxObject}\label{wxpaneltabview}

\overview{wxTabView overview}{wxtabviewoverview}

\membersection{wxPanelTabView::wxPanelTabView}

\func{void}{wxPanelTabView}{\param{wxPanel *}{panel}, \param{long }{style = wxTAB\_STYLE\_DRAW\_BOX \pipe wxTAB\_STYLE\_COLOUR\_INTERIOR}}

Constructor. {\it panel} should be a wxTabbedPanel or wxTabbedDialogBox: the type will be checked by the view at run time.

{\it style} may be a bit list of the following:

\begin{twocollist}\itemsep=0pt
\twocolitem{wxTAB\_STYLE\_DRAW\_BOX}{Draw a box around the view area. Most commonly used for dialogs.}
\twocolitem{wxTAB\_STYLE\_COLOUR\_INTERIOR}{Draw tab backgrounds in the specified colour. Omitting this style
will ensure that the tab background matches the dialog background.}
\end{twocollist}

\membersection{wxPanelTabView::\destruct{wxPanelTabView}}

\func{void}{\destruct{wxPanelTabView}}{\void}

Destructor. This destructor deletes all the panels associated with the view.
If you do not wish this to happen, call ClearWindows with argument FALSE before the
view is likely to be destroyed. This will clear the list of windows, without deleting them.

\membersection{wxPanelTabView::AddTabWindow}\label{wxpaneltabviewaddtabwindow}

\func{void}{AddTabPanel}{\param{int}{ id}, \param{wxWindow *}{window}}

Adds a window to the view. The window is associated with the tab identifier, and will be shown or hidden as the tab
is selected or deselected.

\membersection{wxPanelTabView::ClearWindows}

\func{void}{ClearWindows}{\param{Bool}{ deleteWindows = TRUE}}

Removes the child windows from the view. If {\it deleteWindows} is TRUE, the windows will be deleted.

\membersection{wxPanelTabView::GetCurrentWindow}

\func{wxPanel *}{GetCurrentWindow}{\void}

Returns the child window currently being displayed on the tabbed panel or dialog box.

\membersection{wxPanelTabView::GetTabWindow}

\func{wxWindow *}{GetTabWindow}{\param{int}{ id}}

Returns the window associated with the tab identifier.

\membersection{wxPanelTabView::ShowWindowForTab}

\func{void}{ShowWindowForTab}{\param{int}{ id}}

Shows the child window corresponding to the tab identifier, and hides the previously shown window.



\section{\class{wxTabbedDialogBox}: wxDialogBox}\label{wxtabbeddialogbox}

\overview{Tab classes overview}{wxtaboverview}

\membersection{wxTabbedDialogBox::wxTabbedDialogBox}

\func{void}{wxTabbedDialogBox}{\param{wxWindow *}{parent}, \param{char *}{title}, \param{Bool }{modal}, \param{int}{ x}, \param{int}{ y}, \param{int}{ width}, \param{int}{ height},
 \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name="dialogBox"}}

Constructor.

\membersection{wxTabbedDialogBox::\destruct{wxTabbedDialogBox}}

\func{void}{\destruct{wxTabbedDialogBox}}{\void}

Destructor. This destructor deletes the tab view associated with the dialog box.
If you do not wish this to happen, set the tab view to NULL before destruction (for example,
in the OnClose member).

\membersection{wxTabbedDialogBox::SetTabView}

\func{void}{SetTabView}{\param{wxTabView *}{view}}

Sets the tab view associated with the dialog box.

\membersection{wxTabbedDialogBox::GetTabView}

\func{wxTabView *}{GetTabView}{\void}

Returns the tab view associated with the dialog box.


\section{\class{wxTabbedPanel}: wxPanel}\label{wxtabbedpanel}

\overview{Tab classes overview}{wxtaboverview}

\membersection{wxTabbedPanel::wxTabbedPanel}

\func{void}{wxTabbedPanel}{\param{wxWindow *}{parent}, \param{int}{ x}, \param{int}{ y}, \param{int}{ width}, \param{int}{ height},
 \param{long}{ style=0}, \param{char *}{name="panel"}}

Constructor.

\membersection{wxTabbedPanel::SetTabView}

\func{void}{SetTabView}{\param{wxTabView *}{view}}

Sets the tab view associated with the panel.

\membersection{wxTabbedPanel::GetTabView}

\func{wxTabView *}{GetTabView}{\void}

Returns the tab view associated with the panel.



\section{\class{wxTabControl}: wxObject}\label{wxtabcontrol}

\overview{Tab classes overview}{wxtaboverview}

You will rarely need to use this class directly.

\membersection{wxTabControl::wxTabControl}

\func{void}{wxTabControl}{\param{wxTabView *}{view = NULL}}

Constructor.

\membersection{wxTabControl::GetColPosition}

\func{int}{GetColPosition}{\void}

Returns the position of the tab in the tab column.

\membersection{wxTabControl::GetFont}

\func{wxFont *}{GetFont}{\void}

Returns the font to be used for this tab.

\membersection{wxTabControl::GetHeight}

\func{int}{GetHeight}{\void}

Returns the tab height.

\membersection{wxTabControl::GetId}

\func{int}{GetId}{\void}

Returns the tab identifier.

\membersection{wxTabControl::GetLabel}

\func{wxString}{GetLabel}{\void}

Returns the tab label.

\membersection{wxTabControl::GetRowPosition}

\func{int}{GetRowPosition}{\void}

Returns the position of the tab in the layer or row.

\membersection{wxTabControl::GetSelected}

\func{Bool}{GetSelected}{\void}

Returns the selected flag.

\membersection{wxTabControl::GetWidth}

\func{int}{GetWidth}{\void}

Returns the tab width.

\membersection{wxTabControl::GetX}

\func{int}{GetX}{\void}

Returns the x offset from the top-left of the view area.

\membersection{wxTabControl::GetY}

\func{int}{GetY}{\void}

Returns the y offset from the top-left of the view area.

\membersection{wxTabControl::HitTest}

\func{Bool}{HitTest}{\param{int}{ x}, \param{int}{ y}}

Returns TRUE if the point x, y is within the tab area.

\membersection{wxTabControl::OnDraw}

\func{void}{OnDraw}{\param{wxDC *}{dc}, \param{Bool}{ lastInRow}}

Draws the tab control on the given device context.

\membersection{wxTabControl::SetColPosition}

\func{void}{SetColPosition}{\param{int}{ pos}}

Sets the position in the column.

\membersection{wxTabControl::SetFont}

\func{void}{SetFont}{\param{wxFont *}{font}}

Sets the font to be used for this tab.

\membersection{wxTabControl::SetId}

\func{void}{SetId}{\param{int}{ id}}

Sets the tab identifier.

\membersection{wxTabControl::SetLabel}

\func{void}{SetLabel}{\param{const wxString\& }{str}}

Sets the label for the tab.

\membersection{wxTabControl::SetPosition}

\func{void}{SetPosition}{\param{int}{ x}, \param{int}{ y}}

Sets the x and y offsets for this tab, measured from the top-left of the view area.

\membersection{wxTabControl::SetRowPosition}

\func{void}{SetRowPosition}{\param{int}{ pos}}

Sets the position on the layer (row).

\membersection{wxTabControl::SetSelected}

\func{void}{SetSelected}{\param{Bool }{selected}}

Sets the selection flag for this tab (does not set the current tab for the view;
use wxTabView::SetSelectedTab for that).

\membersection{wxTabControl::SetSize}

\func{void}{SetSize}{\param{int}{ width}, \param{int}{ height}}

Sets the width and height for this tab.



\section{\class{wxTabView}: wxObject}\label{wxtabview}

\overview{wxTabView overview}{wxtabviewoverview}

\membersection{wxTabView::wxTabView}

\func{void}{wxTabView}{\param{long }{style = wxTAB\_STYLE\_DRAW\_BOX \pipe wxTAB\_STYLE\_COLOUR\_INTERIOR}}

Constructor.

{\it style} may be a bit list of the following:

\begin{twocollist}\itemsep=0pt
\twocolitem{wxTAB\_STYLE\_DRAW\_BOX}{Draw a box around the view area. Most commonly used for dialogs.}
\twocolitem{wxTAB\_STYLE\_COLOUR\_INTERIOR}{Draw tab backgrounds in the specified colour. Omitting this style
will ensure that the tab background matches the dialog background.}
\end{twocollist}

\membersection{wxTabView::AddTab}\label{wxtabviewaddtab}

\func{wxTabControl *}{AddTab}{\param{int}{ id}, \param{const wxString\& }{label}, \param{wxTabControl *}{existingTab=NULL}}

Adds a tab to the view.

{\it id} is the application-chosen identifier for the tab, which will be used in subsequent tab operations.

{\it label} is the label to give the tab.

{\it existingTab} maybe NULL to specify a new tab, or non-NULL to indicate that an existing tab should be used.

A new layer (row) is started when the current layer has been filled up with tabs.

\membersection{wxTabView::CalculateTabWidth}\label{wxtabviewcalculatetabwidth}

\func{int}{CalculateTabWidth}{\param{int}{ noTabs}, \param{Bool}{ adjustView = FALSE}}

The application can specify the tab width using this function, in terms
of the number of tabs per layer (row) which will fit the view area, which
should have been set previously with SetViewRect.

{\it noTabs} is the number of tabs which should take up the full width
of the view area.

{\it adjustView} can be set to TRUE in order to readjust the view width
to exactly fit the given number of tabs. 

The new tab width is returned.

\membersection{wxTabView::ClearTabs}

\func{void}{ClearTabs}{\param{Bool }{deleteTabs=TRUE}}

Clears the tabs, deleting them if {\it deleteTabs} is TRUE.

\membersection{wxTabView::Draw}

\func{void}{Draw}{\void}

Draws the tab and (optionally) a box around the view area.

\membersection{wxTabView::FindTabControlForId}

\func{wxTabControl *}{FindTabControlForId}{\param{int}{ id}}

Finds the wxTabControl corresponding to {\it id}.

\membersection{wxTabView::FindTabControlForPosition}

\func{wxTabControl *}{FindTabControlForPosition}{\param{int}{ layer}, \param{int}{ position}}

Finds the wxTabControl at layer {\it layer}, position in layer {\it position}, both starting from
zero. Note that tabs change layer as they are selected or deselected.

\membersection{wxTabView::GetBackgroundBrush}

\func{wxBrush *}{GetBackgroundBrush}{\void}

Returns the brush used to draw in the background colour. It is set when
SetBackgroundColour is called. 

\membersection{wxTabView::GetBackgroundColour}

\func{wxColour}{GetBackgroundColour}{\void}

Returns the colour used for each tab background. By default, this is
light grey. To ensure a match with the dialog or panel background, omit
the wxTAB\_STYLE\_COLOUR\_INTERIOR flag from the wxTabView constructor. 

\membersection{wxTabView::GetBackgroundPen}

\func{wxPen *}{GetBackgroundPen}{\void}

Returns the pen used to draw in the background colour. It is set when
SetBackgroundColour is called. 

\membersection{wxTabView::GetDC}

\func{wxDC *}{GetDC}{\void}

Returns the current device context for the view.

\membersection{wxTabView::GetHighlightColour}

\func{wxColour}{GetHighlightColour}{\void}

Returns the colour used for bright highlights on the left side of `3D' surfaces. By default, this is white.

\membersection{wxTabView::GetHighlightPen}

\func{wxPen *}{GetHighlightPen}{\void}

Returns the pen used to draw 3D effect highlights. This is set when
SetHighlightColour is called. 

\membersection{wxTabView::GetHorizontalTabOffset}

\func{int}{GetHorizontalTabOffset}{\void}

Returns the horizontal spacing by which each tab layer is offset from the one below.

\membersection{wxTabView::GetNumberOfLayers}

\func{int}{GetNumberOfLayers}{\void}

Returns the number of layers (rows of tabs).

\membersection{wxTabView::GetSelectedTabFont}

\func{wxFont *}{GetSelectedTabFont}{\void}

Returns the font to be used for the selected tab label.

\membersection{wxTabView::GetShadowColour}

\func{wxColour}{GetShadowColour}{\void}

Returns the colour used for shadows on the right-hand side of `3D' surfaces. By default, this is dark grey.

\membersection{wxTabView::GetTabHeight}

\func{int}{GetTabHeight}{\void}

Returns the tab default height.

\membersection{wxTabView::GetTabFont}

\func{wxFont *}{GetTabFont}{\void}

Returns the tab label font.

\membersection{wxTabView::GetTabSelectionHeight}

\func{int}{GetTabSelectionHeight}{\void}

Returns the height to be used for the currently selected tab; normally a few pixels
higher than the other tabs.

\membersection{wxTabView::GetTabStyle}

\func{long}{GetTabStyle}{\void}

Returns the tab style. See constructor documentation for details of valid styles.

\membersection{wxTabView::GetTabWidth}

\func{int}{GetTabWidth}{\void}

Returns the tab default width.

\membersection{wxTabView::GetTextColour}

\func{wxColour}{GetTextColour}{\void}

Returns the colour used to draw label text. By default, this is
black.

\membersection{wxTabView::GetTopMargin}

\func{int}{GetTopMargin}{\void}

Returns the height between the top of the view area and the bottom of the first
row of tabs.

\membersection{wxTabView::GetShadowPen}

\func{wxPen *}{GetShadowPen}{\void}

Returns the pen used to draw 3D effect shadows. This is set when
SetShadowColour is called. 

\membersection{wxTabView::GetViewRect}

\func{wxRectangle}{GetViewRect}{\void}

Returns the rectangle specifying the view area (above which tabs are
placed).

\membersection{wxTabView::GetVerticalTabTextSpacing}

\func{int}{GetVerticalTabTextSpacing}{\void}

Returns the vertical spacing between the top of an unselected tab, and the tab label.

\membersection{wxTabView::OnCreateTabControl}

\func{wxTabControl *}{OnCreateTabControl}{\void}

Creates a new tab control. By default, this returns a wxTabControl object, but the application may wish
to define a derived class, in which case the tab view should be subclassed and this function overridden.

\membersection{wxTabView::Layout}

\func{void}{Layout}{\void}

Recalculates the positions of the tabs, and adjusts the layer of the selected tab if necessary.

You may want to call this function if the view width has changed (for example, from an OnSize handler).

\membersection{wxTabView::OnEvent}

\func{Bool}{OnEvent}{\param{wxMouseEvent\& }{event}}

Processes mouse events sent from the panel or dialog. Returns TRUE if the event was processed,
FALSE otherwise.

\membersection{wxTabView::OnTabActivate}

\func{void}{OnTabActivate}{\param{int}{ activateId}, \param{int}{ deactivateId}}

Called when a tab is activated, with the new active tab id, and the former active tab id.

\membersection{wxTabView::OnTabPreActivate}

\func{Bool}{OnTabPreActivate}{\param{int}{ activateId}, \param{int}{ deactivateId}}

Called just before a tab is activated, with the new active tab id, and the former active tab id.

If the function returns FALSE, the tab is not activated.

\membersection{wxTabView::SetBackgroundColour}

\func{void}{SetBackgroundColour}{\param{const wxColour\&}{ col}}

Sets the colour to be used for each tab background. By default, this is
light grey. To ensure a match with the dialog or panel background, omit
the wxTAB\_STYLE\_COLOUR\_INTERIOR flag from the wxTabView constructor. 

\membersection{wxTabView::SetDC}

\func{void}{SetDC}{\param{wxDC *}{dc}}

Set the device context that the tab view will use for drawing onto. You must specify this before drawing
takes place (automatically set by wxTabbedDialogBox and wxTabbedPanel).

\membersection{wxTabView::SetHighlightColour}

\func{void}{SetHighlightColour}{\param{const wxColour\&}{ col}}

Sets the colour to be used for bright highlights on the left side of `3D' surfaces. By default, this is white.

\membersection{wxTabView::SetHorizontalTabOffset}

\func{void}{SetHorizontalTabOffset}{\param{int}{ offset}}

Sets the horizontal spacing by which each tab layer is offset from the one below.

\membersection{wxTabView::SetSelectedTabFont}

\func{void}{SetSelectedTabFont}{\param{wxFont *}{font}}

Sets the font to be used for the selected tab label.

\membersection{wxTabView::SetShadowColour}

\func{void}{SetShadowColour}{\param{const wxColour\&}{ col}}

Sets the colour to be used for shadows on the right-hand side of `3D' surfaces. By default, this is dark grey.

\membersection{wxTabView::SetTabFont}

\func{void}{SetTabFont}{\param{wxFont *}{font}}

Sets the tab label font.

\membersection{wxTabView::SetTabStyle}

\func{void}{SetTabStyle}{\param{long}{ tabStyle}}

Sets the tab style. See constructor documentation for details of valid styles.

\membersection{wxTabView::SetTabSize}

\func{void}{SetTabSize}{\param{int}{ width}, \param{int}{ height}}

Sets the tab default width and height.

\membersection{wxTabView::SetTabSelectionHeight}

\func{void}{SetTabSelectionHeight}{\param{int}{ height}}

Sets the height to be used for the currently selected tab; normally a few pixels
higher than the other tabs.

\membersection{wxTabView::SetTabSelection}

\func{void}{SetTabSelection}{\param{int}{ sel}, \param{Bool}{ activateTool=TRUE}}

Sets the selected tab, calling the application's OnTabActivate function.

If {\it activateTool} is FALSE, OnTabActivate will not be called.

\membersection{wxTabView::SetTextColour}

\func{void}{SetTextColour}{\param{const wxColour\&}{ col}}

Sets the colour to be used to draw label text. By default, this is
black.

\membersection{wxTabView::SetTopMargin}

\func{void}{SetTopMargin}{\param{int}{ margin}}

Sets the height between the top of the view area and the bottom of the first
row of tabs.

\membersection{wxTabView::SetVerticalTabTextSpacing}

\func{void}{SetVerticalTabTextSpacing}{\param{int}{ spacing}}

Sets the vertical spacing between the top of an unselected tab, and the tab label.

\membersection{wxTabView::SetViewRect}\label{wxtabviewsetviewrect}

\func{void}{SetViewRect}{\param{const wxRectangle\& }{rect}}

Sets the rectangle specifying the view area (above which tabs are
placed). This must be set by the application. 






\chapter{Classes by category}\label{classesbycat}

A classification of tab classes by category.

\section{View classes}

\begin{itemize}\itemsep=0pt
\item \helpref{wxTabView}{wxtabview}
\item \helpref{wxPanelTabView}{wxpaneltabview}
\item \helpref{wxTabControl}{wxtabcontrol}
\end{itemize}

\section{Window classes}

\begin{itemize}\itemsep=0pt
\item \helpref{wxTabbedDialogBox}{wxtabbeddialogbox}
\item \helpref{wxTabbedPanel}{wxtabbedpanel}
\end{itemize}

\chapter{Topic overviews}\label{overviews}

This chapter contains a selection of topic overviews.

\section{Tab classes overview}\label{wxtaboverview}

Classes: \helpref{wxTabView}{wxtabview}, \helpref{wxPanelTabView}{wxpaneltabview},
 \helpref{wxTabbedPanel}{wxtabbedpanel}, \helpref{wxTabbedDialogBox}{wxtabbeddialogbox},
 \helpref{wxTabControl}{wxtabcontrol}

The tab classes provide facilities for switching between contexts by
means of `tabs', which look like file divider tabs.

To use them, include the wxtab.h header file and link with the
wxtab.lib (or libwxtab\_motif.a) library.

You must create both a {\it view} to handle the tabs, and a {\it window} to display the tabs
and related information. The wxTabbedDialogBox and wxTabbedPanel classes are provided for
convenience, but you could equally well construct your own window class and derived
tab view.

If you wish to display a tabbed dialog - the most common use - you should follow these steps.

\begin{enumerate}\itemsep=0pt
\item Create a new wxTabbedDialogBox class, and any buttons you wish always to be displayed
(regardless of which tab is active).
\item Create a new wxPanelTabView, passing the dialog as the first argument.
\item Set the view rectangle with \helpref{wxTabView::SetViewRect}{wxtabviewsetviewrect},
to specify the area in which child panels will be
shown. The tabs will sit on top of this view rectangle.
\item Call \helpref{wxTabView::CalculateTabWidth}{wxtabviewcalculatetabwidth} to calculate
the width of the tabs based on the view area. This is optional if, for example, you have one row
of tabs which does not extend the full width of the view area.
\item Call \helpref{wxTabView::AddTab}{wxtabviewaddtab} for each of the tabs you wish to create, passing
a unique identifier and a tab label.
\item Construct a number of windows, one for each tab, and call \helpref{wxPanelTabView::AddTabWindow}{wxpaneltabviewaddtabwindow} for
each of these, passing a tab identifier and the window.
\item Set the tab selection.
\item Show the dialog.
\end{enumerate}

Under Motif, you may also need to size the dialog just before setting the tab selection, for unknown reasons.

Some constraints you need to be aware of:

\begin{itemize}\itemsep=0pt
\item All tabs must be of the same width.
\item Omit the wxTAB\_STYLE\_COLOUR\_INTERIOR flag to ensure that the dialog background
and tab backgrounds match.
\end{itemize}

\subsection{Example}

The following fragment is taken from the file test.cpp.

{\small
\begin{verbatim}
void MyFrame::TestTabbedDialog(void)
{
  int dialogWidth = 365;
  int dialogHeight = 400;
  
  wxTabbedDialogBox *dialog =
    new wxTabbedDialogBox(this, "Tabbed Dialog Box", TRUE, -1, -1, 365, 400);
  
  wxButton *okButton = new wxButton(dialog, (wxFunction)GenericOk, "Close",
    230, 100, 80, 25);
  wxButton *cancelButton = new wxButton(dialog, NULL, "Help", 230, 130, 80, 25);

  // Note, omit the wxTAB_STYLE_COLOUR_INTERIOR, so we will guarantee a match
  // with the panel background, and save a bit of time.
  wxPanelTabView *view = new wxPanelTabView(dialog, wxTAB_STYLE_DRAW_BOX);
  
  wxRectangle rect;
  rect.x = 5;
  rect.y = 70;
  // Could calculate the view width from the tab width and spacing,
  // as below, but let's assume we have a fixed view width.
//  rect.width = view->GetTabWidth()*4 + 3*view->GetHorizontalTabSpacing();
  rect.width = 326;
  rect.height = 300;
  
  view->SetViewRect(rect);

  // Calculate the tab width for 4 tabs, based on a view width of 326 and
  // the current horizontal spacing. Adjust the view width to exactly fit
  // the tabs.
  view->CalculateTabWidth(4, TRUE);

  if (!view->AddTab(TEST_TAB_CAT,        wxString("Cat")))
    return;
    
  if (!view->AddTab(TEST_TAB_DOG,        wxString("Dog")))
    return;
  if (!view->AddTab(TEST_TAB_GUINEAPIG,  wxString("Guinea Pig")))
    return;
  if (!view->AddTab(TEST_TAB_GOAT,       wxString("Goat")))
    return;
  if (!view->AddTab(TEST_TAB_ANTEATER,   wxString("Ant-eater")))
    return;
  if (!view->AddTab(TEST_TAB_SHEEP,      wxString("Sheep")))
    return;
  if (!view->AddTab(TEST_TAB_COW,        wxString("Cow")))
    return;
  if (!view->AddTab(TEST_TAB_HORSE,      wxString("Horse")))
    return;
  if (!view->AddTab(TEST_TAB_PIG,        wxString("Pig")))
    return;
  if (!view->AddTab(TEST_TAB_OSTRICH,    wxString("Ostrich")))
    return;
  if (!view->AddTab(TEST_TAB_AARDVARK,   wxString("Aardvark")))
    return;
  if (!view->AddTab(TEST_TAB_HUMMINGBIRD,wxString("Hummingbird")))
    return;
    
  // Add some panels
  wxPanel *panel1 = new wxPanel(dialog, rect.x + 20, rect.y + 10, 200, 250);
  (void)new wxButton(panel1, NULL, "Press me");
  panel1->NewLine();
  (void)new wxText(panel1, NULL, "Input:", "1234", -1, -1, 120);
  
  view->AddTabWindow(TEST_TAB_CAT, panel1);

  wxPanel *panel2 = new wxPanel(dialog, rect.x + 20, rect.y + 10, 200, 250);
  panel2->SetLabelPosition(wxVERTICAL);
  
  char *animals[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" };
  (void)new wxListBox(panel2, NULL, "List of animals", wxSINGLE,
    5, 5, 170, 80, 5, animals);

  (void)new wxMultiText(panel2, NULL, "Notes",
    "Some notes about the animals in this house", 5, 100, 170, 100);
  
  view->AddTabWindow(TEST_TAB_DOG, panel2);
  
  // Don't know why this is necessary under Motif...
#ifdef wx_motif
  dialog->SetSize(dialogWidth, dialogHeight-20);
#endif

  view->SetTabSelection(TEST_TAB_CAT);
  
  dialog->Show(TRUE);  
}
\end{verbatim}
}

\section{wxTabView overview}\label{wxtabviewoverview}

Classes: \helpref{wxTabView}{wxtabview}, \helpref{wxPanelTabView}{wxpaneltabview}

A wxTabView manages and draws a number of tabs. Because it is separate
from the tabbed window implementation, it can be reused in a number of contexts.
This library provides tabbed dialog and panel classes to use with the
wxPanelTabView class, but an application could derive other kinds of
view from wxTabView. 

For example, a help application might draw a representation of a book on
a canvas, with a row of tabs along the top. The new tab view class might
be called wxCanvasTabView, for example, with the wxBookCanvas posting
the OnEvent function to the wxCanvasTabView before processing further,
application-specific event processing. 

A window class designed to work with a view class must call the view's
OnEvent and Draw functions at appropriate times.
