当只有一个页面时,从CTabCtrl中删除选项卡栏

时间:2016-05-30 12:23:28

标签: mfc

我在CTabCtrl内创建了CDockablePane,并且我只添加了一个页面,因此无需显示标签栏。 当只有一个页面时,如何删除标签栏? 在此先感谢:)

1 个答案:

答案 0 :(得分:2)

您可以隐藏选项卡并使用CTabCtrl::AdjustRect重新定位子页面。例如:

void CMyDialog::show_tab_bar(bool show)
{
    tab.ShowWindow(show ? SW_SHOW : SW_HIDE);

    CRect r;
    tab.GetWindowRect(&r);
    ScreenToClient(&r);
    tab.AdjustRect(FALSE, &r);

    page1.SetWindowPos(0, r.left, r.top, r.Width(), r.Height(), SWP_HIDEWINDOW);
    page2.SetWindowPos(0, r.left, r.top, r.Width(), r.Height(), SWP_HIDEWINDOW);
    ...

    page1.ShowWindow(SW_SHOW);
}

如果您希望标签边框始终可见,则可以使用CTabCtrl::DeleteAllItems

void CMyDialog::show_tab_bar(bool show)
{
    tab.DeleteAllItems();
    if (show)
    {
        tab.InsertItem(0, L"Page 1");
        tab.InsertItem(1, L"Page 2");
        ...
    }

    CRect r;
    tab.GetWindowRect(&r);
    ScreenToClient(&r);
    tab.AdjustRect(FALSE, &r);

    page1.SetWindowPos(0, r.left, r.top, r.Width(), r.Height(), SWP_HIDEWINDOW);
    page2.SetWindowPos(0, r.left, r.top, r.Width(), r.Height(), SWP_HIDEWINDOW);
    ...

    page1.ShowWindow(SW_SHOW);
}