 |
- タブコントロールの使い方(1) -
タブコントロールはダイヤログに追加しただけでは機能しないので
OnInitDialog関数等で設定をしてやる必要があります。
まずタブコントロールにタブ札を作ります。
タブ札作成にはCTabCtrlクラスのメンバー関数InsertItemを使用します。
□ MSDNよりInsertItemの引用 □
BOOL InsertItem(
int nItem,
TC_ITEM* pTabCtrlItem
);
・nItemは新しいタブの 0 から始まるインデックス
これはタブのIDのような物です
・pTabCtrlItemはタブの属性を指定するTCITEM 構造体へのポインタ
・戻り値は新しいタブの 0 から始まるインデックス
使用方法はTC_ITEM構造体を作成し、必要パラメータを設定してやり
InsertItem関数に引数としてTC_ITEM構造体のポインタを渡してやればOKです。
TC_ITEM構造体は以下のようになっています
typedef struct tagTCITEM {
UINT mask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
} TCITEM;
maskには有効メンバーを設定
pszTextにはラベル文字を設定
cchTextMaxにはpszTextのバッファサイズを設定
iImageタブにイメージを使う場合の設定
lParamnにはアプリケーションの定義データ
詳しくはMSDN等で調べてみてください。
細かいところまでは書ききれないし、説明する自信も無いので…(^^;
サンプルではタブ札を2つ作り機能するように作ってみます。
≪ MFC ダイヤログベースでの作成サンプル ≫
■ダイヤログにタブコントロールを追加

■ClassWizardよりタブコントロールのメンバー変数を作成

カテゴリ → コントロール
変数タイプ → CTabCtrl
■OnInitDialog()関数に初期化の為のソース追加
////////////////////////////////////
// CTest10Dlg メッセージ ハンドラ
BOOL CTest10Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// "バージョン情報..." メニュー項目をシステム メニューへ追加します。
// IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty()){
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
// ウィンドウがダイアログでない時は自動的に設定しません。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
// TODO: 特別な初期化を行う時はこの場所に追加してください。
//--------タブコントロール初期化コード(ここから)----------
//TC_ITEM構造体のTCIF_TEXTを作成
TC_ITEM tab01;
//pszTextを使用するのでTCIF_TEXTを設定
tab01.mask = TCIF_TEXT;
//タブに表示される文字列の設定
tab01.pszText = "タブ1";
//タブ番号と、TC_ITEM構造体のTCIF_TEXTをInsertItemの引数に設定
m_tab_cnt.InsertItem(0,&tab01);
//同じように2つ目のタブを作成
TC_ITEM tab02;
tab02.mask = TCIF_TEXT;
tab02.pszText = "タブ2";
m_tab_cnt.InsertItem(1,&tab02);
//--------タブコントロール初期化コード(ここまで)----------
return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}
|
■以上、コンパイルすれば完成

とりあえず初期化だけ作っています
実際の機能をさせる所は次回で…
|
|
 |