機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

【MFC】Tab Control の Sample Program

はじめに

作業手順を Readme.md に残したのでほぼそのまま貼っておきます。

手順

1. MFC を選び、プロジェクト名を SampleTabControl とする。
2. Dialog Base で作成する。
3. ToolBox から Dialog に Tab Control を貼り付ける。
4. Class Wizard で IDC_TAB1 に対応する変数 m_cTabCtrl を作成する。
5. 以下のように CSampleTabControlDlg::OnInitDialog() に書く。
m_cTabCtrl.SubclassDlgItem() の行は Class Wizard ですでに紐づいているので不要だが、

敢えてコメントアウトで残しておく。

    // TODO: Add extra initialization here
	//m_cTabCtrl.SubclassDlgItem(IDC_TAB1, this);
	m_cTabCtrl.InsertItem(0, _T("Page 1"));
	m_cTabCtrl.InsertItem(1, _T("Page 2"));

6. Class Wizard で IDC_TAB1 の TCN_SELCHANGE のイベントハンドラを作成しておく。
7. Class Wizard で Add Class > MFC Class で Base Class を CDialogEx に、ID を IDD_PAGE1 にして Class を作成する。
8. 作成された tab の中身(IDD_PAGE1)に以下のように設定する。

Attribute Value
---- ----
Border None
Style Child

9. 作成された tab の中身に Static Text を貼り付けて Caption を Page1 にする。

10. Page2 に対しても 手順 6-8 と同様の設定を行う。
11. Class Wizard で CSampleTabControlDlg に CPage1Dlg m_cPage1 と CPage2Dlg m_cPage2を追加する。
12. CSampleTabControlDlg::OnInitDialog() に手順 4 の下に以下を書き足す。

m_cPage1.Create(IDD_PAGE1, &m_cTabCtrl);
m_cPage2.Create(IDD_PAGE2, &m_cTabCtrl);

CRect rect;
m_cTabCtrl.GetWindowRect(rect);
m_cTabCtrl.AdjustRect(FALSE, rect);
m_cTabCtrl.ScreenToClient(rect);
rect.left -= 2;
rect.bottom += 2;

m_cPage1.MoveWindow(rect);
m_cPage2.MoveWindow(rect);

OnSelchangeTab1(NULL, NULL);

13. CSampleTabControlDlg::OnSelchangeTab1() に以下を書き足す。

const int cur = m_cTabCtrl.GetCurSel();
m_cPage1.ShowWindow(cur == 0 ? SW_SHOW : SW_HIDE);
m_cPage2.ShowWindow(cur == 1 ? SW_SHOW : SW_HIDE);

14. 完成です。お疲れさまでした。


目次へ戻る