Ситуации вызова обработчиков обновления

Предположим, что пользователь щелкает мышь в меню "Файл", которое создает сообщение WM_INITMENUPOPUP. Механизм обновления платформы совместно обновляет все элементы в меню "Файл" перед раскрывающимся меню, чтобы пользователь смог увидеть его.

Для этого платформа маршрутизирует команды обновления для всех элементов меню во всплывающем меню вдоль стандартной маршрутизации команд. Целевые объекты команд для маршрутизации имеют возможность обновлять элементы меню, сопоставляя команду обновления с соответствующей записью карты сообщений (формы ON_UPDATE_COMMAND_UI) и вызывая функцию "обработчик обновления". Таким образом, для меню с шестью элементами меню отправляются шесть команд обновления. Если обработчик обновления существует для идентификатора команды элемента меню, он вызывается для обновления. Если нет, платформа проверка для существования обработчика для этого идентификатора команды и включает или отключает элемент меню соответствующим образом.

Если платформа не находит ON_UPDATE_COMMAND_UI запись во время маршрутизации команд, она автоматически включает объект пользовательского интерфейса, если есть запись с тем же идентификатором ON_COMMAND команды. В противном случае он отключает объект пользовательского интерфейса. Таким образом, чтобы убедиться, что объект пользовательского интерфейса включен, укажите обработчик команды, которую объект создает или предоставляет обработчик обновления для него. См. рисунок в разделе "Объекты пользовательского интерфейса" и идентификаторы команд.

Можно отключить отключение объектов пользовательского интерфейса по умолчанию. Дополнительные сведения см. в разделе m_bAutoMenuEnable член класса CFrameWnd в справочнике по MFC.

Инициализация меню выполняется автоматически в платформе, когда приложение получает WM_INITMENUPOPUP сообщение. Во время цикла простоя платформа выполняет поиск маршрутизации команд для обработчиков обновления кнопки так же, как и для меню.

См. также

Практическое руководство. Обновление объектов интерфейса пользователя