Tab控制項的使用
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;}