Стили оконных классов

Стили классов определяют дополнительные элементы класса window. Два или более стилей можно объединить с помощью побитового оператора OR (|). Чтобы назначить стиль классу окна, назначьте стиль члену стиля структуры WNDCLASSEX .

Пример

    WNDCLASS wc = {};
    wc.lpfnWndProc = s_DropDownWndProc;
    wc.cbWndExtra = sizeof(CTipACDialog *);
    wc.hInstance = g_hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.style = CS_SAVEBITS | CS_DROPSHADOW;
    wc.lpszClassName = s_wzClassName;
    RegisterClass(&wc);

Пример из классических примеров Windows на сайте GitHub.

Константы

Ниже приведены стили класса окна.

Констант/значение Описание
CS_BYTEALIGNCLIENT
0x1000
Выравнивает клиентскую область окна по границе байтов (в направлении x). Этот стиль влияет на ширину окна и его горизонтальное размещение на дисплее.
CS_BYTEALIGNWINDOW
0x2000
Выравнивает окно по границе байтов (в направлении x). Этот стиль влияет на ширину окна и его горизонтальное размещение на дисплее.
CS_CLASSDC
0x0040
Выделяет один контекст устройства для совместного использования всеми окнами в классе . Так как классы окон зависят от процесса, несколько потоков приложения могут создать окно одного класса. Потоки также могут попытаться одновременно использовать контекст устройства. В этом случае система позволяет успешно завершить операцию рисования только одному потоку.
CS_DBLCLKS
0x0008
Отправляет сообщение двойного щелчка в процедуру окна, когда пользователь дважды щелкает мышью, когда курсор находится в окне, принадлежащем классу .
CS_DROPSHADOW
0x00020000
Включает эффект тени для окна. Эффект включается и отключается через SPI_SETDROPSHADOW. Как правило, это включено для небольших, кратковременных окон, таких как меню, чтобы подчеркнуть их связь по Z-заказу с другими окнами. Окна, созданные из класса с этим стилем, должны быть окнами верхнего уровня; они не могут быть дочерними окнами.
CS_GLOBALCLASS
0x4000
Указывает, что класс window является глобальным классом приложения. Дополнительные сведения см. в разделе "Глобальные классы приложения" статьи О классах окон.
CS_HREDRAW
0x0002
Перерисовывает все окно, если изменение размера или перемещение изменяет ширину клиентской области.
CS_NOCLOSE
0x0200
Отключает закрыть в меню окна.
CS_OWNDC
0x0020
Выделяет уникальный контекст устройства для каждого окна в классе .
CS_PARENTDC
0x0080
Задает прямоугольник обрезки дочернего окна в виде прямоугольника родительского окна, чтобы дочерний элемент можно было рисовать на родительском. Окно с битом стиля CS_PARENTDC получает обычный контекст устройства из системного кэша контекстов устройств. Он не предоставляет дочернему элементу контекст устройства или параметры контекста устройства родительского элемента. Указание CS_PARENTDC повышает производительность приложения.
CS_SAVEBITS
0x0800
Сохраняет в виде растрового изображения часть изображения экрана, скрытую окном этого класса. При удалении окна система использует сохраненное растровое изображение для восстановления изображения экрана, включая другие окна, которые были скрыты. Таким образом, система не отправляет WM_PAINT сообщения в окна, которые были скрыты, если память, используемая растровым изображением, не была удалена и если другие действия экрана не сделали сохраненное изображение недействительным.
Этот стиль полезен для небольших окон (например, меню или диалоговых окон), которые отображаются кратко, а затем удаляются перед выполнением других действий на экране. Этот стиль увеличивает время, необходимое для отображения окна, так как система сначала должна выделить память для хранения растрового изображения.
CS_VREDRAW
0x0001
Перерисовывает все окно, если изменение размера или перемещение изменяет высоту клиентской области.

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Winuser.h (включая Windows.h)