Переключатели
Переключатели похожи на флажки, но форма метки у них не квадратная, а круглая. Жирная точка внутри кружка показывает, что переключатель помечен. Переключатель имеет стиль окна BS_RADIOBUTTON, BS_AUTORADIOBUTTON, но последний используется только в окнах диалога. В окнах диалога группы переключателей, как правило, используются для идентификации нескольких взаимоисключающих опций. В отличие от флажков, его состояние не изменится. Взаимодействия переключателей с родительским окном аналогично флажкам.
Кнопки, определяемые пользователем.
Данный стиль кнопки применяется тогда, когда есть необходимость (или желание) управлять внешним обликом кнопки, а логику обработки клавиатуры и мыши можно оставить самой кнопке. Сообщения родительскому окну такие же, как и у всех кнопок, однако, при необходимости перерисовки кнопки, она посылает родительскому окну сообщение WM_DRAWITEM c указателем на структуру типа DRAWITEMSTRUCT, используемую при рисовании кнопки, в параметре lParam.
Класс статических дочерних окон
Статическое окно имеет предопределенный класс с именем "static". Данное окно не получает сообщений от мыши и клавиатуры: оно как бы прозрачно для сообщений и сообщения, адресованные статическому окну переправляются родительскому окну (расположенному под ним). Существует 12 стилей статического окна.
Три из них – (SS_LEFT, SS_RIGHT, SS_CENTER) позволяют выводить текст, заданный в поле текста окна соответственно с выравниванием влево, вправо, по центру. Фактически, окно выводит заданный текст с помощью функции DrawText. Текст окна может быть изменен при помощи функции SetWindowText.
Существует девять стилей, позволяющих рисовать прямоугольники и рамки – SS_BLACKRECT, SS_GRAYRECT, SS_WHITERECT – рисуют закрашенные прямоугольники, SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME –прямоугольные рамки без закрашивания, SS_ETCHEDHORZ, SS_ETCHEDVERT, SS_ETCHEDFRAME – рамки с тенью, состоящей из серого и белого цветов). Текст во всех этих случаях игнорируется.
Существуют еще два стиля статических окон: SS_ICON – стиль, позволяющий отображать в окне иконку и SS_USERITEM – для создания пунктов, выбираемых пользователем (например, пунктов меню) .
Класс полос прокрутки
Полосы прокрутки или полосы скроллинга могут быть автоматически добавлены к окну, если вы укажете в стиле окна идентификаторы горизонтальной WS_VSCROLL и вертикальной WS_HSCROLL полос прокрутки. Однако вы в любой момент можете создать свое дочернее окно прокрутки, используя предопределенный класс окна "scrollbar" и один из двух стилей для полос прокрутки: SBS_VERTS – для вертикальной и SBS_HORZ – для горизонтальной полос прокрутки. Пользователь сам определяет положение полосы скроллинга внутри родительского окна и его размеры через соответствующие параметры функции CreateWindow при создании или MoveWindow при дальнейшей работе.
Вы можете установить диапазон и положение полосы прокрутки при помощи функций:
SetScrollRange(hwndScroll, SB_CTL, iMin, iMax, bRedraw);
SetScrollPos(hwndScroll, SB_CTL, iPos, bRedraw);
где параметры iMin и iMax устанавливают соответственно минимальное (при котором отметка полосы прокрутки устанавливаются либо в крайнее верхнее для вертикальной полосы прокрутки, либо в крайнее левое положение – для горизонтальной) и максимальное значение, bRedraw устанавливается в TRUE если необходима перерисовка полосы скроллинга и в FALSE в обратном случае, iPos определяет текущее положение полосы скроллинга (и лежит в диапазоне от iMax до iMax). Следует отметить, что если вы используете полосы прокрутки, созданные с помощью стилей окна, то непосредственного описателя полосы прокрутки hwndScroll вы не имеете. Для их управления вы должны использовать описатель окна, которому принадлежат полосы прокрутки:
SetScrollRange(hwnd, SB_VERT, iMin, iMax, bRedraw);
SetScrollPos(hwndScroll, SB_HORZ, iPos, bRedraw);
при этом вы явно указываете к какой из двух полос прокрутки (вертикальной или горизонтальной) вы обращаетесь.
Все полосы прокрутки посылают сообщения родительскому окну при щелчке мыши или перетаскивании маркера полосы прокрутки. При этом в родительское окно приходит сообщение WM_VSCROLL или WS_HSCROLL. Для полос прокрутки окна параметр lParam равен 0, а для полос прокрутки, созданных на родительском окне, в этом параметре передается описатель полосы прокрутки, пославшей сообщение. Младшее слово параметра wParam определяет то действие, которое совершается с полосой прокрутки. Вот его некоторые значения: SB_LINEUP, SB_PAGEUP, SB_THUMBTRACK, SB_THUMBPOSITION, SB_PAGEDOWN, SB_PAGEDOWN, SB_LINEDOWN, SB_ENDSCROLL. Старшее слово параметра wParam указывает текущее положение полосы прокрутки.
