我在CDockablePane
内创建了一个CTabCtrl
,并且我只添加了一个页面,则不需要显示标签栏。 当只有一个页面时,我该如何删除标签栏? 在此先感谢:)当只有一个页面时,从CTabCtrl中删除标签栏
回答
您可以隐藏选项卡并使用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);
}
感谢您的回答, 但是当我隐藏'CTabCtrl'时,即使使用'page1.ShowWindow(SW_SHOW)'也隐藏页面。 还有其他建议吗? 谢谢你@Barmak Shemirani –
显然你已经创建了页面对话框作为选项卡控制的子项,这是错误的开始。在这种情况下使用'tab.DeleteAllItems()'。我已经表明,作为替代。但不要像我那样计算孩子窗位置。 –
谢谢@Barmak Shemirani –
- 1. 从Node.JS/Javascript页面的标签栏中删除图像
- 2. 删除标签栏
- 3. 如何从Facebook页面中删除页面标签?
- 4. 如何从下载页面中删除所有html标签
- 5. 在从应用中删除标签栏后面临异常
- 6. 只从一个页面中删除statcounter脚本
- 7. 删除HTML页面的样式标签
- 8. 如何使用标签栏出现主页面,然后在其中一个页面上添加标签栏?
- 9. Jsoup只删除html标签
- 10. 标题从页面中删除
- 11. 如何从产品页面中删除“标签”块?
- 12. 当用户点击上一个标签时从类别中删除类
- 13. get_the_excerpt()删除页面中的所有p标签
- 14. Cookie被从另一个页面删除?
- 15. 页面只能有一个服务器端表单标签
- 16. 页面只能有一个服务器端的Form标签。
- 17. 从UITabBar中删除标签没有UITabBarController
- 18. JavaScript:从页面中删除当前的鼠标突出显示?
- 19. 从HtmlTextWriter中删除标签
- 20. 一个页面在ASP.net中只能有一个服务器端表单标签
- 21. 单击时将标签栏从一个标签栏移动到另一个标签栏(带有导航控制器的标签栏)
- 22. 当母版页中没有ScriptManager时,从内容页面更新MasterPage的标签
- 23. 只有当有上一个/下一个页面时才显示上一个/下一个页面
- 24. Umbraco.TagQuery从当前页面获取标签
- 25. 当页面加载时打开标签
- 26. 只有一个标签
- 27. 如何删除目标c中的多个标签栏项目?
- 28. 从一个页面删除顶部栏/页眉/主导航链接
- 29. 从Woocommerce的产品页面删除标签
- 30. 标签栏的问题,导航到该页面时不显示标签栏
您可以在WinForms中通过捕获'TCM_ADJUSTRECT'消息[像这样](http://stackoverflow.com/a/4409941/366904)执行此操作。不过,我无法在MFC中使用它。不知道我做错了什么。我尝试了一个已经添加到对话框中的CTabCtrl的子类。它从来没有处理过这个消息,除非我手动发送它。 –
'TCM_ADJUSTRECT'在MFC中可以正常工作。通常情况下,您需要调用'CTabCtrl :: AdjustRect'来找出放置子页面的位置,这会生成'TCM_ADJUSTRECT'消息。我不认为这个消息是在WinForm中自动生成的。但是这个解决方案太复杂了,更容易避免调用'CTabCtrl :: AdjustRect' –