Поделиться через


Стили кнопок

Задает сочетание стилей кнопок. При создании кнопки с помощью класса BUTTON с функцией CreateWindow или CreateWindowEx можно указать любой из перечисленных ниже стилей кнопок.

Пример

HRESULT Button::CreateText(HWND hParent, const TCHAR *szCaption, int nID, 
                               const Rect& rcBound)
{
    CREATESTRUCT create;
	ZeroMemory(&create, sizeof(CREATESTRUCT));

    create.x = rcBound.left;
    create.y = rcBound.top;
    create.cx = rcBound.right - create.x;
    create.cy = rcBound.bottom - create.y;

    create.hwndParent = hParent;
    create.lpszName = szCaption;
    create.hMenu = (HMENU)(INT_PTR)nID;
    create.lpszClass = TEXT("BUTTON");
    create.style = BS_PUSHBUTTON | BS_FLAT;
    return Control::Create(create);
}

Пример из классических примеров Windows на сайте GitHub.

Константы

Константа Описание
BS_3STATE
Создает кнопку, аналогичную проверка, за исключением того, что поле может быть серым, а также флажок или снят. Используйте неактивное состояние, чтобы показать, что состояние поля проверка не определено.
BS_AUTO3STATE
Создает кнопку, которая совпадает с полем проверка с тремя состояниями, за исключением того, что поле изменяет свое состояние, когда пользователь нажимает его. Состояние циклически проверяется, не определено и очищается.
BS_AUTOCHECKBOX
Создает кнопку, аналогичную проверка, за исключением того, что состояние проверка автоматически переключается между флажками и снято каждый раз, когда пользователь выбирает проверка.
BS_AUTORADIOBUTTON
Создает кнопку, аналогичную переключателю, за исключением того, что, когда пользователь выбирает ее, система автоматически устанавливает состояние проверка кнопки в значение "Проверено" и автоматически устанавливает состояние проверка для всех остальных кнопок в той же группе в качестве очищенного.
BS_BITMAP
Указывает, что кнопка отображает растровое изображение. Сведения о взаимодействии с BS_ICON см. в разделе Примечания.
BS_BOTTOM
Помещает текст в нижнюю часть прямоугольника кнопки.
BS_CENTER
Центр текста по горизонтали в прямоугольнике кнопки.
BS_CHECKBOX
Создает небольшое пустое поле проверка с текстом. По умолчанию текст отображается справа от поля проверка. Чтобы отобразить текст слева от поля проверка, объедините этот флаг с BS_LEFTTEXT стилем (или с эквивалентным BS_RIGHTBUTTON стилем).
BS_COMMANDLINK
Создает кнопку командной ссылки, которая ведет себя как кнопка BS_PUSHBUTTON стиле, но кнопка командной ссылки имеет зеленую стрелку слева, указывающую на текст кнопки. Можно задать подпись для текста кнопки, отправив BCM_SETNOTE сообщение на кнопку.
BS_DEFCOMMANDLINK
Создает кнопку командной ссылки, которая ведет себя как кнопка стиля BS_PUSHBUTTON. Если кнопка находится в диалоговом окне, пользователь может выбрать кнопку командной ссылки, нажав клавишу ВВОД, даже если кнопка командной ссылки не имеет фокуса ввода. Этот стиль полезен для быстрого выбора наиболее вероятного варианта (по умолчанию).
BS_DEFPUSHBUTTON
Создает кнопку, которая ведет себя как кнопка стиля BS_PUSHBUTTON, но имеет отличный внешний вид. Если кнопка находится в диалоговом окне, пользователь может выбрать ее, нажав клавишу ВВОД, даже если кнопка не имеет фокуса ввода. Этот стиль полезен для быстрого выбора наиболее вероятного варианта (по умолчанию).
BS_DEFSPLITBUTTON
Создает разделенную кнопку, которая ведет себя как кнопка стиля BS_PUSHBUTTON, но также имеет отличительный внешний вид. Если кнопка разбиения находится в диалоговом окне, пользователь может выбрать ее, нажав клавишу ВВОД, даже если кнопка разбиения не имеет фокуса ввода. Этот стиль полезен для быстрого выбора наиболее вероятного варианта (по умолчанию).
BS_GROUPBOX
Создает прямоугольник, в котором можно сгруппировать другие элементы управления. Любой текст, связанный с этим стилем, отображается в левом верхнем углу прямоугольника.
BS_ICON
Указывает, что кнопка отображает значок. Сведения о взаимодействии с BS_BITMAP см. в разделе Примечания.
BS_FLAT
Указывает, что кнопка является двумерной; для создания трехмерного образа не используется заливка по умолчанию.
BS_LEFT
Текст в прямоугольнике кнопки оправдывается слева. Однако если кнопка является проверка полем или переключателем, не имеющим стиля BS_RIGHTBUTTON, текст будет слева оправдан справа от проверка поля или переключателя.
BS_LEFTTEXT
Помещает текст в левую часть переключателя или проверка поля в сочетании с переключателем или проверка стилем поля. То же, что и стиль BS_RIGHTBUTTON.
BS_MULTILINE
Заключает текст кнопки в несколько строк, если строка текста слишком длинна, чтобы поместиться в одну строку в прямоугольнике кнопки.
BS_NOTIFY
Включает кнопку для отправки BN_KILLFOCUS и BN_SETFOCUS кодов уведомлений в родительское окно.
Обратите внимание, что кнопки отправляют код уведомления BN_CLICKED независимо от того, имеет ли он этот стиль. Чтобы получить BN_DBLCLK коды уведомлений, кнопка должна иметь стиль BS_RADIOBUTTON или BS_OWNERDRAW.
BS_OWNERDRAW
Создает кнопку, нарисованную владельцем. Окно владельца получает WM_DRAWITEM сообщение при изменении визуального аспекта кнопки. Не сочетайте стиль BS_OWNERDRAW с другими стилями кнопок.
BS_PUSHBUTTON
Создает кнопку, которая отправляет WM_COMMAND сообщение в окно владельца, когда пользователь нажимает кнопку.
BS_PUSHLIKE
Делает кнопку (например, поле проверка, поле с тремя состояниями проверка или переключатель) и действует как кнопка нажатия. Кнопка выглядит поднятой, когда она не нажимается или не проверяется, и затонула при нажатии или проверке.
BS_RADIOBUTTON
Создает небольшой кружок с текстом. По умолчанию текст отображается справа от круга. Чтобы отобразить текст слева от круга, объедините этот флаг с BS_LEFTTEXT стилем (или с эквивалентным BS_RIGHTBUTTON стилем). Используйте переключатели для групп связанных, но взаимоисключающих вариантов.
BS_RIGHT
Правое выравнивание текста в прямоугольнике кнопки. Однако если кнопка является проверка полем или переключателем, не имеющим BS_RIGHTBUTTON стиля, текст будет выложен справа от проверка поля или переключателя.
BS_RIGHTBUTTON
Размещает круг переключателя или квадрат проверка прямоугольника в правой части прямоугольника кнопки. То же, что и стиль BS_LEFTTEXT.
BS_SPLITBUTTON
Создает кнопку разделения. У кнопки разделения есть стрелка раскрывающегося списка.
BS_TEXT
Указывает, что кнопка отображает текст.
BS_TOP
Помещает текст в верхнюю часть прямоугольника кнопки.
BS_TYPEMASK
Не используйте этот стиль. Бит составного стиля, полученный в результате использования оператора OR в битах стиля BS_*. Его можно использовать для маскирования допустимых битов BS_* из заданной битовой маски. Обратите внимание, что этот параметр устарел и не включает все допустимые стили. Таким образом, не следует использовать этот стиль.
BS_USERBUTTON
Устарел, но обеспечивает совместимость с 16-разрядными версиями Windows. Вместо этого приложения должны использовать BS_OWNERDRAW.
BS_VCENTER
Помещает текст в середину (по вертикали) прямоугольника кнопки.

Комментарии

Иллюстрации основных стилей кнопки, таких как BS_CHECKBOX и BS_GROUPBOX, см. в разделе Типы кнопок.

Внешний вид текста, значка или обоих элементов управления кнопкой зависит от стилей BS_ICON и BS_BITMAP, а также от того, отправляется ли BM_SETIMAGE сообщение. Возможные результаты приведены ниже.

BS_ICON или BS_BITMAP? BM_SETIMAGE позвонили? Результат
Да Да Показывать только значок.
Нет Да Показать значок и текст.
Да Нет Показывать только текст.
Нет Нет Отображение только текста

Требования

Требование Значение
Заголовок
Winuser.h