Операционная система Microsoft Windows 3.1 для программиста -том 1

Список стилей окна


Приведем полный список возможных стилей окна, определенных в виде символических констант в файле windows.h. Некоторые из приведенных здесь стилей будут подробно рассмотрены в соответствующих главах этого тома или в следующих томах "Библиотеки системного программиста".



Имя константы Описание стиля
WS_BORDER Окно с рамкой
WS_CAPTION Окно с заголовком. Этот стиль несовместим со стилем WS_DLGFRAME. При использовании стиля WS_CAPTION подразумевается использование стиля WS_BORDER
WS_CHILD Дочернее окно. Несовместим со стилем WS_POPUP
WS_CHILDWINDOW То же самое, что и WS_CHILD
WS_CLIPCHILDREN Этот стиль используется при создании родительского окна. При его использовании родительское окно не перерисовывает свои внутренние области, занятые дочерними окнами
WS_CLIPSIBLINGS При указании этого стиля дочерние окна не перерисовывают свои области, перекрытые "братьями", то есть другими дочерними окнами, имеющими тех же родителей
WS_DISABLED Вновь созданное окно сразу становится заблокированным (не получает сообщения от мыши и клавиатуры)
WS_DLGFRAME Окно с двойной рамкой без заголовка. Несовместим со стилем WS_CAPTION
WS_GROUP Определяет первый орган управления в группе органов управления. Используется только в диалоговых панелях
WS_HSCROLL В окне создается горизонтальная полоса просмотра
WS_ICONIC То же самое, что и WS_MINIMIZE
WS_MAXIMIZE Создается окно максимально возможного размера
WS_MAXIMIZEBOX Окно содержит кнопку для увеличения его размера до максимально возможного. Этот стиль необходимо использовать вместе со стилями WS_OVERLAPPED или WS_CAPTION, в противном случае указанная кнопка не появится
WS_MINIMIZE Создается окно, уменьшенное до предела (свернутое в пиктограмму). Этот стиль необходимо использовать вместе со стилем WS_OVERLAPPED
WS_MINIMIZEBOX Окно содержит кнопку для сворачивания окна в пиктограмму (минимизации размеров окна). Этот стиль необходимо использовать вместе со стилем WS_OVERLAPPED или WS_CAPTION, в противном случае указанная кнопка не появится
WS_OVERLAPPED Создается перекрывающееся окно, имеющее заголовок и рамку
WS_OVERLAPPEDWINDOW Создается перекрывающееся окно, имеющее заголовок, рамку для изменения размера окна, системное меню, кнопки для изменения размеров окна. Этот стиль является комбинацией стилей WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX
WS_POPUP Создается временное (pop-up) окно
WS_POPUPWINDOW Комбинация стилей WS_POPUP, WS_BORDER и WS_SYSMENU. Для того чтобы сделать системное меню доступным, необходимо дополнительно использовать стиль WS_CAPTION
WS_SYSMENU Окно должно иметь системное меню
WS_TABSTOP Этот стиль указывает орган управления, на который можно переключиться при помощи клавиши <Tab>. Данный стиль может быть использован только дочерними окнами в диалоговых панелях
WS_THICKFRAME Окно должно иметь толстую рамку для изменения размера окна
WS_VISIBLE Создается окно, которое сразу становится видимым. По умолчанию окна создаются невидимыми, и для их отображения требуется вызывать функцию ShowWindow
WS_VSCROLL В окне создается вертикальная полоса просмотра
WS_TILED Устаревший стиль, аналогичен WS_OVERLAPPED
WS_SIZEBOX Устаревший стиль, аналогичен WS_THICKFRAME
WS_TILEDWINDOW Устаревший стиль, аналогичен WS_OVERLAPPEDWINDOW
MDIS_ALLCHILDSTYLES Этот стиль используется при создании дочерних MDI-окон и определяет окна, которые могут иметь любые комбинации стилей. По умолчанию дочерние MDI-окна имеют стили WS_MINIMIZE, WS_MAXIMIZE, WS_VSCROLL, WS_HSCROLL
<
Приведенные выше стили не всегда совместимы друг с другом. Например, перекрывающееся окно не может быть одновременно еще и временным. Пользуясь приведенной ниже таблицей, вы сможете определить совместимость стилей. В этой таблице символом "+" отмечены стили, которые можно использовать для создания перекрывающихся, временных и дочерних окон.

Имя константы Перекрывающееся окно Временное окно Дочернее окно
WS_BORDER + + +
WS_CAPTION + + +
WS_CHILD   +
WS_CHILDWINDOW     +
WS_CLIPCHILDREN + + +
WS_CLIPSIBLINGS     +
WS_DISABLED + + +
WS_DLGFRAME + + +
WS_GROUP     +
WS_HSCROLL + + +
WS_ICONIC +    
WS_MAXIMIZE +    
WS_MAXIMIZEBOX + + +
WS_MINIMIZE +    
WS_MINIMIZEBOX + + +
WS_OVERLAPPED +    
WS_OVERLAPPEDWINDOW +    
WS_POPUP   +  
WS_POPUPWINDOW   +  
WS_SYSMENU + + +
WS_TABSTOP     +
WS_THICKFRAME + + +
WS_VISIBLE + +  
WS_VSCROLL + + +
WS_TILED +    
WS_SIZEBOX + + +
WS_TILEDWINDOW +    
MDIS_ALLCHILDSTYLES      
В дополнение к перечисленным выше стилям, используемым при создании окон функцией CreateWindow, существуют так называемые расширенные стили окна (extended window styles). Окна с расширенными стилями должны создаваться функцией CreateWindowEx. Эта функция имеет следующий прототип:

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

Функции CreateWindowEx в качестве первого параметра (dwExStyle) необходимо указать расширенный стиль окна. Остальные параметры в точности соответствуют параметрам функции CreateWindow.

Приведем список расширенных стилей окна.

Имя константы Описание стиля
WS_EX_ACCEPTFILES Окно способно принимать файлы, перенесенные с использованием технологии drag-drop
WS_EX_DLGMODALFRAME Окно имеет двойную рамку и дополнительно может иметь стиль WS_CAPTION
WS_EX_NOPARENTNOTIFY Дочернее окно с этим стилем не будет посылать родительскому окну сообщение WM_PARENTNOTIFY. Обычно, когда дочернее окно создается или уничтожается или когда вы щелкаете мышью над дочерним окном, это сообщение посылается родительскому окну
WS_EX_TOPMOST Окно будет видно всегда, даже когда оно заблокировано
WS_EX_TRANSPARENT Этот стиль позволяет создать прозрачное окно. Оно получает сообщение WM_PAINT только после того, как все окна-братья получили сообщение WM_PAINT и обновили свои окна
<


Приведем таблицу совместимости расширенных стилей с перекрывающимися, временными и дочерними окнами.

Имя константы Перекрывающееся окно Временное окно Дочернее окно
WS_EX_ACCEPTFILES + + +
WS_EX_DLGMODALFRAME + + +
WS_EX_NOPARENTNOTIFY     +
WS_EX_TOPMOST + +  
WS_EX_TRANSPARENT + + +

Содержание раздела