一、创建TabControl控件主要分为以下步骤
1.1将TabControl控件拖入基本对话框中,并且创建一个控件变量m_tab
1.2创建两个子对话框,ID分别改为IDD_DIALOG_PAGE1和IDD_DIALOG_PAGE2。
1.3把两个子对话框的属性Style改为Child,Border改为None。
1.4为两个子对话框分别建立两个类,类名称分别为CTabPage1和CTabPage2。注意:子对话框中的控件的初始化要在新建类中初始化,但子对话框的类中没有初始化函数,需要自己添加,切换到类视图,到类属性中添加init函数。
1.5将两个子对话框的类头文件TabPage1.h和TabPage2.h都加入主对话框头文件Test11Dlg.h中,方便主对话框Test11Dlg.h和Test11Dlg.cpp调用这两个对话框的类。
1.6在主对话框头文件Test11Dlg.h中,创建两个子对话框类的对象,分别为CTabPage1 m_page1;和CTabPage2 m_page2;
1.7然后在OnInitDialog()中添加如下代码:
// TODO: 在此添加额外的初始化代码CRect tabRect; // 标签控件客户区的位置和大小 m_tab.InsertItem(0, _T("xxx"));// 插入第一个标签“xxx” m_tab.InsertItem(1, _T("xxx")); // 插入第二个标签“xxx” m_page1.Create(IDD_page1_DIALOG, &m_tab); // 创建第一个标签页 m_page2.Create(IDD_page2_DIALOG, &m_tab); // 创建第二个标签页 m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect // 调整tabRect,使其覆盖范围适合放置标签页 tabRect.left += 1;tabRect.right -= 1;tabRect.top += 25;tabRect.bottom -= 1;// 根据调整好的tabRect放置page1子对话框,并设置为显示 page1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);// 根据调整好的tabRect放置page2子对话框,并设置为隐藏 page2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
1.8双击TanControl控件,然后在弹出的函数OnTcnSelchangeTab1中添加如下代码:
// TODO: 在此添加控件通知处理程序代码CRect tabRect; // 标签控件客户区的Rect // 获取标签控件客户区Rect,并对其调整,以适合放置标签页 m_tab.GetClientRect(&tabRect);tabRect.left += 1;tabRect.right -= 1;tabRect.top += 25;tabRect.bottom -= 1;switch (m_tab.GetCurSel()){case 0:page1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);page2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);break;case 1:page1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);page2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);break;default:break;}*pResult = 0;