Визуальное программирование и MFC

       

Макрокоманда ON_UPDATE_COMMAND_UI


Макрокоманда ON_UPDATE_COMMAND_UI для использования в таблицах сообщений приложения и имеет следующий формат:

ON_UPDATE_COMMAND_UI(id, Имя_метода)

Параметр id определяет идентификатор строки меню, кнопки панели управления или индикатора панели состояния, для которых надо обработать команду обновления. Параметр Имя_метода задает метод, выполняющий обновление.

Если один и тот же метод вызывается для обработки различных макрокоманд обновления, можно использовать другую макрокоманду - ON_UPDATE_COMMAND_UI_RANGE. Она вызывает метод Имя_метода для обработки всех команд обновления, идентификаторы которых находятся в промежутке значений от id1 до id2:

ON_UPDATE_COMMAND_UI_RANGE(id1, id2, MethodName)

Наилучшим способом создания обработчиков команд обновления и включения соответствующих макрокоманд в таблицу сообщений приложения является использование средства ClassWizard.

Однако назначить один обработчик команд обновления нескольким объектам пользовательского интерфейса ClassWizard не позволяет. При необходимости можно самостоятельно включить в таблицу сообщений макрокоманду ON_UPDATE_COMMAND_UI_RANGE.

Еще одно ограничение ClassWizard заключается в том, что он не дает возможности создать обработчики для команд обновления от индикаторов панели состояния. Такие обработчики придется добавлять к класса приложения вручную.

Рассмотрим описание метода-обработчика команд обновления. Вызывающийся макрокомандами ON_UPDATE_COMMAND_UI_RANGE и ON_UPDATE_COMMAND_UI метод-обработчик команд обновления имеет следующий формат:

afx_msg void Имя_метода(CCmdUI *pCmdUI);

Имя метода-обработчика обычно формируется из префикса OnUpdate и названия соответствующего объекта интерфейса пользователя - строки меню, кнопки панели управления или индикатора панели состояния.

В качестве параметра этому методу передается указатель на объект класса CCmdUI. Этот объект представляет элемент пользовательского интерфейса (строку меню, кнопку панели управления, индикатор панели состояния), для которого надо обработать команду обновления. Вызывая методы класса CCmdUI, можно легко изменять состояние соответствующего объекта интерфейса пользователя.



Содержание раздела