Visual C++. Описание стандартных классов - CToolBar

ОГЛАВЛЕНИЕ


CToolBar

Объекты класса CToolBar представляют собой панели управления, представляющие собой ряд кнопок, на которых помещены битовые образы, между которыми могут находиться разделители. Кнопки панели инструментов могут действовать как обычные кнопки, переключатели или флажки. Обычно объекты класса CToolBar внедряются в объекты оконных классов, производных от класса CFrameWnd или от класса CMDIFrameWnd. В библиотеке MFC версии 4.0 появилась функция CToolBar::GetToolBarCtrl, позволяющая пользователю получить непосредственный доступ к элементу управления Windows. Непосредственное использование элемента управления Windows позволяет вносить в него изменения и использовать дополнительные возможности данного элемента управления. Функции-члены класса CToolBar обеспечивают достаточно широкие возможности для работы с панелью инструментов, но функция GetToolBarCtrl позволяет использовать дополнительные возможности панелей инструментов в Windows 95. Функция GetToolBarCtrl возвращает ссылку на объект класса CToolBarCtrl. Чтобы создать панель инструментов с помощью редактора ресурсов:
  1. Создайте ресурс панели инструментов.
  2. Создайте объект класса CToolBar.
  3. Вызовите функцию Create (CreateEx) для создания панели инструментов Windows и связывания ее с объектом класса CToolBar.
  4. Вызовите функцию LoadToolBar для загрузки ресурса панели инструментов.
Чтобы создать панель инструментов другим способом:
  1. Создайте объект класса CToolBar.
  2. Вызовите функцию Create (CreateEx) для создания панели инструментов Windows и связывания ее с объектом класса CToolBar.
  3. Вызовите функцию LoadBitmap для загрузки битового образа, содержащего значки для кнопок панели инструментов.
  4. Вызовите функцию SetButtons для установки стиля кнопок и сопоставьте каждой кнопке соответствующий ее битовый образ.
Все значки для кнопок панели инструментов хранятся в одном битовом образе. Все значки должны иметь одинаковые размеры. По умолчанию каждый значок имеет 16 элементов изображения в ширину и 15 элементов изображения в высоту. Значки должны располагаться в битовом образе без промежутков между ними. Функция SetButtons получает указатель на массив идентификаторов элементов управления и целочисленную величину, определяющую количество элементов в массиве. Функция сопоставляет каждому идентификатору кнопки сегмент битового образа и назначает каждой кнопке индекс значка, определяющий положение значка кнопки в битовом образе. Если элемент массива имеет значение ID_SEPARATOR, ему не назначается никакого индекса значка. Порядок значков в битовом образе обычно совпадает с порядком их отображения на экране, но с использованием функции SetButtonInfo порядок вывода значков может быть изменен. Все кнопки в панели инструментов имеют одинаковый размер. По умолчанию их размер составляет 24х22 элементов изображения. Этот размер определен в документе Windows Interface Guidelines for Software Design. Дополнительное пространство, образовавшееся вследствие разницы размеров кнопки и значка, используется для формирования рамки вокруг значка. Каждая кнопка имеет один значок. Все изображения на кнопке, отображающие ее состояние (нажата, отжата, недоступна, недоступна и нажата и промежуточное состояние) формируются из одного значка, связанного с кнопкой. Хотя битовый образ может иметь любой цвет, наилучшие результаты достигаются при использовании черного цвета и оттенков серого. По умолчанию кнопки панели инструментов имитируют простые кнопки. Однако они могут имитировать также и переключатели и флажки. Флажки имеют три состояния: установлен, сброшен и неопределенное. Переключатели имеют только два состояния: установлен и сброшен. Для установки стиля отдельной кнопки или разделителя без обращения к массиву сначала необходимо вызвать функцию GetButtonStyle, чтобы получить ее текущее состояние, а затем вызвать функцию SetButtonStyle вместо вызова функции SetButtons. Функцию SetButtonStyle целесообразно использовать при изменении стиля кнопки в процессе работы с приложением. Если необходимо, чтобы в кнопке появился текст, вызовите функцию GetButtonText, чтобы получить текст, который должен быть выведен в кнопке, а затем вызовите функцию SetButtonText для установки текста. Чтобы создать флажок в панели инструментов, необходимо использовать стиль TBBS_CHECKBOX или вызвать функцию CCmdUI::SetCheck при обработке сообщения ON_UPDATE_COMMAND_UI. Вызов функции SetCheck превращает обычную кнопку во флажок. Если аргумент функции SetCheck имеет значение 0, то флажок сбрасывается, если он имеет значение 1, то флажок устанавливается, а значение 2 соответствует неопределенному состоянию. Чтобы создать переключатель, необходимо вызвать функцию CCmdUI::SetRadio при обработке сообщения ON_UPDATE_COMMAND_UI. При передаче функции SetRadio нулевого аргумента переключатель сбрасывается, в противном случае он устанавливается. Чтобы создать группу переключателей, необходимо создать функции обработки сообщения ON_UPDATE_COMMAND_UI для всех кнопок группы. Описание данного класса содержится в файле заголовка afxext.h.