Хорошо, я понял это, поэтому я отвечу на свой вопрос:)
Когда 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);
ИЛИ
HWND hWndTab = NULL;
CMFCBaseTabCtrl* parent = GetParentTabWnd(hWndTab);
if (parent)
{
parent->SetLocation(CMFCBaseTabCtrl::LOCATION_TOP);
}
Вам необходимо переопределить этот метод во всех классах, производных от CDockablePane, для правильной работы, в противном случае положение вкладки будет зависеть от панели, которую вы перетаскиваете, чтобы закрепить другую панель.
Например: PaneA имеет код для установки положения вкладки вверху, а PaneB - нет.
Если вы перетаскиваете PaneA в стыковку с PaneB, положение вкладки будет сверху.
Если вы перетаскиваете PaneB в стыковку с PaneA, положение вкладки будет внизу, что по умолчанию.