Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
7.08 Mб
Скачать

Редактор панели инструментов

Панель инструментов может содержать как кнопки, инициирующие вы­полнение элементов меню, так и кнопки, вызывающие собственные мето­ды обработки.

Приложение может иметь несколько различных панелей инструментов.

При создании приложения с использованием 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. Ввести идентификатор одного или нескольких элементов меню (добав­ляемые идентификаторы должны иметь последовательные значения);

Соседние файлы в папке VC++Баженова