注意:
使用tab控件要为每一个tab页面设置子页面,而且切换页面也要自己编写函数!
大小设置也需要注意,不然会挡住tab控件的切换按钮!
1.tab控件创建
1.1 将tab控件拖拽到Dialog上
1.2 设置控件名字IDC_TAB,并创建成员变量m_tab
2.创建子页面
2.1 添加新Dialog,作为tab子页面
2.2 为子页面设置属性
3.主页面添加代码
3.1 在主Dialog的头文件中声明这些子页面的实例
3.2 为主Dialog添加WM_INITDIALOG消息事件,添加代码
1 BOOL 主要Dlg::OnInitDialog() 2 { 3 CDialog::OnInitDialog(); 4 5 // TODO: Add extra initialization here 6 7 //设置tab页面的标题 8 m_tab.InsertItem(0,_T("页面1")); 9 m_tab.InsertItem(1,_T("页面2")); 10 11 //为tab子页面绑定子窗口空间 12 //无边框的子窗口(要先去创建过实例).Create(子窗口空间,GetDlgItem(父窗口tab空间)) 13 page1.Create(IDD_PAGE1,GetDlgItem(IDC_Var_TAB)); 14 page2.Create(IDD_PAGE2,GetDlgItem(IDC_Var_TAB)); 15 16 //子窗口大小设置,不设置的话会把tab标题给覆盖掉 17 CRect rect; 18 m_tab.GetClientRect(rect); 19 rect.InflateRect(-1,-30,-2,-2); 20 page1.MoveWindow(&rect); //每一个子窗口大小都要设置 21 page2.MoveWindow(&rect); 22 23 //初始状态显示第一个tab页面 24 page1.ShowWindow(SW_SHOW); 25 26 return TRUE; // return TRUE unless you set the focus to a control 27 // EXCEPTION: OCX Property Pages should return FALSE 28 }
3.3 为tab控件添加TCN_SELCHANGE消息,添加代码
1 void CSyssetDlg::OnSelchangeVarTAB(NMHDR* pNMHDR, LRESULT* pResult) 2 { 3 // TODO: Add your control notification handler code here 4 //当点击了Tab的按钮 5 int num=m_tab.GetCurSel();//获取点击了哪一个页面 6 switch(num) 7 { 8 case 0: 9 page1.ShowWindow(SW_SHOW); 10 page2.ShowWindow(SW_HIDE); 11 break; 12 case 1: 13 page1.ShowWindow(SW_HIDE); 14 page2.ShowWindow(SW_SHOW); 15 } 16 *pResult = 0; 17 }
其他参考:
http://blog.csdn.net/keepaction/article/details/7377195
http://www.cnblogs.com/lzmfywz/archive/2012/04/07/2436571.html