Ситуации вызова обработчиков обновления
Предположим, что пользователь щелкает мышью в меню "Файл", которое создает сообщение WM_INITMENUPOPUP. Механизм обновления платформы и обновление всех элементов в меню " Файл перед отображением меню удаляет вниз, чтобы пользователь может видеть его.
Для этого маршруты платформы обновляет команды для всех пунктов меню в стандартной маршрутизации во всплывающем меню команд. Конечные объекты команд в маршрутизации имеют возможность обновления всех пунктов меню, соответствующие команды обновления соответствующей записью сопоставления сообщений (формы ON_UPDATE_COMMAND_UI) и вызова функции «обработчика обновления». Таким образом, для меню с 6 6, пунктами меню команд обновления отсылаются. Если обработчик обновления существует для идентификатора команды пункта меню, ему вызывают для обновления. Если платформа не проверяет наличие обработчика события, идентификатор команды и включить или отключить пункт меню соответственно.
Если среда не находит записи ON_UPDATE_COMMAND_UI во время маршрутизации команд, она автоматически включает объект пользовательского интерфейса, если запись ON_COMMAND где-то с таким же идентификатором команды В противном случае он отключает объект пользовательского интерфейса. Таким образом, чтобы гарантировать, что объект пользовательского интерфейса включен, укажите обработчик для команды создает объект или предоставьте обработчик обновления для него. См. пример в разделе Объекты пользовательского интерфейса и идентификаторы команд.
Можно отключить отключения по умолчанию объектов пользовательского интерфейса. Дополнительные сведения см. в разделе m_bAutoMenuEnable в член класса CFrameWnd в справочнике по MFC.
Автоматическая инициализация меню, выполненных в платформе, когда приложение получает сообщение WM_INITMENUPOPUP. Во время циклом бездействия, среда выполнения маршрутизация команд для обработчиков обновления кнопки точно так же, как и создается для меню.
См. также
Основные понятия
Практическое руководство. Обновление объектов интерфейса пользователя