Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум «Основы разработки приложений Windows» книга 1.DOC
Скачиваний:
107
Добавлен:
10.05.2014
Размер:
721.41 Кб
Скачать

Инструментальная панель

Дальнейшего улучшения внешнего вида приложения можно добиться, включив в состав главного окна, наряду с линейкой меню (или вместо нее), инструментальную панель, которая представляет собой набор кнопок с рисунками, действующих точно так же, как и пункты обычного меню. Эти кнопки могут дублировать отдельные команды меню, но могут и дополнять их. На рис. 3.6 показана часть главного окна среды программирования Borland C++ со строкой заголовка, линейкой обычного меню (File, Edit и т. д.) и инструментальной панелью с пиктограммами стандартных действий (чтение и сохранение файла, компиляция, выполнение и т. д.).

Рис. 3.6. Обычное меню и инструментальная панель

Для создания инструментальной панели необходимо прежде всего подготовить файл с растровым изображением рисунков на кнопках (в формате .BMP). Могут быть разные варианты размещения кнопок (вплотную друг к другу, с промежутками, группами и т. д.). Обычно кнопки имеют размер 1616 пикселов, и тогда для размещения на инструментальной панели, например, трех кнопок, нужно создать растровое изображение размером 1648 пикселов (рис. 3.7). Разумеется, рисунки на кнопках могут быть цветными.

Рис. 3.7. Изображение трех кнопок для инструментальной панели

Поскольку изображение кнопок будет выступать у нас в качестве ресурса, в файл ресурсов необходимо включить ссылку на файл с изображением кнопок, например, таким образом:

ID_BTNS BITMAP "BTNS.BMP"

Здесь ID_BTNS –произвольная символическая константа, которая затем будет использоваться в качестве идентификатора данного ресурса, аBTNS.BMP – имя файла с изображением кнопок.

Действия по программной организации инструментальной панели удобно выполнить в функции OnCreate(). Здесь прежде всего создается (и обнуляется) структурная переменная – массив из трех (по числу кнопок) структур типаTBBUTTON.Эта структура описана в заголовочном файлеCOMMCTRL.H, который не подсоединяется автоматически, поэтому в начало программы необходимо включить директиву

#include <commctrl.h>.

Структура TBBUTTONсодержит шесть элементов, из которых нас будут интересовать всего три:

  • idBitmap– порядковый номер кнопки (кнопки нумеруются от 0);

  • idCommand– идентификатор кнопки (определенная заранее символьная константа);

  • fsState– состояние кнопки. ЗначениеTBSTATEENABLED разрешает управление с помощью данной кнопки.

После заполнения перечисленных выше элементов во всех трех (если кнопок три) членах нашего массива следует вызвать функцию Windows CreateToolbarEx(), указав в качестве ее параметров:

  • дескриптор главного окна;

  • стиль инструментальной панели (значение WSVISIBLE);

  • идентификатор всей инструментальной панели, который в программе не используется и может быть равен, например, -1;

  • число изображений кнопок в файле .BMP;

  • дескриптор приложения;

  • идентификатор ресурса с изображением кнопок;

  • адрес массива структур типа TBBUTTON;

  • число кнопок;

  • ширину и высоту каждой кнопки;

  • ширину и высоту изображения на каждой кнопке (размеры кнопок и изображений на них в принципе могут не совпадать);

  • размер структуры TBBUTTON, определяемый с помощью функции С++sizeof().

При нажатии кнопки инструментальной панели Windows посылает в приложение сообщение WMCOMMAND, которое приводит к вызову функцииOnCommand() с передачей через второй параметр этой функции значения идентификатора нажатой кнопки.Обычно в функцииOnCommand() предусматривают конструкциюswitch-case, с помощью которой организуют анализ значения идентификатора и выполнение запланированных действий. Если при этом в приложении имеются и обычное меню, и инструментальная панель, то при назначении пунктам меню и кнопкам инструментальной панели одинаковых идентификаторов они будут дублировать друг друга, если же идентификаторы будут разными, то с помощью меню можно управлять одними характеристиками приложения, а с помощью инструментальной панели – другими.