Флаг WS_POPUP. Этот тип окон чаще всего используется для отображения окон диалога. Отличаются они тем, что, если имеют родительское окно, всегда отображаются поверх всех окон на экране, выскакивают как поплавки наверх даже тогда, когда пользователь делает активным другое окно.
Из трех основных типов (классов) окон программист может создать множество самых разнообразных объектов.
Тип окна задается 32-битовым беззнаковым целым числом, которое указывается третьим параметром вызова функции CreateWindow. Этот параметр интерпретируется как комбинация битовых флагов, определяющих тип окна и некоторые его свойства. Допустимые флаги типов окна определены в файле windows.h; при создании окна их можно комбинировать битовой операцией «ИЛИ» («|»).
WS_MAXIMIZEBOX кнопка максимизации окна
WS_MINIMIZEBOX кнопка минимизации окна
WS_THICKFRAME наличие рамки
WS_HSCROLL горизонтальная линейка прокрутки
WS_VSCROLL вертикальная линейка прокрутки
WS_DLGFRAME
WS_BORDER наличие границы
WS_CAPTION наличие заголовка окна
WS_MAXIMIZE
WS_CLIPCHILDREN
WS_CLIPSIBLINGS
WS_DISABLED активность окна
WS_VISIBLE видимость окна
WS_MINIMIZE
WS_OVERLAPPED перекрывающиеся окно
WS_CHILD дочернее окно
WS_POPUP вспомогательное окно
Рис.9. Идентификаторы стилей окон Windows.
Все основные типы окон могут оформляться основными стандартными элементами.
Комбинируя флаги, можно модифицировать внешний вид и некоторые свойства окон.
WS_MAXIMIZEBOX (WS_TABSTOP)
Создаваемое перекрывающееся окно имеет кнопку максимизации.
Если окно является дочерним органом управления (child window controls) внутри окна диалога, то этот флаг используется под другим именем - WS_TEBTOP; при работе с окном диалога по нажатию клавиши табуляции курсор перемещается к ближайшему окну (органу управления), у которого установлен флаг WS_TABSTOP.
WS_MINIMIZEBOX (WS_GROUP)
Создаваемое окно является дочерним органом управления (child window controls) внутри окна диалога, то этот флаг используется под другим именем- WS_GROUP. Орган управления, помеченный этим флагом, определяет начало группы органов управления, по которой можно перемещаться клавишами перемещения курсора. Группа оканчивается там, где начинается следующая группа.
WS_THICKFRAME
Создаваемое окно имеет рамку существенно заметной толщины; эта рамка является более чем украшением, потому что вы можете изменять размер только того окна , у которого этот флаг указан.
WS_SYSMENU
Окно имеет системное меню.
WS_HSCROLL
Окно имеет горизонтальную полосу просмотра.
WS_VSCROLL
Окно имеет вертикальную полосу просмотра.
WS_DLGFRAME
Окно имеет тонкую рамку без заголовка.
WS_BORDER
Окно имеет широкую рамку без заголовка. Этот флаг используют при создании диалоговых окон.
WS_CAPTION
Окно имеет рамку и заголовок. Так как окно будет иметь заголовок, то пользователь сможет перемещать его по экрану при помощи мыши. Флаг, как правило, используется для перекрывающихся окон.
WS_MAXIMIZE
Создаваемое окно будет отображено в максимально возможном для него размере.
WS_CLIPCHILDREN
Исключение областей, занимаемых дочерними окнами при изменении рабочей области родительского окна. Используется только для родительских окон.
WS_CLIPSIBLINGS
Исключение областей, занимаемых другими дочерними окнами из изменяемой области дочернего окна. Другими словами, если дочерние окна перекрываются, а флаг WS_CLIPSIBLINGS не указан, то при изменении рабочей области одного из окон могут быть испорчены рабочие области других дочерних окон. Этот флаг используется только с флагом WS_CHILD.
WS_DISABLED
Создается неактивное окно.
WS_VISIBLE
Окно становится видимым сразу после создания. Этот флаг используется для диалоговых окон.
WS_MINIMIZE
Создаваемое окно будет отображено в виде пиктограммы.
Наиболее часто используемые определения типов окон - WS_OVERLAPPEDWINDOW, WS_POPUPWINDOW и WS_CHILDWINDOW; эти стандартные комбинации флагов определены в файле windows.h:
# define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | \
WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | \ WS_MAXIMIZEBOX)
# define WS_POPUPWINDOW (WS_POPUP | WS_ BORDER | WS_SYSMENU)
# define WS_CHILDWINDOW (WS_CHILD)