2010-07-30 27 views

回答

1

好吧,我想通了,所以我會回答我的問題:)

當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對接,則標籤位置將位於默認的底部。

0

我通過修改CTabbedPane::m_bTabsAlwaysTop獲得了滿意的結果。