CTabCtrl用法


TabCtrl控件可以通過對話框方式直接采用控件靜態添加,但是有時候需要去動態創建一個TabCtrl控件,本文是在CFormView上動態創建TabCtrl控件:

1、添加CTabCtrl類的對象:

 

  1. CTabCtrl m_tabCtrl;  

 

2、為TabCtrl控件添加頁面,本文創建兩個對話框:

CDialog1 m_page1;

CDialog2 m_page2;

3、在資源視圖中為m_tabCtrl設置資源ID:

方法:右鍵資源,選擇Resource Symbols,然后彈出資源ID對話框,添加CTabCtrl資源ID號:IDC_TABCTRL;

4、WM_CREATE消息響應,在OnCreate(...)函數中添加如下代碼:

 

[cpp]  view plain copy
  1. //得到窗口的大小  
  2. CRect rec;  
  3. GetClientRect(&rec);  
  4. //創建tabCtrl控件  
  5. m_tabCtrl.Create(TCS_TABS|WS_CHILD|WS_VISIBLE,rec,this,IDC_TABCTRL);  
  6. //添加控件按鈕名稱  
  7. m_tabCtrl.InsertItem(0,"車輛信息列表");  
  8. m_tabCtrl.InsertItem(1,"地圖列表");  
  9. //對話框頁面  
  10. m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TABCTRL));  
  11. m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TABCTRL));  
  12. //顯示第一個頁面  
  13. m_carList.ShowWindow(SW_SHOW);  
  14. //設置第一個頁面顯示  
  15. m_tabCtrl.SetCurSel(0);  

5、WM_SIZE消息響應,該函數是為了使得頁面布局和FormView頁面大小相同,不然會出現空閑部分,顯得布局很不美觀,在對應的函數中添加如下代碼:

 

[cpp]  view plain copy
  1. m_tabCtrl.MoveWindow(0,0,cx,cy);  
  2. m_page1.MoveWindow(0,25,cx,cy);  
  3. m_page2.MoveWindow(0,25,cx,cy);  

6、TabCtrl控件TCN_SELCHANGE消息響應,這里並沒有靜態的TabCtrl控件,所以需要動態添加,方法如下:

 

1)在CFormView的cpp文件中的BEGIN_MESSAGE_MAP......END_MESSAGE_MAP()之間加入:ON_NOTIFY(TCN_SELCHANGE,IDC_TABCTRLDOWN,OnSelChangeTab)

2)在在CFormView的h文件中的{{AFX_MSG(CFormViewDown).....//}}AFX_MSG之間加入:afx_msg void OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult);

3)實現OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult)

 

[cpp]  view plain copy
  1. void CFormViewDown::OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult)  
  2. {  
  3.     //獲取所選擇的頁面  
  4.     int nCurSel = m_tabCtrl.GetCurSel();  
  5.     if(nCurSel == 0)  
  6.     {     
  7.         //頁面一顯示,頁面二隱藏  
  8.         m_page1.ShowWindow(SW_SHOW);  
  9.         m_page2.ShowWindow(SW_HIDE);  
  10.     }  
  11.     else if(nCurSel == 1)  
  12.     {     
  13.         ////頁面二顯示,頁面一隱藏  
  14.         m_driverInfo.ShowWindow(SW_SHOW);  
  15.         m_carInfo.ShowWindow(SW_HIDE);  
  16.     }  
  17.     *pResult = 0;  
  18. }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM