СТИЛИ КНОПОК
Параметр 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) |