我在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. 從jquerymobile頁面中刪除一個類
- 7. 只從一個頁面的類中刪除樣式?
- 8. 只從一個頁面中刪除statcounter腳本
- 9. 如何從一個鏈接中刪除一個類...只在一個頁面上?
- 10. 當一個複選框被選中時,從標籤中刪除類
- 11. 刪除HTML頁面的樣式標籤
- 12. 如何使用標籤欄出現主頁面,然後在其中一個頁面上添加標籤欄?
- 13. 從一個標籤欄移動到另一個標籤欄時屏幕變黑
- 14. 刪除一個重複的html標籤只有
- 15. Jsoup只刪除html標籤
- 16. 標題從頁面中刪除
- 17. 使用jquery從html頁面中刪除樣式標籤
- 18. 如何從windows phone的搜索頁面中刪除標籤?
- 19. Php:我們如何從頁面列表中刪除錨標籤?
- 20. 如何從產品頁面中刪除「標籤」塊?
- 21. 當用戶點擊上一個標籤時從類別中刪除類
- 22. get_the_excerpt()刪除頁面中的所有p標籤
- 23. 刪除標籤欄中的徽章
- 24. Cookie被從另一個頁面刪除?
- 25. 頁面只能有一個服務器端的Form標籤。
- 26. 頁面只能有一個服務器端表單標籤
- 27. 從UITabBar中刪除標籤沒有UITabBarController
- 28. JavaScript:從頁面中刪除當前的鼠標突出顯示?
- 29. 從HtmlTextWriter中刪除標籤
- 30. 從Location.Hash中刪除標籤
您可以在WinForms中通過捕獲'TCM_ADJUSTRECT'消息[像這樣](http://stackoverflow.com/a/4409941/366904)執行此操作。不過,我無法在MFC中使用它。不知道我做錯了什麼。我嘗試了一個已經添加到對話框中的CTabCtrl的子類。它從來沒有處理過這個消息,除非我手動發送它。 –
'TCM_ADJUSTRECT'在MFC中可以正常工作。通常情況下,您需要調用'CTabCtrl :: AdjustRect'來找出放置子頁面的位置,這會生成'TCM_ADJUSTRECT'消息。我不認爲這個消息是在WinForm中自動生成的。但是這個解決方案太複雜了,更容易避免調用'CTabCtrl :: AdjustRect' –