Класс 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следующем разделе:

Иерархия наследования

CObject

CCmdTarget

CWnd

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