標籤:cPage style class blog code ext
1,先建立一個對話方塊MFC應用程式,然後在工具箱裡面把Tab Control控制項放到對話方塊中的合適位置上。
再在對話方塊類中,聲明一個CTabCtrl變數:
CTabCtrl m_tab;
變數m_tab用來與對話方塊中的Tab Control控制項互動,為此要在DoDataExchange函數中加入DDX_Control語句:
1 //{{AFX_DATA_MAP(CTABDlg)2 DDX_Control(pDX, IDC_TAB, m_tab); 3 //}}AFX_DATA_MAP
IDC_TAB是Tab Control控制項的ID。
2,建立兩個對話方塊程式,用來當做Tab Control控制項的兩個頁。別忘了把Style改為Child,Border改為None。然後就可以在上面加其他控制項了。
接著分別為這兩個對話方塊建立兩個類,比如CPage1和CPage2。
然後在對話方塊類標頭檔中,加入這兩個對話方塊對象。同時增加一個變數int m_CurSelTab,用了表明是哪個Page即將被切換。
int m_CurSelTab;
CPage1 m_page1;
CPage2 m_page2;
CDialog* pDialog[2]; //用來儲存對話方塊對象指標
在對話方塊類的初始化函數中需要把CPage1、CPage2和Tab Control關聯起來,並儲存頁面地址,設定初始頁面。
1 // TODO: Add extra initialization here 2 //初始化TAB 3 TCITEM tc1,tc2; 4 tc1.mask = TCIF_TEXT; 5 tc1.pszText = _T("第一頁"); 6 tc2.mask = TCIF_TEXT; 7 tc2.pszText = _T("第二頁"); 8 9 m_tab.InsertItem(0, &tc1);10 m_tab.InsertItem(1, &tc2); //到這裡只是添加了兩個tab頁11 12 CRect rec;13 m_tab.GetClientRect(&rec);//獲得TAB控制項的座標14 15 //定位索引標籤頁面的位置,這裡可以根據情況自己調節位移量16 rec.bottom -= 2;17 rec.left += 1;18 rec.top += 27;19 rec.right -= 3;20 21 //建立子頁面22 m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));23 m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB));24 25 //將子頁面移動到指定的位置26 m_page1.MoveWindow(&rec);27 m_page2.MoveWindow(&rec);28 29 //顯示子頁面30 m_page1.ShowWindow(SW_SHOW);31 m_page2.ShowWindow(SW_HIDE);
3,接下來,為Tab Control添加訊息處理常式:
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CTabDlg::OnTcnSelchangeTab1)
1 // TODO: Add your control notification handler code here 2 switch(m_tab.GetCurSel()) 3 { 4 case 0: 5 m_page1.ShowWindow(SW_SHOW); 6 m_page2.ShowWindow(SW_HIDE); 7 break; 8 case 1: 9 m_page1.ShowWindow(SW_HIDE);10 m_page2.ShowWindow(SW_SHOW);11 break;12 default:13 break;14 }
搞定。