MFC-CtabCtrl(属性页控件)

属性页->选项卡->对话框

就是属性页包含多个选项卡,每个选项卡对应一个对话框,如图所示:
MFC-CtabCtrl(属性页控件)_第1张图片

1.添加对话框,这里先插入两个对话框,如图所示:
MFC-CtabCtrl(属性页控件)_第2张图片
2.把两个对话框的属性修改一下,Style属性设置为Child,Border属性设置为None.然后向对话框添加几个控件作为演示.如图:

MFC-CtabCtrl(属性页控件)_第3张图片

3.分别给两个对话框添加类,如图所示:

4.在主对话框头文件里给两个对话框定义变量
//要记得添加头文件

    CPage1Dialog m_page1;
    CPage2Dialog m_page2;

5.给主对话框关联一个控件变量
6.在初始化对话框中创建选项卡和插入选项卡

    //插入第2个选项卡(属性页)
    m_tab.InsertItem(0, TEXT("第一页"));
    m_tab.InsertItem(1, TEXT("第二页"));

    //创建两个选项卡
    m_page1.Create(MAKEINTRESOURCE(IDD_FIRST_PAGE), &m_tab);
    m_page2.Create(MAKEINTRESOURCE(IDD_SECOND_PAGE), &m_tab);

    //设置选项卡的位置
    CRect rect = { 0 };
    GetClientRect(&rect);
    rect.top += 22;//把高度调下来一点,否则会遮住切换页
    m_page1.MoveWindow(&rect);
    m_page2.MoveWindow(&rect);

    //刚开始先显示第一页
    m_page1.ShowWindow(SW_SHOW);

效果如图:

7.在属性页控件中,右键属性找到TCN_SELCHANGE事件

void CMFCTESTDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 在此添加控件通知处理程序代码
    *pResult = 0;

    //切换选项卡
    switch (m_tab.GetCurSel())
    {
    case 0:
        m_page1.ShowWindow(SW_SHOW);
        m_page2.ShowWindow(SW_HIDE);
        break;
    case 1:
        m_page1.ShowWindow(SW_HIDE);
        m_page2.ShowWindow(SW_SHOW);
        break;
    default:
        break;
    }
}

如图:

每一个选项卡就相当于一个小的基于对话框的MFC程序了,可以在上面自行设置一些功能,添加一些控件.

你可能感兴趣的:(mfc,选项卡,CTabCtrl,属性页控件)