Windows дает возможность приложению скрывать или показывать различные функциональные свойства своего интерфейса пользователя (UI). Эти настройки известны как состояние UI. Состояние UI включает в себя нижеследующие настройки:
Окно может отправлять в процедуру сообщения, чтобы запросить изменение в состоянии UI, может запросить состояние UI или реализовать некое состояние для его дочерних окон. Эти сообщения следуют ниже.
Сообщение | Описание |
---|---|
WM_CHANGEUISTATE | Указывает, что состояние UI должно измениться. |
WM_QUERYUISTATE | Извлекает данные о состоянии UI для окна. |
WM_UPDATEUISTATE | Изменяет состояние UI. |
По умолчанию, все дочерние окна верхнего уровня создаются с тем же самым состоянием UI, как и их родитель.
Система управляет состоянием UI для органов управления в диалоговых окнах. При создании блока диалога, система инициализирует состояние UI соответственно. Все дочерние органы управления наследуют это состояние. После того, как диалоговое окно создается, система осуществляет текущий контроль за нажатиями клавиш пользователем.
Если настройки состояния UI скрыты, а пользователь перемещается по органам управления при помощи использования клавиатуры, система модернизирует состояние UI. Например, если пользователь нажимает клавишу Tab, чтобы переместить фокус в следующий орган управления, система вызывает сообщение WM_CHANGEUISTATE, чтобы сделать индикаторы фокуса видимыми. Если пользователь нажимает клавишу Alt, система вызывает WM_CHANGEUISTATE, чтобы сделать ускорители клавиатуры видимыми.
Если орган управления поддерживает навигацию между элементами UI, которые он содержит, он может модернизировать свое собственное состояние UI. Орган управления может вызвать сообщение WM_QUERYUISTATE, чтобы извлечь данные и кэшировать начальное состояние UI. Всякий раз, когда орган управления получает сообщение WM_UPDATEUISTATE, он может модернизировать свой UI и отправить в процедуру своего родителя сообщение WM_CHANGEUISTATE. Каждое окно продолжает отправлять сообщение в процедуру своего родителя до тех пор, пока оно не достигнет окна верхнего уровня. Окно верхнего уровня отправляет в процедуру окна сообщение WM_UPDATEUISTATE в дереве окон. Если окно не передает сообщение WM_CHANGEUISTATE , то оно не достигнет окна верхнего уровня и состояние UI не будет обновлено.