Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-ТРПС.doc
Скачиваний:
13
Добавлен:
15.11.2018
Размер:
810.5 Кб
Скачать

8.2.8.1. Стили кнопок

При создании кнопок функцией CreateWindow() можно использовать следующие дополнительные стили:

BS_PUSHBUTTON

Обычная кнопка

BS_DEFPUSHBUTTON

Создается так называемая “кнопка по умолчанию”. Этот стиль применяется только для диалоговых панелей. Тогда при нажатии клавиши Enter родительскому окну (диалогу) посылается сообщение о нажатии кнопки, имеющей этот стиль. Только одна кнопка на диалоговой панели может иметь такой стиль.

BS_NOTIFY

Если кнопка имеет данный стиль, родительскому окну посылаются сообщения BN_DBLCLK, BN_KILLFOCUS и BN_SETFOCUS. Заметим, что основное “кнопочное” сообщение BN_CLICKED посылается вне зависимости от этого стиля.

BS_OWNERDRAW

Кнопка с расширенными возможностями отрисовки, когда графическое отображение элемента становится обязанностью приложения, а не Windows. Кнопка с этим стилем посылает родительскому окно сообщения WM_MEASUREITEM, при создании кнопки, и WM_DRAWITEM, всякий раз, когда требуется перерисовка. Этот стиль несовместим с другими стилями.

BS_MULTILINE

На поверхности кнопки отображается многострочная надпись, а не однострочная – как в большинстве случаев.

BS_CENTER BS_VCENTER

Центрирование текста надписи. Несовместимо со стилем BS_MULTILINE.

8.2.8.2. Сообщения от кнопок, получаемые родительским окном

Ниже указаны сообщения, которые кнопка посылает своему родительскому окну. Часть из них является самостоятельными Windows сообщениями, а другие приходят в составе сообщения WM_COMMAND. В последнем случае старшее слово параметра wParam соответствует указанному нотификационному значению:

BN_CLICKED (WM_COMMAND)

Кнопка нажата.

BN_DBLCLK (WM_COMMAND)

Двойной щелчок левой клавишей мыши на поверхности кнопки. Это сообщение генерируется только для кнопок, имеющих стиль BS_OWNERDRAW.

BN_SETFOCUS BN_KILLFOCUS, (WM_COMMAND)

Кнопка получает или теряет фокус ввода.

WM_CTLCOLORBTN

Посылается родительскому окну, когда кнопке требуется перерисовать свой фон. Родительское окно должно вернуть дескриптор кисти для закрашивания фона.

WM_DRAWITEM

Сообщение генерируется только для кнопок, имеющих стиль BS_OWNERDRAW. Уведомляет о том, что родительское окно должно выполнить графическое отображение кнопки. Параметры сообщения:

wParam - идентификатор кнопки

lParam - указатель на структуру DRAWITEMSTRUCT.

Описание полей структуры смотри в пункте 8.2.9.

8.2.8.3. Сообщения от родительского окна к кнопке

Родительское окно может изменить состояние кнопки, посылая ей сообщение BM_SETSTATE. Если параметр wParam установлен в значение TRUE, кнопка переводится с состояние “нажато”, если wParam равен FALSE, то в состояние “отжато”. Параметр lParam для данного сообщения не используется и должен быть равен нулю.