СТИЛИ КНОПОК

Параметр hwndParent определяет идентификатор родительского окна, на поверхности которого создается кнопка.

Создание кнопки

Для создания кнопки необходимо вызвать функцию CreateWindow.

Прототип функции CreateWindow раз:

 

HWND CreateWindow(LPCSTR lpszClassName, LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, HMENU hmenu, HINSTANCE hinst, void FAR* lpvParam);

 

Параметр функции lpszClassName - указатель на строку, содержащую имя класса, на базе которого создается окно. Для создания кнопки необходимо указать имя класса "button".

Параметр функции lpszWindowName - указатель на строку, содержащую заголовок окна (Title Bar). Эта строка будет написана на кнопке.

Параметр dwStyle - стиль создаваемого окна. Этот параметр задается как логическая комбинация отдельных битов. Для кнопки следует задать стиль как комбинацию констант WS_CHILD, WS_VISIBLE и константы, определяющей один из возможных стилей кнопки (BS_).

Парамеры x и y функции CreateWindow определяют горизонтальную (x) и вертикальную (y) координату кнопки относительно верхнего левого угла родительского окна.

Параметр hmenu - идентификатор меню или идентификатор порожденного (child) окна. Для каждого создаваемого дочернего окна необходимо определить собственный идентификатор.


Для создания кнопки с надписью "Help" в точке с координатами (10, 30) и размерами (40, 20) можно использовать, например, такой вызов функции CreateWindow:

 

hHelpButton = CreateWindow(_T("button"), _T("Help"), WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,

10, 30,

40, 20,

hWnd,

(HMENU)IDB_Help,

hInstance, NULL);

Флаг Значение Эффект
BS_PUSHBUTTON 0x00000000 Создается обычная кнопка
BS_DEFPUSHBUTTON 0x00000001 Создается обычная кнопка, которая срабатывает при нажатии "Enter" даже тогда, когда не выбрана
BS_CHECKBOX 0x00000002 Создается CheckBox, при нажатии состояние автоматически не изменяется, забота об этом ложится на программу
BS_AUTOCHECKBOX 0x00000003 Создается CheckBox, который автоматически меняет свое состояние при нажатии
BS_RADIOBUTTON 0x00000004 Создается Radio Button, автоматически состояние не меняется
BS_3STATE 0x00000005 То же, что и BS_CHECKBOX, но имеет три состояния - включенное, отключенное и неопределенное, автоматически состояние не меняет
BS_AUTO3STATE 0x00000006 То же, что и предыдущее, но состояние меняется автоматически
BS_GROUPBOX 0x00000007 Группа
BS_USERBUTTON 0x00000008 Устаревший стиль, необходимо использовать BS_OWNERDRAW
BS_AUTORADIOBUTTON 0x00000009 То же, что и RadioButton, но при нажатии состояние меняется автоматически
BS_OWNERDRAW 0x0000000B За прорисовку кнопки отвечает программа, а не система
BS_LEFTTEXT 0x00000020 Текст помещается слева от RadioButton'а или CheckBox'а, то же, что и BS_RIGHTBUTTON
BS_TEXT 0x00000000 Внутри или рядом с кнопкой отображается текст
BS_ICON 0x00000040 Внутри кнопки или рядом с кнопкой отображается иконка
BS_BITMAP 0x00000080 Внутри кнопки или рядом с кнопкой отображается bitmap
BS_LEFT 0x00000100 Размещает текст у левого края прямоугольника, выделенного для размещения кнопки
BS_RIGHT 0x00000200 Размещает текст у правого края прямоугольника, выделенного для размещения кнопки
BS_CENTER 0x00000300 Размещает текст по горизонтали в центре прямоугольника, выделенного для размещения кнопки
BS_TOP 0x00000400 Размещает текст у верхнего края прямоугольника, выделенного для размещения кнопки
BS_BOTTOM 0x00000800 Размещает текст у нижнего края прямоугольника, выделенного для размещения кнопки
BS_VCENTER 0x00000C00 Размещает текст по вертикали в центре прямоугольника, выделенного для размещения кнопки
BS_PUSHLIKE 0x00001000 Делает CheckBox или RadioButton внешне похожими на PushButton
BS_MULTILINE 0x00002000 При необходимости текст разбивается на несколько строк
BS_NOTIFY 0x00003000 Разрешает посылку родительскому окну нотификационных сообщений BN_DBLCLK, BN_KILLFOCUS и BN_SETFOCUS
BS_FLAT 0x00008000 Не добавляется имитация трехмерности изображения элемента управления
BS_RIGHTBUTTON 0x00000020 RadioButton или CheckBox размещаются справа от надписи (то же, что и BS_LEFTTEXT)