MFC的TAB控件使用详细说明
在MFC当中使用Tab Control控件切换不同的界面,对于新手使用起来有点难度,本人研究了一天下面将详细介绍自己遇到的问题及使用步骤,
1.1建立一个MFC对话框应用程序,在对话框中拖入Tab Control控件,效果如下:
注:tab标签需要上下左右拉伸到最大,因为之后的视图需要在上面进行绘画。。。
2.在对话框类的头文件中,声明一个CTabCtrl变量:
CTabCtrl m_tab;
变量m_tab用来与对话框中的Tab Control控件交互,为此要在
void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX) (自己建立生成的,不是系统自己的)
函数中加入DDX_Control语句:
DDX_Control(pDX, IDC_TAB1, m_tab); 注:IDC_TAB1是tab控件的ID
3.在资源中插入两个对话框,作为Tab Control控件切换的界面,然后必须将这两个对话框的Border属性设置为None,Style设置为Child,设置后的效果如下图所示:
4.为创建的两个对话框建立两个类,如CTestDlg1,CTestDlg2,添加类的方法:右击对话框界面,在弹出框中选择添加类;
5.在Tab Control控件所在的对话框类的头文件中添加以下内容并添加两个增加页面的头文件:
CTestDlg1 m_page1;
CTestDlg2 m_page2;
CDialog* pDialog[2];
6.在对话框类的初始化函数中需要把CTestDlg1、CTestDlg2和Tab Control关联起来,并保存页面地址,设置初始页面,在OnInitDialog()中添加以下实现代码:
m_tab.InsertItem(0, _T("测试1")); m_tab.InsertItem(1, _T("测试2")); m_tab.InsertItem(2, _T("测试3")); //创建两个对话框 m_page1.Create(IDD_DIALOG1, &m_tab); m_page2.Create(IDD_DIALOG2, &m_tab); m_page3.Create(IDD_DIALOG3, &m_tab); //设定在Tab内显示的范围 CRect rc; m_tab.GetClientRect(rc); rc.top += 20; rc.bottom -= 0; rc.left += 0; rc.right -= 0; m_page1.MoveWindow(&rc); m_page2.MoveWindow(&rc); m_page3.MoveWindow(&rc); //把对话框对象指针保存起来 pDialog[0] = &m_page1; pDialog[1] = &m_page2; pDialog[2] = &m_page3; //显示初始页面 pDialog[0]->ShowWindow(SW_SHOW); pDialog[1]->ShowWindow(SW_HIDE); pDialog[2]->ShowWindow(SW_HIDE); //保存当前选择 m_CurSelTab = 0;
8.为Tab Control添加消息处理程序,双击Tab Control控件,自动进入消息处理程序代码:
pDialog[m_CurSelTab]->ShowWindow(SW_HIDE); //得到新的页面索引 m_CurSelTab = m_tab.GetCurSel(); //把新的页面显示出来 pDialog[m_CurSelTab]->ShowWindow(SW_SHOW); *pResult = 0;