简介
- 标签页Tab Control在MFC界面开发中的使用频率还是非常高的,本文章就主要介绍下该控件的使用。
创建项目
- 选择文件->新建->新建项目。创建一个MFC工程。选择基于对话框,点击完成。
Tab Control使用
- 先在资源视图界面,工具箱中选择 Tab Control,放置到界面上。
- 然后给Tab Control控件添加一个变量
- 接下来需要添加子对话框,用于设置到标签页上。
- 资源视图界面,选择Dialog,插入dialog
- 添加对话框后,右击选择属性,将Border设置为None,表示不需要边框,Style设置为Child,表示以子控件显示。
- 用同样的方法,我们添加三个对话框
- 接下来分别为三个对话框添加类
- 右击对话框,选择添加类
- 添加完成后,在类视图中可以看到添加的类
- 然后在主界面对应的头文件中包含我们添加的这三个子对话框的头文件
- 并添加三个变量和一个CDialog*类型的数组
- 为了便于区分,我们在三个对话框上放入不同控件
- 然后在初始化代码中给标签页添加对话框
-
//获取tab control位置和大小 CRect tabRect, itemRect; int nX, nY, nXc, nYc; m_tab.GetClientRect(&tabRect); m_tab.GetItemRect(0, &itemRect); nX = itemRect.left; nY = itemRect.bottom + 1; nXc = tabRect.right - itemRect.left - 2; nYc = tabRect.bottom - nY - 2; // 添加对话框1 m_tab.InsertItem(0, TEXT("对话框1")); m_sub1.Create(IDD_DIALOG_SUB1, &m_tab); m_dlgSum[0] = &m_sub1; m_dlgSum[0]->ShowWindow(SW_SHOW); //设置对话框1的显示位置 m_dlgSum[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW); //添加对话框2 m_tab.InsertItem(1, TEXT("对话框2")); m_sub2.Create(IDD_DIALOG_SUB2, &m_tab); m_dlgSum[1] = &m_sub2; m_dlgSum[1]->ShowWindow(SW_HIDE); m_dlgSum[1]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW); //添加对话框3 m_tab.InsertItem(2, TEXT("对话框3")); m_sub3.Create(IDD_DIALOG_SUB3, &m_tab); m_dlgSum[2] = &m_sub3; m_dlgSum[2]->ShowWindow(SW_HIDE); m_dlgSum[2]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
- 运行后看下效果
- 这个时候我们点击标签页,还没办法切换,显示的还是第一个对话框。需要再添加一个选项更改事件
- 右击标签页控件,选择控件事件,添加一个TCN_SELCHANGE
- 在标签页更改事件函数中,去设置要显示的对应的对话框
-
//获取当前选择索引 int index = m_tab.GetCurSel(); //根据索引显示对应的界面 if (index == 0) { m_dlgSum[0]->ShowWindow(SW_SHOW); m_dlgSum[1]->ShowWindow(SW_HIDE); m_dlgSum[2]->ShowWindow(SW_HIDE); }else if (index == 1) { m_dlgSum[0]->ShowWindow(SW_HIDE); m_dlgSum[1]->ShowWindow(SW_SHOW); m_dlgSum[2]->ShowWindow(SW_HIDE); }else if (index == 2) { m_dlgSum[0]->ShowWindow(SW_HIDE); m_dlgSum[1]->ShowWindow(SW_HIDE); m_dlgSum[2]->ShowWindow(SW_SHOW); }
- 再运行程序,选择不同的标签,就显示对应标签的对话框