The Tab control is like the dividers in a notebook or the labels on a file cabinet. By using a Tab control, an application can define multiple pages for the same area of a dialog box. Each page is associated with a particular Tab and only one page is displayed at a time.
The control index
determines how many Tabs are contained in the Tab control. For each Tab, you specify the label of the Tab using
and an index value from 1 to the number of Tabs set with
. Each Tab has an associated dialog box that is displayed when the Tab is selected. You specify the dialog box using
with the dialog name and an index value corresponding to the the Tab. For example, the code below defines three Tabs in a Tab control. The Tab with the label "Family" is associated with the dialog box named IDD_TAB_DIALOG1, and so on.
! Set initial Tabs
lret = DlgSet(gdlg, IDC_TAB, 3)
lret = DlgSet(gdlg, IDC_TAB, "Family", 1)
lret = DlgSet(gdlg, IDC_TAB, "Style", 2)
lret = DlgSet(gdlg, IDC_TAB, "Size", 3)
lret = DlgSet(gdlg, IDC_TAB, IDD_TAB_DIALOG1, 1)
lret = DlgSet(gdlg, IDC_TAB, IDD_TAB_DIALOG2, 2)
lret = DlgSet(gdlg, IDC_TAB, IDD_TAB_DIALOG3, 3)
You define each of the Tab dialogs using the resource editor just as you do for the dialog box that contains the Tab control. In the Properties Window, you must make the following style settings for each Tab dialog:
Set the "Style" to "Child"
Set "Title Bar" to "False."
Before displaying the dialog box that contains the Tab control (using
to define a DLG_INIT callback for the dialog box
for each Tab dialog
In the DLG_INIT callback of the dialog box that contains the Tab control, if the callbacktype is DLG_INIT, call
for each of the Tab dialog boxes. Specify
as the second parameter, and the window handle of the Tab control as the third parameter. After calling
index to set the initial Tab. For example:
! When the Main dialog box is first displayed, call DlgModeless to
! display the Tab dialog boxes. Note the use of SW_HIDE. The
! Dialog Functions will "show" the proper Tab dialog box.
if (callbacktype == dlg_init) then
hwnd = GetDlgItem(dlg % hwnd, IDC_TAB)
lret = DlgModeless(gdlg_tab1, SW_HIDE, hwnd)
lret = DlgModeless(gdlg_tab2, SW_HIDE, hwnd)
lret = DlgModeless(gdlg_tab3, SW_HIDE, hwnd)
! Note that we must set the default Tab after the calls to
! DlgModeless. Otherwise, no Tab dialog box will be displayed
lret = DlgSet(dlg, IDC_TAB, 1, dlg_state)
for each Tab dialog when you are done with it.