Флаг |
Описание |
CBRS_ALIGN_TOP |
Панель управления можно пристыковать к верхней границе окна |
CBRS_ALIGN_BOTTOM |
Панель управления можно пристыковать к нижней границе окна |
CBRS_ALIGN_LEFT |
Панель управления можно пристыковать к левой границе окна |
CBRS_ALIGN_RIGHT |
Панель управления можно пристыковать к правой границе окна |
CBRS_ALIGN_ANY |
Панель управления можно пристыковать к любой границе окна |
Если ни один из флагов не установлен, и параметр dwStyle равен нулю, то данная панель управления не может быть пристыкована ни к одной границе окна. В этом случае надо вызвать метод CFrameWnd::FloatControlBar и панель управления появится в отдельном мини-окне.
Панель управления можно пристыковать только к тем границам окна, которые одновременно выбраны методами CFrameWnd::EnableDocking и CControlBar::EnableDocking.
Методы DockControlBar и FloatControlBar класса CFrameWnd
Чтобы пристыковать панель управления к границе окна, надо вызвать метод 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 равен нулю, то панель управления присоединяется к любой стороне окна.
Как видите, параметр nDockBarID может задавать несколько сторон окна одновременно. В этом случае панель управления присоединяется к той границе окна, которая одновременно указана методами CFrameWnd::EnableDocking и CControlBar::EnableDocking. Если таких границ несколько, то они выбираются в следующем порядке – сначала верхняя, а если к ней панель не может быть присоединена, тогда нижняя, левая, и правая стороны окна.
Последний параметр lpRect определяет, где именно будет отображаться панель управления. Положение панели задается в экранных координатах.
Если вам надо отобразить панель управления в отдельном мини-окне и не пристыковывать его к границам окна, то вместо метода DockControlBar вызовите метод FloatControlBar класса CFrameWnd:
CFrameWnd* FloatControlBar(CControlBar * pBar, CPoint point);
Панель управления, указанная параметром pBar, отображается в отдельном мини-окне. Расположение окна панели управления задается параметром point, который указывает координаты верхнего левого угла панели управления. Используются экранные координаты.
Метод FloatControlBar возвращает указатель на текущее окно.
По умолчанию, панель управления не имеет заголовка. Для установки и изменения текста заголовка используйте метод SetWindowText, определенный в классе CWnd:
void SetWindowText(LPCTSTR lpszString);
Параметр lpszString должен содержать указатель на объект класса CString или строку символов, закрытую двоичным нулем. В ней должен быть записан заголовок для панели управления.
Панель управления может иметь постоянную форму, которую пользователь не может изменить, или может быть динамически изменяемой. В последнем случае пользователь может менять форму панели управления с помощью мыши.
Можно изменить форму панели управления или нет, определяется методом Create класса CToolBar. Если при создании панели управления был установлен флаг CBRS_SIZE_DYNAMIC ее форму можно менять, а если был установлен флаг CBRS_SIZE_FIXED — нельзя.
В состав класса CToolBar входит метод SetButtonStyle. Этот метод позволяет определить режим работы кнопок панели управления, сгруппировать несколько кнопок вместе:
void SetButtonStyle(int nIndex, UINT nStyle);
Параметр nIndex выбирает индекс кнопки или разделителя в панели управления, а параметр nStyle позволяет установить новый режим работы для выбранной кнопки или разделителя. Индекс кнопки или разделителя соответствует ее порядковому номеру в панели управления.
В качестве параметра nStyle можно указать комбинацию из следующих флагов:
Флаг |
Режим кнопки или разделителя |
TBBS_BUTTON |
Стандартная кнопка |
TBBS_SEPARATOR |
Разделитель |
TBBS_CHECKBOX |
Переключатель |
TBBS_GROUP |
С данной кнопки начинается группа кнопок |
TBBS_CHECKGROUP |
С данной кнопки начинается группа переключателей |
TBBS_WRAPPED |
Этот флаг позволяет создать панель управления, в которой кнопки расположены в несколько рядов. Установите этот флаг для самых последних кнопок в каждом ряду. Кнопка, следующая за кнопкой с установленным флагом TBBS_WRAPPED, отображается в новом ряду |
Заметим, что стиль TBBS_WRAPPED не описан в документации Microsoft Visual C++, но активно используется в примерах приложений и работает как положено
Читать дальше