Список стилей окна
Приведем полный список возможных стилей окна, определенных в виде символических констант в файле 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 |
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 | + | + | + |