Состояния элемента управления Button
В этом разделе описывается изменение состояния кнопки и реагирование приложения.
Раздел состоит из следующих разделов:
Выбор кнопки
Пользователь может выбрать кнопку тремя способами: щелкнув ее мышью, наведя на нее вкладку, а затем нажав клавишу ВВОД, или (если кнопка является частью группы, определенной в стиле WS_GROUP ), вкладыв на выбранную кнопку в группе и используя клавиши со стрелками для перемещения внутри этой группы. Два метода табуляции являются частью предопределенного интерфейса клавиатуры, предоставляемого системой. Полное описание этого интерфейса см . в диалоговом окне.
При выборе кнопки обычно возникают следующие события:
- Система дает кнопку фокуса клавиатуры.
- Кнопка отправляет родительское окно сообщение, чтобы уведомить его о выборе.
- Родительское окно (или система) отправляет кнопку, чтобы изменить его состояние.
- Родительское окно (или система) переопределяет кнопку, чтобы отразить новое состояние.
Элементы состояния кнопки
Состояние кнопки может быть охарактеризовано его состоянием фокуса, состоянием принудительной отправки и состоянием проверка.
Состояние фокуса
Состояние фокуса применяется к проверка поле, переключателю, кнопке нажатия или нарисованной владельцем кнопке. Кнопка получает фокус клавиатуры, когда пользователь выбирает его и теряет фокус, когда пользователь выбирает другой элемент управления. Одновременно с фокусом клавиатуры может быть только один элемент управления.
Если кнопка имеет фокус клавиатуры, система обычно выделяет текст, значок или растровое изображение кнопки, окружая ее точкой. Кроме того, кнопка нажатия имеет тяжелую темную границу, когда она имеет фокус. Система автоматически изменяет выделение для автоматической кнопки, но приложение должно изменить выделение для неавтомационной кнопки, отправив сообщения.
Состояние push-отправки
Состояние принудительной передачи применяется к кнопке нажатия, проверка поля, переключателя или трех состояний проверка поля, но не применяется к другим кнопкам. Состояние нажатия кнопки может быть отправлено или не отправлено. При нажатии кнопки (или любой кнопки с стилем BS_PUSHLIKE ) кнопка нарисована как отложенная кнопка. Если он не нажимается, он рисуется как кнопка с поднятым. При нажатии поля проверка, переключателя или трех состояний проверка фон кнопки будет серым. Если он не нажимается, фон кнопки не серый.
Проверка состояния
Состояние проверка применяется к поле проверка, переключателю или три состояния проверка, но не применяется к другим кнопкам. Состояние можно проверка, очистить или (для трех состояний проверка коробки) неопределенно. Поле проверка проверка, если оно содержит метку проверка и очищается, когда она не выполняется. Переключатель проверка, если он содержит черную точку; она очищается, когда она не выполняется. Поле с тремя состояниями проверка проверка, если оно содержит метку проверка, очищается, когда она не выполняется, и определяется, когда она содержит серый прямоугольник. Система автоматически изменяет состояние проверка автоматической кнопки, но приложение должно изменить состояние проверка неавтомационной кнопки.
Изменения состояния кнопки
Когда пользователь выбирает кнопку, обычно необходимо изменить один или несколько элементов состояния кнопки. Система автоматически изменяет состояние фокуса для всех типов кнопок, состояние push-уведомлений для кнопок или кнопок со стилем BS_PUSHLIKE и состоянием проверка для всех автоматических кнопок. Приложение должно вносить все другие изменения состояния, учитывая тип, стиль и текущее состояние кнопки. В следующем списке показаны элементы состояния, которые необходимо изменить для каждого типа кнопки:
- Поле проверка должно изменить состояние проверка.
- Переключатель должен изменить состояние проверка. Кроме того, может потребоваться изменить состояние проверка других переключателей в той же группе, чтобы обеспечить взаимоисключающий характер переключателей.
- Так как состояние нарисованной кнопки владельца зависит от приложения, то, что приложение должно измениться в кнопке, может отличаться. Элементы поля группы не должны быть изменены, так как пользователи не могут выбирать поля группы.
Приложение может определить состояние кнопки, отправив ему сообщение BM_GETCHECK или BM_GETSTATE; приложение может задать состояние кнопки, отправив ему BM_SETCHECK или BM_SETSTATE сообщение.