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 }
搞定。
基于wince的MFC Tab Control控件的使用
时间: 2024-10-12 21:50:44