Окт 16

Кнопки

Кнопка (Button), называемая иногда «нажимаемой кнопкой» (push button), представляет собой прямоугольник, внутри которого обычно располагается некоторый текст. Щелчок мышью на кнопке заставляет ее перерисовать себя, используя стиль 3D с тенью, чтобы выглядеть «нажатой». Отпускание кнопки мыши восстанавливает начальный облик нажимаемой кнопки, а родительскому окну посылается сообщение WM_COMMAND с кодом уведомления BN_CLICKED.
Windows заботится о надлежащем поведении и внешнем облике кнопок. Впрочем, то же самое можно сказать о флажках и переключателях, которые тоже являются особыми разновидностями кнопок. Если кнопка имеет фокус ввода, то текст обводится штриховой линией, а нажатие и отпускание клавиши пробела имеет тот же эффект, что и щелчок мышью. Так утверждается в справочных материалах MSDN. К сожалению, выделение текста штриховой линией для кнопки с фокусом ввода четко срабатывает только при использовании клавиатурного интерфейса, когда перевод фокуса ввода осуществляется при помощи клавиши Tab. Когда же приложение отслеживает положение курсора мыши самостоятельно и вызывает функцию SetFocus для перевода фокуса ввода на соответствующий элемент, то никакого выделения текста почему-то не происходит. В приложении DlgDemo2, рассматриваемом ниже, показан вариант решения этой проблемы с помощью вызова функции DrawFocusRect.
Кнопки Button используются в основном для немедленного выполнения действия, без сохранения какой-либо индикации положения кнопки «включено/выключено».
В приложении DlgDemol уже использовалась кнопка ОК, которая находилась в исходной форме диалога, предложенной редактором диалоговых окон. Но вы можете добавлять на форму диалога и другие кнопки, выполняющие те или иные функции пользовательского интерфейса.
Элемент управления «кнопка» размещается на форме диалога так же, как и другие элементы управления, — с помощью мыши, с предварительным выделением элемента Button на панели инструментов Controls. Затем надо вызвать окно свойств Push Button Properties и на вкладке General в текстовом поле ID задать идентификатор кнопки, а в поле Caption указать текст, который будет отображаться на кнопке.