使用來自 http://msdn.microsoft.com/en-us/library/cc309030.aspx對接標籤面板位置MFC Feature Pack 1的
命名規則。當我與另一個CDockablePane對接CPaneDialog選項卡面板位置 總是在碼頭區域的底部,如何設置標籤面板位置碼頭區域頂部的 像正常的標籤控制?
使用來自 http://msdn.microsoft.com/en-us/library/cc309030.aspx對接標籤面板位置MFC Feature Pack 1的
命名規則。當我與另一個CDockablePane對接CPaneDialog選項卡面板位置 總是在碼頭區域的底部,如何設置標籤面板位置碼頭區域頂部的 像正常的標籤控制?
好吧,我想通了,所以我會回答我的問題:)
當CDockablePane對接對方,MFC將創建CBaseTabbedPane持有CDockablePanes。要更改默認設置爲底部(如在Visual Studio)頂部(如在正常的標籤),標籤位置,你需要重寫此方法在您的CDockablePane派生類
void CDockablePane::OnAfterDock(CBasePane* /*pBar*/, LPCRECT /*lpRect*/, AFX_DOCK_METHOD /*dockMethod*/);
與此代碼:
CBaseTabbedPane* tabbedPane = GetParentTabbedPane();
if (!tabbedPane) return;
CMFCBaseTabCtrl* tabCtrl = tabbedPane->GetUnderlyingWindow();
if (!tabCtrl) return;
tabCtrl->SetLocation(CMFCBaseTabCtrl::LOCATION_TOP);
OR
你需要覆蓋所有CDockablePane派生的類此方法才能正常工作,否則標籤位置將取決於你拖動做窗格ck另一個窗格。
例如:PaneA有代碼將標籤位置設置爲頂部,但PaneB沒有。
如果您將PaneA拖到與PaneB停靠處,則選項卡位置將位於頂部。
如果您拖動PaneB與PaneA對接,則標籤位置將位於默認的底部。
我通過修改CTabbedPane::m_bTabsAlwaysTop
獲得了滿意的結果。