1 插入Tab控件的數據項(標籤)
CTabCtrl::InsertItem
2 以Tab控件爲父窗口創建對話框
3 調整對話框大小
4 在Tab控件的SELCHANGE消息處理函數中,根據當前選項的索引設置對話框的顯示狀態。
新建一個基於對話框的工程,拖放一個Tab Control控件,Ctrl+W 爲之綁定一個控件變量m_wndTabCtrl
插入兩個對話框資源做爲標籤頁面,注意設置它們的樣式爲:child 和 無邊框
雙擊對話框資源爲他們添加相關類,父類使用默認CDialog即可
這裏類名爲CDialog1 和 CDialog2
來到豬對話框類添加剛新建的對話框類的頭文件,然後添加兩個該類型的成員變量:
CDialog1 m_dlg1;
CDialog2 m_dlg2;
然後來到主對話框的OnInitDialog函數中添加創建代碼,注意兩個對話框成員創建時要以主對話框爲父類創建。代碼如下:
BOOL CTabCtrlDlg::OnInitDialog()
{
............................................
// TODO: Add extra initialization here
// 爲Tab控件添加標籤
m_wndTab.InsertItem (0, "Tab1");
m_wndTab.InsertItem (0, "Tab2");
// 以Tab控件爲父窗口創建兩個對話框
m_dlg1.Create (IDD_DIALOG1, this);
m_dlg2.Create (IDD_DIALOG2, this);
// 顯示第一個對話框
m_dlg1.ShowWindow (SW_SHOW);
// 調整對話框大小
// 獲取Tab控件的大小
CRect rt;
m_wndTab.GetClientRect (&rt);
rt.top += 35;
rt.left += 25;
rt.right -= 1;
rt.bottom -= 1;
// 設置每個對話框的大小
m_dlg1.MoveWindow (&rt);
m_dlg2.MoveWindow (&rt);
// 顯示第一個對話框
m_dlg1.ShowWindow (SW_SHOW);
return TRUE; // return TRUE unless you set the focus to a control
}
當然,爲了能讓便籤頁具備切換的功能,給Tab控件添加TCN_SELCHANGE消息處理
void CMFCTabCtrolDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
// 獲取當前選擇項
int nItem = m_wndTabCtrl.GetCurSel ();
switch (nItem)
{
case 0:
m_dlg1.ShowWindow (SW_SHOW);
m_dlg2.ShowWindow (SW_HIDE);
break;
case 1:
m_dlg2.ShowWindow (SW_SHOW);
m_dlg1.ShowWindow (SW_HIDE);
break;
}
*pResult = 0;
}