Класс CControlBar
Базовый класс для классов CStatusBar, CToolBar, CDialogBar, CReBar и COleResizeBar.
Синтаксис
class CControlBar : public CWnd
Участники
Защищенные конструкторы
Имя | Описание |
---|---|
CControlBar::CControlBar | Формирует объект CControlBar . |
Открытые методы
Имя | Описание |
---|---|
CControlBar::CalcDynamicLayout | Возвращает размер динамической панели управления в виде объекта CSize . |
CControlBar::CalcFixedLayout | Возвращает размер панели управления в виде объекта CSize . |
CControlBar::CalcInsideRect | Возвращает текущие измерения области панели управления; включая границы. |
CControlBar::D oPaint | Отрисовывает границы и захват панели управления. |
CControlBar::D rawBorders | Отрисовывает границы панели управления. |
CControlBar::D rawGripper | Отрисовывает захват панели управления. |
CControlBar::EnableDocking | Позволяет закрепить или с плавать панелью управления. |
CControlBar::GetBarStyle | Извлекает параметры стиля панели управления. |
CControlBar::GetBorders | Извлекает значения границы панели управления. |
CControlBar::GetCount | Возвращает количество элементов, отличных от HWND, в панели управления. |
CControlBar::GetDockingFrame | Возвращает указатель на кадр, к которому закреплена панель управления. |
CControlBar::IsFloating | Возвращает ненулевое значение, если заданная панель управления является плавающей панелью управления. |
CControlBar::OnUpdateCmdUI | Вызывает обработчики пользовательского интерфейса команды. |
CControlBar::SetBarStyle | Изменяет параметры стиля панели управления. |
CControlBar::SetBorders | Задает значения границы панели управления. |
CControlBar::SetInPlaceOwner | Изменяет владельца панели управления на месте. |
Открытые члены данных
Имя | Описание |
---|---|
CControlBar::m_bAutoDelete | Если ненулевое CControlBar значение, объект удаляется при уничтожении панели управления Windows. |
CControlBar::m_pInPlaceOwner | Владелец панели управления на месте. |
Замечания
Панель управления — это окно, которое обычно выровнено по левому или правому краю окна кадра. Он может содержать дочерние элементы, которые являются элементами управления на основе HWND, которые являются окнами, которые создают и отвечают на сообщения Windows, или элементы, отличные от HWND, которые не являются окнами и управляются кодом приложения или кодом платформы. Списки и элементы управления редактированием являются примерами элементов управления на основе HWND; Панели состояния и кнопки растрового изображения являются примерами элементов управления, отличных от HWND.
Окна панели управления обычно являются дочерними окнами родительского окна фрейма и обычно являются одноуровневым представлением клиента или клиентом MDI окна кадра. Объект CControlBar
использует сведения о прямоугольнике клиента родительского окна для размещения себя. Затем он сообщает родительскому окну о том, сколько пространства остается нераспределенным в клиентской области родительского окна.
Дополнительные сведения см. в CControlBar
следующем разделе:
Иерархия наследования
CControlBar
Требования
Заголовок: afxext.h
CControlBar::CalcDynamicLayout
Платформа вызывает эту функцию-член для вычисления измерений динамической панели инструментов.
virtual CSize CalcDynamicLayout(
int nLength,
DWORD nMode);
Параметры
nLength
Запрошенное измерение панели управления ( горизонтальное или вертикальное) в зависимости от dwMode.
nMode
Для определения высоты и ширины динамической панели управления используются следующие предопределенные флаги. Используйте побитовый оператор OR (|
) для объединения флагов.
Флаги режима макета | Значение |
---|---|
LM_STRETCH | Указывает, следует ли растянуть панель управления до размера кадра. Установите, если панель не является закрепивочной панелью (недоступной для закрепления). Не задано, если панель закреплена или плавает (доступна для закрепления). Если задано, LM_STRETCH игнорирует nLength и возвращает измерения на основе состояния LM_HORZ. LM_STRETCH работает аналогично параметру bStretch , используемому в CalcFixedLayout. Дополнительные сведения о связи между растяжением и ориентацией см. в этой функции-члене. |
LM_HORZ | Указывает, что панель по горизонтали или вертикали ориентирована. Установите, если полоса горизонтально ориентирована и если она ориентирована по вертикали, она не задана. LM_HORZ работает аналогично параметру bHorz , используемому в CalcFixedLayout; дополнительные сведения о связи между растяжением и ориентацией см. в этой функции-члене. |
LM_MRUWIDTH | В последнее время используется динамическая ширина. Игнорирует параметр nLength и использует запоминаемую недавно используемую ширину. |
LM_HORZDOCK | Горизонтальные закрепленные измерения. Игнорирует параметр nLength и возвращает динамический размер с наибольшей шириной. |
LM_VERTDOCK | Вертикальные закрепленные измерения. Игнорирует параметр nLength и возвращает динамический размер с наибольшей высотой. |
LM_LENGTHY | Если nLength указывает высоту (направление Y), а не ширину. |
LM_COMMIT | Сбрасывает LM_MRUWIDTH на текущую ширину с плавающей панели управления. |
Возвращаемое значение
Размер панели управления (в пикселях ) объекта CSize .
Замечания
Переопределите эту функцию-член, чтобы предоставить собственный динамический макет в классах, производных от CControlBar
. Классы MFC, производные от CControlBar
таких, как CToolbar, переопределяют эту функцию-член и предоставляют собственную реализацию.
CControlBar::CalcFixedLayout
Вызовите эту функцию-член, чтобы вычислить горизонтальный размер панели управления.
virtual CSize CalcFixedLayout(
BOOL bStretch,
BOOL bHorz);
Параметры
bStretch
Указывает, должна ли полоса быть растянута до размера кадра. Параметр bStretch не является ненулевой, если панель не является закрепления (недоступной для док-станции) и имеет значение 0, если он закреплен или плавает (доступен для закрепления).
bHorz
Указывает, что панель по горизонтали или вертикали ориентирована. Параметр bHorz является ненулевой, если полоса горизонтально ориентирована и имеет значение 0, если она ориентирована по вертикали.
Возвращаемое значение
Размер панели управления (в пикселях) CSize
объекта.
Замечания
Панели управления, такие как панели инструментов, могут растянуться по горизонтали или по вертикали, чтобы разместить кнопки, содержащиеся на панели управления.
Если bStretch имеет значение TRUE, растяните измерение вдоль ориентации, предоставленной bHorz. Другими словами, если bHorz имеет значение FALSE, панель управления растянута по вертикали. Если bStretch имеет значение FALSE, не происходит растяжения . В следующей таблице показаны возможные перемутации и результирующий стили панели управления, bStretch и bHorz.
bStretch | bHorz | Растяжение | Ориентация | Закрепление или не закрепление |
---|---|---|---|---|
TRUE | TRUE | Горизонтальное растяжение | Горизонтально ориентированный | Не закрепление |
TRUE | FALSE | Вертикальное растяжение | Вертикально ориентированный | Не закрепление |
FALSE | TRUE | Нет возможности растяжения | Горизонтально ориентированный | Закрепление |
FALSE | FALSE | Нет возможности растяжения | Вертикально ориентированный | Закрепление |
CControlBar::CalcInsideRect
Платформа вызывает эту функцию для вычисления клиентской области панели управления.
virtual void CalcInsideRect(
CRect& rect,
BOOL bHorz) const;
Параметры
rect
Содержит текущие измерения панели управления; включая границы.
bHorz
Указывает, что панель по горизонтали или вертикали ориентирована. Параметр bHorz является ненулевой, если полоса горизонтально ориентирована и имеет значение 0, если она ориентирована по вертикали.
Замечания
Эта функция вызывается перед краской панели управления.
Переопределите эту функцию, чтобы настроить отрисовку границ и панель захвата панели управления.
CControlBar::CControlBar
Формирует объект CControlBar
.
CControlBar();
CControlBar::D oPaint
Вызывается платформой для отрисовки границ и панели захвата панели управления.
virtual void DoPaint(CDC* pDC);
Параметры
pDC
Указывает контекст устройства, используемый для отрисовки границ и захвата панели управления.
Замечания
Переопределите эту функцию, чтобы настроить поведение рисования панели управления.
Другим методом настройки является переопределение DrawBorders
и DrawGripper
функции и добавление пользовательского кода рисования для границ и захвата. Так как эти методы вызываются методом по умолчанию DoPaint
, переопределение DoPaint
не требуется.
CControlBar::D rawBorders
Вызывается платформой для отрисовки границ панели управления.
virtual void DrawBorders(
CDC* pDC,
CRect& rect);
Параметры
pDC
Указывает на контекст устройства, используемый для отрисовки границ панели управления.
rect
CRect
Объект, содержащий измерения панели управления.
Замечания
Переопределите эту функцию, чтобы настроить внешний вид границ панели управления.
CControlBar::D rawGripper
Вызывается платформой для отрисовки захвата панели управления.
virtual void DrawGripper(
CDC* pDC,
const CRect& rect);
Параметры
pDC
Указывает на контекст устройства, используемый для отрисовки захвата панели управления.
rect
CRect
Объект, содержащий измерения захвата панели управления.
Замечания
Переопределите эту функцию, чтобы настроить внешний вид захвата панели управления.
CControlBar::EnableDocking
Вызовите эту функцию, чтобы включить закрепление панели управления.
void EnableDocking(DWORD dwDockStyle);
Параметры
dwDockStyle
Указывает, поддерживает ли панель управления закрепление и стороны родительского окна, к которому можно закрепить панель управления, если она поддерживается. Может быть одним или несколькими из следующих вариантов:
CBRS_ALIGN_TOP Разрешает закрепление в верхней части клиентской области.
CBRS_ALIGN_BOTTOM Разрешает закрепление в нижней части клиентской области.
CBRS_ALIGN_LEFT Разрешает закрепление в левой части клиентской области.
CBRS_ALIGN_RIGHT Разрешает закрепление в правой части клиентской области.
CBRS_ALIGN_ANY Разрешает закрепление на любой стороне клиентской области.
CBRS_FLOAT_MULTI Позволяет с плавать несколькими полосами управления в одном окне мини-кадра.
Если значение 0 (то есть, указывающее отсутствие флагов), панель управления не будет закреплена.
Замечания
Указанные стороны должны соответствовать одной из сторон, включенных для закрепления в окне целевого кадра, или панель управления не может быть закреплена в этом окне кадра.
CControlBar::GetBarStyle
Вызовите эту функцию, чтобы определить, какие параметры CBRS_ (стили панели управления) в настоящее время задаются для панели управления.
DWORD GetBarStyle();
Возвращаемое значение
Текущие параметры CBRS_ (стили панели управления) для панели управления. Полный список доступных стилей см. в разделе CControlBarBar::SetBarStyle .
Замечания
Не обрабатывает стили WS_ (стиль окна).
CControlBar::GetBorders
Возвращает текущие значения границы для панели управления.
CRect GetBorders() const;
Возвращаемое значение
CRect
Объект, содержащий текущую ширину (в пикселях) каждой стороны объекта панели управления. Например, значение левого элемента объекта CRect — это ширина левой границы.
CControlBar::GetCount
Возвращает количество элементов, отличных от HWND, в объекте CControlBar
.
int GetCount() const;
Возвращаемое значение
Количество элементов, отличных от HWND, в объекте CControlBar
. Эта функция возвращает значение 0 для объекта CDialogBar .
Замечания
Тип элемента зависит от производного объекта: панелей для объектов CStatusBar и кнопок и разделителей для объектов CToolBar .
CControlBar::GetDockingFrame
Вызовите эту функцию-член, чтобы получить указатель на текущее окно кадра, к которому закреплена панель управления.
CFrameWnd* GetDockingFrame() const;
Возвращаемое значение
Указатель на окно кадра в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.
Если панель управления не закреплена в окне кадра (то есть если панель управления плавает), эта функция вернет указатель на родительский CMiniFrameWnd.
Замечания
Дополнительные сведения о закреплении панели управления см. в разделе CControlBar::EnableDocking и CFrameWnd::D ockControlBar.
CControlBar::IsFloating
Вызовите эту функцию-член, чтобы определить, плавает ли панель управления или закреплена.
BOOL IsFloating() const;
Возвращаемое значение
Ненулевое значение, если панель управления плавает; в противном случае — 0.
Замечания
Чтобы изменить состояние панели управления с закрепленного на плавающее, вызовите CFrameWnd::FloatControlBar.
CControlBar::m_bAutoDelete
Если ненулевое CControlBar
значение, объект удаляется при уничтожении панели управления Windows.
BOOL m_bAutoDelete;
Замечания
m_bAutoDelete — это общедоступная переменная типа BOOL.
Объект панели управления обычно внедряется в объект фрейма. В этом случае m_bAutoDelete равен 0, так как внедренный объект панели управления уничтожается при уничтожении окна фрейма.
Задайте для этой переменной значение, отличное от нуля, если вы выделяете CControlBar
объект в куче и не планируете вызывать delete
.
CControlBar::m_pInPlaceOwner
Владелец панели управления на месте.
CWnd* m_pInPlaceOwner;
CControlBar::OnUpdateCmdUI
Эта функция-член вызывается платформой для обновления состояния панели инструментов или строки состояния.
virtual void OnUpdateCmdUI(
CFrameWnd* pTarget,
BOOL bDisableIfNoHndler) = 0;
Параметры
pTarget
Указывает на главное окно фрейма приложения. Этот указатель используется для сообщений об обновлении маршрутизации.
bDisableIfNoHndler
Флаг, указывающий, должен ли элемент управления без обработчика обновления автоматически отображаться как отключенный.
Замечания
Чтобы обновить отдельную кнопку или область, используйте макрос ON_UPDATE_COMMAND_UI в карте сообщений, чтобы задать обработчик обновления соответствующим образом. Дополнительные сведения об использовании этого макроса см . в ON_UPDATE_COMMAND_UI .
OnUpdateCmdUI
вызывается платформой, когда приложение неактивно. Окно фрейма, обновляемое, должно быть дочерним окном, по крайней мере косвенно, видимого окна фрейма. OnUpdateCmdUI
— это расширенная переопределение.
CControlBar::SetBarStyle
Вызовите эту функцию, чтобы задать нужные стили CBRS_ для панели управления.
void SetBarStyle(DWORD dwStyle);
Параметры
dwStyle
Требуемые стили для панели управления. Может быть одним или несколькими из следующих вариантов:
CBRS_ALIGN_TOP Позволяет закрепить панель управления в верхней части клиентской области окна кадра.
CBRS_ALIGN_BOTTOM Позволяет закрепить панель управления в нижней части клиентской области окна кадра.
CBRS_ALIGN_LEFT Позволяет закрепить панель управления слева от клиентской области окна кадра.
CBRS_ALIGN_RIGHT Позволяет закрепить панель управления справа от клиентской области окна фрейма.
CBRS_ALIGN_ANY Позволяет закреплению панели управления к любой стороне клиентской области окна кадра.
CBRS_BORDER_TOP вызывает рисование границы на верхнем краю панели управления, когда она будет видна.
CBRS_BORDER_BOTTOM вызывает рисование границы на нижнем краю панели управления, когда она будет видна.
CBRS_BORDER_LEFT вызывает рисование границы на левом краю панели управления, когда она будет видна.
CBRS_BORDER_RIGHT вызывает рисование границы на правом краю панели управления, когда она будет видна.
CBRS_FLOAT_MULTI Позволяет с плавать несколькими полосами управления в одном окне мини-кадра.
CBRS_TOOLTIPS приводит к отображению подсказок инструментов для панели управления.
CBRS_FLYBY приводит к обновлению текста сообщения одновременно с советами инструментов.
CBRS_GRIPPER вызывает захват, аналогичный тому, который используется для полос в
CReBar
объекте, для любогоCControlBar
производного класса.
Замечания
Не влияет на параметры WS_ (стиль окна).
CControlBar::SetBorders
Вызовите эту функцию, чтобы задать размер границ панели управления.
void SetBorders(
int cxLeft = 0,
int cyTop = 0,
int cxRight = 0,
int cyBottom = 0);
void SetBorders(LPCRECT lpRect);
Параметры
cxLeft
Ширина (в пикселях) левой границы панели управления.
cyTop
Высота (в пикселях) верхней границы панели управления.
cxRight
Ширина (в пикселях) правой границы панели управления.
cyBottom
Высота (в пикселях) нижней границы панели управления.
lpRect
Указатель на объект CRect , содержащий текущую ширину (в пикселях) каждой границы объекта панели управления.
Пример
Следующий пример кода задает верхние и нижние границы панели управления 5 пикселей, а левые и правые границы — 2 пикселя:
CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);
CControlBar::SetInPlaceOwner
Изменяет владельца панели управления на месте.
void SetInPlaceOwner(CWnd* pWnd);
Параметры
pWnd
Указатель на объект CWnd
.
Замечания
См. также
Пример КЛАВИШ CTRLBARS MFC
Класс CWnd
Диаграмма иерархии
Класс CToolBar
Класс CDialogBar
Класс CStatusBar
Класс CReBar