MFC中Tab Control控件的使用

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


 

猜你喜欢

转载自blog.csdn.net/qq_33657251/article/details/83691483
今日推荐