はじめに
作業手順を 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. 完成です。お疲れさまでした。

