Редактор панели инструментов
Панель инструментов может содержать как кнопки, инициирующие выполнение элементов меню, так и кнопки, вызывающие собственные методы обработки.
Приложение может иметь несколько различных панелей инструментов.
При создании приложения с использованием AppWizard автоматически создается одна панель инструментов, содержащая кнопки для некоторых элементов меню.
Для создания новых панелей инструментов или редактирования уже существующих следует использовать редактор панели инструментов. Для вызова редактора панели инструментов достаточно щелкнуть мышью на идентификаторе ресурса меню в секции Toolbar вкладки ресурсов в окне проекта.
На рис. 9.5 показано окно редактора панели инструментов Арр2.гс -IDR_MAINFRAME и вспомогательные панели инструментов Graphics, Colors и Text Tools.
Рис. 9.5. Окно редактора панели инструментов
В верхней части окна редактора панели инструментов отображена создаваемая панель инструментов, а в нижней части расположен графический редактор изображения выбранной кнопки. Справа в графическом редакторе отображается вид кнопки в натуральную величину, а слева расположено окно с увеличенным изображением кнопки, в котором можно рисовать, используя инструментарий из вспомогательных панелей Graphics, Colors и Text Tools.
Выбор редактируемой кнопки выполняется в окне редактора ресурса (в данном случае это Арр2.гс).
Изменение порядка расположения кнопок на панели инструментов может быть выполнено простым перетаскиванием их мышью. Для добавления новой кнопки следует выбрать последнюю кнопу, отображаемую пустой.
Для установления или изменения связи между кнопкой и идентифика- I тором следует вызвать диалоговое окно свойств кнопки (рис. 9.6). Это окно может быть вызвано по двойному щелчку мыши на кнопке, расположенной в окне редактора панели инструментов.
Рис. 9.6. Окно свойств кнопки панели инструментов
Таким образом любая кнопка, расположенная на панели инструментов, может быть связана с идентификатором элемента меню или клавиши-акселератора. Отметим, что для того, чтобы кнопка была идентична какому-либо элементу меню и его клавишам-акселераторам, во всех трех случаях следует указывать один и тот же идентификатор.
Программирование обработчиков команд меню
Связь между идентификатором (ресурса) и его методом обработки сообщения выполняется в ClassWizard. Для установления связи следует:
• вызвать ClassWizard (рис. 9.7);
• выбрать класс, в который ClassWizard будет помещать определения методов обработки сообщений;
• в окне, содержащем список идентификаторов, выбрать последовательно каждый связываемый идентификатор и один или несколько методов, используемых для обработки сообщений для этого идентификатора. Каждый раз для добавления определения нового метода обработки сообщения следует щелкнуть на командной кнопке Add Function;
• перейти в окно кода, содержащее добавленные методы обработки сообщения, и ввести требуемый код обработки сообщения.
Рис. 9.7. Вкладка MessageMaps окна Class Wizard
На.панели Message для каждого выбираемого идентификатора из списка панели ObjectlDs отображаются два сообщения:
• COMMAND, по которому вызывается метод обработки выполнения данного элемента меню, клавиши-акселератора или кнопки панели инструментов;
• UPDATE_COMMAND_UI, используемое для вызова метода, определяющего доступность элемента, связанного с указанным идентификатором ресурса (элемента меню или кнопки панели инструментов).
Создание динамических элементов меню
Иногда требуется, чтобы некоторые элементы меню отображались не всегда, а только при наличии определенных условий. Будем называть элементы меню, отображаемые непостоянно, динамическими элементами меню. Примером может служить список открытых окон, формируемый в раскрывающемся стандартном меню Windows для большинства приложений. ►Для того чтобы использовать динамические элементы меню, следует: 1. Ввести идентификатор одного или нескольких элементов меню (добавляемые идентификаторы должны иметь последовательные значения);