一、创建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;