Стиль класса окна
Стиль класса окна определяется при регистрации класса окна. Во всех предыдущих примерах приложений мы не задавали стиль окна, определяя содержимое соответствующего поля в структуре WNDCLASS следующим образом:
wc.style = 0;
Стиль класса окна задается в виде отдельных битов, для которых в файле windows.h определены символические константы с префиксом CS_:
Стиль | Описание |
CS_BYTEALIGNCLIENT | Внутренняя область окна (client area) должна быть выравнена по границе байта видеопамяти. Иногда используется для ускорения процесса вывода изображения |
CS_BYTEALIGNWINDOW | Все окно (не только внутренняя область окна) должно быть выравнено по границе байта видеопамяти |
CS_CLASSDC | Необходимо создать единый контекст отображения, который будет использоваться всеми окнами, создаваемыми на базе данного класса |
CS_DBLCLKS | Функция окна будет получать сообщения при двойном щелчке клавишей мыши (double click) |
CS_GLOBALCLASS | Данный класс является глобальным и доступным другим приложениям. Другие приложения могут создавать окна на базе этого класса |
CS_HREDRAW | Внутренняя область окна должна быть перерисована при изменении ширины окна |
CS_NOCLOSE | В системном меню окна необходимо запретить выбор функции закрытия окна (строка Close будет отображаться серым цветом, и ее нельзя выбрать) |
CS_OWNDC | Для каждого окна, определяемого на базе данного класса, будет создаваться отдельный контекст отображения |
CS_PARENTDC | Окно будет пользоваться родительским контекстом отображения, а не своим собственным. Родительский контекст - это контекст окна, создавшего другое окно (см. дальше) |
CS_SAVEBITS | Для данного окна Windows должна сохранять изображение в виде битового образа (bitmap). Если такое окно будет перекрыто другим окном, то после уничтожения перекрывшего окна изображение первого окна будет восстановлено Windows на основании сохраненного ранее образа |
CS_VREDRAW | Внутренняя область окна должна быть перерисована при изменении высоты окна |
Чаще всего используются стили CS_HREDRAW и CS_VREDRAW:
wc.style = CS_HREDRAW | CS_VREDRAW;
Если для класса заданы стили CS_HREDRAW и CS_VREDRAW, при изменении размеров окна функция окна может получить сообщение WM_PAINT. В этом случае функция окна должна перерисовать часть окна или все окно. Разумеется, если вы просто уменьшили размер окна, перерисовывать ничего не надо, и функция окна в этом случае не получит сообщения WM_PAINT.
Стиль CS_DBLCLKS используется при необходимости отслеживать двойные щелчки мышью. При этом в функцию окна посылаются сообщения WM_LBUTTONDBLCLK и WM_RBUTTONDBLCLK. Если этот стиль не будет задан, как бы быстро вы ни щелкали мышью, функция окна получит только идущие парами сообщения о том, что вы нажимаете и отпускаете левую или правую клавишу мыши.
Остальные приведенные выше классы окна используются реже. Мы будем рассказывать о них по мере необходимости.