Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы ПВС(47).doc
Скачиваний:
6
Добавлен:
15.04.2019
Размер:
276.48 Кб
Скачать

16) Стиль класса окна

Стиль класса окна определяется при регистрации класса окна. Во всех предыдущих примерах приложений мы не задавали стиль окна, определяя содержимое соответствующего поля в структуре 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. Если этот стиль не будет задан, как бы быстро вы ни щелкали мышью, функция окна получит только идущие парами сообщения о том, что вы нажимаете и отпускаете левую или правую клавишу мыши.

Остальные приведенные выше классы окна используются реже. Мы будем рассказывать о них по мере необходимости.

Стиль окна

Определенный в классе окна стиль класса окна используется при создании на базе этого класса всех окон. Для дальнейшего уточнения внешнего вида и поведения окна используется другая характеристика - стиль окна. Стиль окна указывается при создании окна функцией CreateWindow. В наших примерах основное окно приложения не имело стиля класса окна, но для него был определен стиль окна WS_OVERLAPPEDWINDOW

Для определения стиля окна используются символические константы с префиксом WS_, определенные в файле windows.h. С помощью этих констант можно определить примерно два десятка стилей окна, однако чаще всего используются несколько основных стилей.

Стили окон:

WS_BORDER -Окно с рамкой;

WS_CAPTION -Окно с заголовком. Этот стиль несовместим со стилем WS_DLGFRAME. При использовании стиля WS_CAPTION подразумевается использование стиля WS_BORDER

WS_CHILD -Дочернее окно. Несовместим со стилем WS_POPUP;

WS_DISABLED -Вновь созданное окно сразу становится заблокированным (не получает сообщения от мыши и клавиатуры);

WS_DLGFRAME -Окно с двойной рамкой без заголовка. Несовместим со стилем WS_CAPTION;

WS_HSCROLL В окне создается горизонтальная полоса просмотра;

WS_MAXIMIZE Создается окно максимально возможного размера;

WS_SYSMENU Окно должно иметь системное меню;

17) wcn.style - в этом поле определяется стиль окна. Установленные флаги CS_HREDRAW и CS_VREDRAW означают,

что всякий раз при изменении ширины или высоты окна будет производиться полная перерисовка рабочей области

окна. Если для класса заданы стили CS_HREDRAW и CS_VREDRAW, при изменении размеров окна функция окна может получить сообщение WM_PAINT. В этом случае функция окна должна перерисовать часть окна или все окно. Разумеется, если вы просто уменьшили размер окна, перерисовывать ничего не надо, и функция окна в этом случае не получит сообщения WM_PAINT.

Стиль CS_DBLCLKS используется при необходимости отслеживать двойные щелчки мышью. При этом в функцию окна посылаются сообщения WM_LBUTTONDBLCLK и WM_RBUTTONDBLCLK. Если этот стиль не будет задан, как бы быстро вы ни щелкали мышью, функция окна получит только идущие парами сообщения о том, что вы нажимаете и отпускаете левую или правую клавишу мыши.