タブコントロールの使用

タブコントロールは,ノートブックの仕切りページや,ファイル・キャビネットのラベルに似ています。タブコントロールを使うことで,アプリケーションはダイアログボックスの同じ領域に対して複数のページを定義することができます。個々のページは特定のタブに関連付けられており,一度に 1 つのページだけが表示されます。

コントロール指標 DLG_NUMITEMS は,タブコントロールにいくつのタブが含まれているかを決定します。個々のタブについて,DLGSETCHAR を使ってタブのラベルを指定し,DLG_NUMITEMS を使って 1 から設定されたタブ数までの指標値を指定します。個々のタブには,そのタブが選択された時に表示されるダイアログボックスが関連付けられています。DLGSETINT で,ダイアログ名と,タブに対応する指標値を使用すると,ダイアログボックスを指定することができます。たとえば,次のコードはタブコントロール中の 3 つのタブを定義しています。"Family" というラベルの付いたタブは,IDD_TAB_DIALOG1 という名前のダイアログボックスに関連付けられています (以下同様)。

!	初期タブを設定します。
	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)

個々のタブ・ダイアログの定義は,リソース・エディタを使って,タブコントロールを含んでいるダイアログボックスを定義する時と同じように行います。ダイアログ・プロパティで,個々のタブ・ダイアログについて次のスタイル設定を行う必要があります。

  1. 「Style」を「Child」に設定します。

  2. 「Border」を「None」に設定します。

  3. 「Title Bar」のチェックを解除します。

タブコントロールを含んでいるダイアログボックスを (DLGMODAL または DLGMODELESS を使って) 表示する前に,次の作業を行います。

  1. DLGSETSUB を呼び出して,ダイアログボックスの DLG_INIT コールバックを定義します。

  2. 個々のタブ・ダイアログに対して DLGINIT を呼び出します。

タブコントロールを含んでいるダイアログボックスの DLG_INIT コールバック中で,callbacktypeDLG_INIT ならば,個々のタブ・ダイアログボックスについて DLGMODELESS を呼び出します。第 2 パラメタとして SW_HIDE を指定し,第 3 パラメタとしてタブコントロールのウィンドウ・ハンドルを指定します。DLGMODELESS を呼び出した後に,DLG_STATE 指標を指定して DLGSET を呼び出し,初期状態で表示されるタブを設定します。次に例を示します。

!	主ダイアログボックスが最初に表示された時,タブ・ダイアログボックスを
!	表示するために DlgModeless が呼び出されます。SW_HIDE の使用に注意して
!	ください。ダイアログ関数は,適切なタブ・ダイアログボックスを表示します。
	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)
!	   DlgModeless を呼び出した後,基本タブを設定しなければ
!	   ならないことに注意していください。そうしなければ,
!	   タブ・ダイアログボックスが最初に表示されません。
	   lret = DlgSet(dlg, IDC_TAB, 1, dlg_state)

作業を終えたら,個々のタブ・ダイアログについて DLGUNINIT を呼び出します。

タブコントロールの詳しい使用例については,...\DF98\SAMPLES\DIALOG フォルダにある Visual Fortran サンプルShowFont を参照してください。