Расположение панели с вкладками в VS2008 с помощью MFC Feature Pack 1 - PullRequest
0 голосов
/ 30 июля 2010

Использовать имя из http://msdn.microsoft.com/en-us/library/cc309030.aspx

Когда я присоединяю CPaneDialog к другому CDockablePane, положение панели с вкладками всегда находится в нижней части области док-станции, как установить положение панели с вкладками в верхней части область дока, как у обычного вкладочного элемента управления?

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Хорошо, я понял это, поэтому я отвечу на свой вопрос:)

Когда 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, положение вкладки будет внизу, что по умолчанию.

0 голосов
/ 18 марта 2013

Я получил удовлетворительные результаты, изменив CTabbedPane::m_bTabsAlwaysTop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...