Операционная система Microsoft Windows 3.1 для программиста
© Александр Фролов, Григорий Фролов
Том 11, М.: Диалог-МИФИ, 1993, 269 стр.
Стиль класса окна определяется при регистрации
класса окна. Во всех предыдущих примерах
приложений мы не задавали стиль окна, определяя
содержимое соответствующего поля в структуре
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. Если этот стиль не будет задан, как бы
быстро вы ни щелкали мышью, функция окна получит
только идущие парами сообщения о том, что вы
нажимаете и отпускаете левую или правую клавишу
мыши.
Остальные приведенные выше классы окна
используются реже. Мы будем рассказывать о них по
мере необходимости.
|