CTabCtrl - 如何使用TabCtrl控件
建立一個基於對話框的MFC應用程序TabCtrlTest
Step 1:在資源視圖中,新建對話框資源,資源ID:IDD_TabCtrlExample_DLG,添加類:CTabCtrlExamlpeDlg。
Step 2:在對話框視圖中加入CTabCtrl控件,資源ID:IDD_TAB1,添加控件變量:m_ctlTabInfo。
Step 3:新建兩個對話框:
|
對話框ID |
添加類 |
設置對話框屬性 |
補充 |
對話框1 |
IDD_Test1_DlG |
CTest1 |
Border:None Styles:Child |
界面可自行設計 |
對話框2 |
IDD_Test2_DlG |
CTest2 |
在CTabCtrlExamlpeDlg定義兩個成員變量:
public: CTabCtrl m_ctlTabInfo; CTest1 m_test1Page;//界面1 CTest2 m_test2Page;//界面2
Step 4:重寫CTabCtrlExamlpeDlg::OnInitDialog()函數
(類視圖下,選中CCTabCtrlExamlpeDlg類,右鍵屬性,單擊屬性界面右邊第一個正方體圖標,雙擊OnInitDialog即可)
BOOL CTabCtrlExamlpeDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加額外的初始 #pragma region 初始化TabCtrl控件 //首先,為各Tab頁添加標題 m_ctlTabInfo.InsertItem(0,_T("界面一")); m_ctlTabInfo.InsertItem(2,_T("界面二")); //第二,建立各Tab頁 m_test1Page.Create(IDD_Test1_Dlg, GetDlgItem(IDC_TAB1)); m_test2Page.Create(IDD_Test2_Dlg, GetDlgItem(IDC_TAB1)); //第三,設置頁面的位置在m_ctlTabInfo控件范圍內 CRect rc; m_ctlTabInfo.GetClientRect(rc); rc.top += 21; rc.bottom -= 1; rc.left += 1; rc.right -= 1; m_test1Page.MoveWindow(rc); m_test1Page.ShowWindow(SW_SHOW); m_test2Page.MoveWindow(rc); m_test2Page.ShowWindow(SW_HIDE); #pragma endregion return TRUE; // return TRUE unless you set the focus to a control // 異常: OCX 屬性頁應返回 FALSE }
Step 5:響應TabCtrl控件的TCN_SELCHANGE消息,實現切換頁面功能。
(右鍵TabCtrl控件à添加事件處理程序à選中TCN_SELCHANGE消息à添加編輯)
void CTabCtrlExamlpeDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知處理程序代碼 *pResult = 0; switch (m_ctlTabInfo.GetCurSel()) { case 0: m_test1Page.ShowWindow(SW_SHOW); m_test2Page.ShowWindow(SW_HIDE); break; case 1: m_test1Page.ShowWindow(SW_HIDE); m_test2Page.ShowWindow(SW_SHOW); break; default: break; } }