Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI-ekz_shpory.docx
Скачиваний:
13
Добавлен:
25.09.2019
Размер:
185 Кб
Скачать
  1. Окна, классы и типы окон.

Окна – основной объект в Windows. С точки зрения пользователя Windows окном является прямоугольная область экрана, в которой приложение может что-либо рисовать или писать, а также выполнять все операции взаимодействия с пользователем. Любое приложение Windows можно рассматривать как совокупность окон, внутри которых можно что-либо рисовать или писать. Для каждого окна в приложении определены данные и методы, предназначенные для работы с этими данными (в частности, для рисования в окне).

В ООП используется понятие наследования. Объекты могут наследовать методы других объектов. В Windows также предусмотрен такой механизм, реализуемый с использованием, так называемых, классов окна.

Для каждого класса окна определяется функция окна. При создании окна необходимо указать, к какому классу оно будет принадлежать и, соответственно, какую функцию окна будет использовать для обработки сообщений. Приложения могут создавать собственные классы окна, определяя свои функции окна (и, следовательно, свои методы), либо использовать стандартные, определенные в Windows, классы окна.

Любое создаваемое окно может наследовать свойства уже созданных ранее окон, добавляя свои или переопределяя уже имеющиеся в базовом классе методы. В этом и заключается механизм наследования Windows.

Классы окон имеют стили. Вот ряд из них:

  1. CS_DBLCLKS – функция окна будет получать сообщение по двойному щелчку мыши

  2. CS_GLOBALCLASS – класс является глобальным и доступен другим приложениям

  3. CS_HREDRAW И CS_VREDRAW – внутренняя часть окна будет перерисовываться при изменении ширины и высоты окна

  4. CS_NOCLOSE – в системном меню запрещена функция ция закрытия окна

  5. CS_CLASSDC – создается единый контекст отображения, который будет использоваться всеми окнами, создаваемыми на базе данного класса

  6. CS_OWNDC – для каждого окна, создаваемого на базе данного класса, будет создаваться отдельный контекст отображения.

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

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

Мы рассмотрим три основных стиля (типа) окон - перекрывающиеся окна (overlapped window), временные окна (pop-up window) и дочерние окна (child window) – несовместимы между собой.

Стили окна:

  1. Перекрывающиеся окна WS_OVERLAPPEDWINDOW – используются в качестве главного окна приложения, обязательно имеют заголовок, рамку, внутреннюю часть (клиентская область), рамку. Дополнительно могут иметь – системное меню, полосы прокрутки, кнопки свертки и т.д.

  2. Временные окна WS_POPUP – для вывода сообщений, остаются на экране непродолжительное время. Может иметь или не иметь заголовок, системное меню.

Окно (временное, перекрывающееся) может быть окном–владельцем (если оно сворачивается в пиктограмму, все окна, которыми оно владеет, становятся невидимыми, если уничтожить – уничтожаться и подчиненные, подчиненные окна располагаются всегда над поверхностью окна-владельца, загораживая его). Оба типа окна используют экранные координаты.

  1. Дочерние окна WS_CHILD – для создания органов управления, напр. кнопки, переключатели. Обычно не имеют рамок, заголовков и т.д. Всегда располагаются на поверхности окна-родителя, система координат – в верхнем левом углу окна-родителя. Только дочерние окна (9-й параметр CreateWindow), могут иметь родителей, перекрывающие и временные окна могут иметь окно-хозяина (8-й параметр CreateWindow).

Другие стили: WS_BORDER, WS_CAPTION, WS_HSCROLL, WS_MAXIMIZE, WS_VISIBLE, WS_MINIMIZE, WS_VSCROLL и другие.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]