Если вы не выполните хотя бы один пункт из трех, перечисленных выше, панель управления будет жестко привязана к одной из границ окна, или возникнет ошибка во время работы приложения
Параметры методов CFrameWnd::EnableDocking, CControlBar::EnableDocking, а также CFrameWnd::DockControlBar и CFrameWnd::FloatControlBar определяют границы окна, к которым можно пристыковать панель управления. Рассмотрим эти методы более подробно.
Метод EnableDocking класса CFrameWnd разрешает пристыковку панели управления к определенным границам окна:
void EnableDocking(DWORD dwDockStyle);
Параметр dwDockStyle задает границы окна, к которым можно пристыковать панель управления. В качестве этого параметра надо использовать комбинации из флагов, перечисленных в следующей таблице.
Флаг | Описание |
---|---|
CBRS_ALIGN_TOP | Панель управления можно пристыковать к верхней границе окна |
CBRS_ALIGN_BOTTOM | Панель управления можно пристыковать к нижней границе окна |
CBRS_ALIGN_LEFT | Панель управления можно пристыковать к левой границе окна |
CBRS_ALIGN_RIGHT | Панель управления можно пристыковать к правой границе окна |
CBRS_ALIGN_ANY | Панель управления можно пристыковать к любой границе окна |
Чтобы панель управления можно было перемещать с одной стороны окна к другой, надо вызвать метод EnableDocking для окна и для каждой панели управления (если их несколько).
Формат вызова метода EnableDocking класса CFrameWnd соответствует формату метода EnableDocking класса CControlBar. Однако набор флагов, которые можно указать в качестве параметра dwStyle, расширен:
void EnableDocking(DWORD dwStyle);
Флаг | Описание |
---|---|
CBRS_ALIGN_TOP | Панель управления можно пристыковать к верхней границе окна |
CBRS_ALIGN_BOTTOM | Панель управления можно пристыковать к нижней границе окна |
CBRS_ALIGN_LEFT | Панель управления можно пристыковать к левой границе окна |
CBRS_ALIGN_RIGHT | Панель управления можно пристыковать к правой границе окна |
CBRS_ALIGN_ANY | Панель управления можно пристыковать к любой границе окна |
Если ни один из флагов не установлен, и параметр dwStyle равен нулю, то данная панель управления не может быть пристыкована ни к одной границе окна. В этом случае надо вызвать метод CFrameWnd::FloatControlBar и панель управления появится в отдельном мини-окне.
Панель управления можно пристыковать только к тем границам окна, которые одновременно выбраны методами CFrameWnd::EnableDocking и CControlBar::EnableDocking.
Чтобы пристыковать панель управления к границе окна, надо вызвать метод DockControlBar класса CFrameWnd :
void DockControlBar(CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL);
Панель управления, заданная параметром pBar, пристыковывается к границе окна, указанной параметром nDockBarID. В качестве nDockBarID можно использовать один или несколько флагов, перечисленных ниже.
Флаг | Описание |
---|---|
AFX_IDW_DOCKBAR_TOP | Панель управления присоединяется к верхней границе окна |
AFX_IDW_DOCKBAR_BOTTOM | Панель управления присоединяется к нижней границе окна |
AFX_IDW_DOCKBAR_LEFT | Панель управления присоединяется к левой границе окна |
AFX_IDW_DOCKBAR_RIGHT | Панель управления присоединяется к правой границе окна |
Если параметр nDockBarID равен нулю, то панель управления присоединяется к любой стороне окна.