我在CTabCtrl
内创建了CDockablePane
,并且我只添加了一个页面,因此无需显示标签栏。
当只有一个页面时,如何删除标签栏?
在此先感谢:)
答案 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);
}