- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция.
- •Файл определения модуля.
- •Структура windows – программы.
- •Структура программы в Windows:
- •Сообщения. Источники сообщений
- •Формирование сообщений, примеры. Очереди.
- •Сообщения. Цикл сообщений, основные компоненты.
- •Сообщения. Структура сообщений на примере wm_command
- •Средства обработки сообщений в приложении и windows.
- •Структура msg. Обработка сообщений.
- •Окна, классы и типы окон.
- •Регистрация класса окна, основные элементы класса.
- •Int cbClsExtra; // 3. Доп. Память для окон, созд-мых на базе данного класса
- •Int cbWndExtra; // 4. Доп. Память для создания окна (3, 4 – в байтах)
- •Линейки прокрутки, переключатели, окна пометки, окна списка.
- •1. Кнопки, переключатели (переключатели – кнопки с 3-мя состояниями (вкл, выкл и неактивен)
- •2. Полосы прокрутки.
- •3. Окна списка
- •Комбинированные списки, окна редактирования и статические текстовые объекты.
- •1. Комбинированные списки
- •2. Окна редактирования
- •3. Статический орган управления (статический текстовый объект)
- •Способы создания меню
- •Создание меню в файле ресурсов
- •С помощью функций в теле программы
- •Создание меню редактором ресурсов
- •Определение диалоговой панели, взаимодействие пользователя с панелью.
- •1. Создание шаблона.
- •2. Создание функции диалога.
- •3. Вызов одной из функций создания диалога
- •Диалоговые панели, модальные панели.
- •Немодальные панели. Отличие циклов сообщений.
- •Ресурсы. Файл ресурсов, текстовый, бинарный. Создание.
- •Файл определения модуля. Назначение, основные директивы (относящиеся к коду и данным).
- •Графический приборный интерфейс gdi. Состав, назначение.
- •Контекст, содержание контекста.
- •Общий контекст, родительский, личный, для класса окна, физический.
- •1. Общий контекст отображения.
- •2. Контекст отображения для класса окна
- •3. Личный контекст отображения
- •4. Родительский контекст отображения
- •5. Контекст физического устройства
- •Последовательность действий приложения при формировании рисунка
- •Преобразование логических координат в физические и наоборот, единицы измерений, масштабирование.
- •Назначение и состав структуры paintstruct. Сообщение wm_paint.
- •Int right; х-коор-та нижнего правого угла
- •Int bottom; y-коор-та
- •Дополнительные темы.
- •Аппаратная независимость
- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция
Окна, классы и типы окон.
Окна – основной объект в Windows. С точки зрения пользователя Windows окном является прямоугольная область экрана, в которой приложение может что-либо рисовать или писать, а также выполнять все операции взаимодействия с пользователем. Любое приложение Windows можно рассматривать как совокупность окон, внутри которых можно что-либо рисовать или писать. Для каждого окна в приложении определены данные и методы, предназначенные для работы с этими данными (в частности, для рисования в окне).
В ООП используется понятие наследования. Объекты могут наследовать методы других объектов. В Windows также предусмотрен такой механизм, реализуемый с использованием, так называемых, классов окна.
Для каждого класса окна определяется функция окна. При создании окна необходимо указать, к какому классу оно будет принадлежать и, соответственно, какую функцию окна будет использовать для обработки сообщений. Приложения могут создавать собственные классы окна, определяя свои функции окна (и, следовательно, свои методы), либо использовать стандартные, определенные в Windows, классы окна.
Любое создаваемое окно может наследовать свойства уже созданных ранее окон, добавляя свои или переопределяя уже имеющиеся в базовом классе методы. В этом и заключается механизм наследования Windows.
Классы окон имеют стили. Вот ряд из них:
CS_DBLCLKS – функция окна будет получать сообщение по двойному щелчку мыши
CS_GLOBALCLASS – класс является глобальным и доступен другим приложениям
CS_HREDRAW И CS_VREDRAW – внутренняя часть окна будет перерисовываться при изменении ширины и высоты окна
CS_NOCLOSE – в системном меню запрещена функция ция закрытия окна
CS_CLASSDC – создается единый контекст отображения, который будет использоваться всеми окнами, создаваемыми на базе данного класса
CS_OWNDC – для каждого окна, создаваемого на базе данного класса, будет создаваться отдельный контекст отображения.
Определенный в классе окна стиль класса окна используется при создании на базе этого класса всех окон. Для дальнейшего уточнения внешнего вида и поведения окна используется другая характеристика - стиль окна. Стиль окна указывается при создании окна функцией CreateWindow.
Для определения стиля окна используются символические константы с префиксом WS_, определенные в файле windows.h. С помощью этих констант можно определить примерно два десятка стилей окна, однако чаще всего используются несколько основных стилей.
Мы рассмотрим три основных стиля (типа) окон - перекрывающиеся окна (overlapped window), временные окна (pop-up window) и дочерние окна (child window) – несовместимы между собой.
Стили окна:
Перекрывающиеся окна WS_OVERLAPPEDWINDOW – используются в качестве главного окна приложения, обязательно имеют заголовок, рамку, внутреннюю часть (клиентская область), рамку. Дополнительно могут иметь – системное меню, полосы прокрутки, кнопки свертки и т.д.
Временные окна WS_POPUP – для вывода сообщений, остаются на экране непродолжительное время. Может иметь или не иметь заголовок, системное меню.
Окно (временное, перекрывающееся) может быть окном–владельцем (если оно сворачивается в пиктограмму, все окна, которыми оно владеет, становятся невидимыми, если уничтожить – уничтожаться и подчиненные, подчиненные окна располагаются всегда над поверхностью окна-владельца, загораживая его). Оба типа окна используют экранные координаты.
Дочерние окна WS_CHILD – для создания органов управления, напр. кнопки, переключатели. Обычно не имеют рамок, заголовков и т.д. Всегда располагаются на поверхности окна-родителя, система координат – в верхнем левом углу окна-родителя. Только дочерние окна (9-й параметр CreateWindow), могут иметь родителей, перекрывающие и временные окна могут иметь окно-хозяина (8-й параметр CreateWindow).
Другие стили: WS_BORDER, WS_CAPTION, WS_HSCROLL, WS_MAXIMIZE, WS_VISIBLE, WS_MINIMIZE, WS_VSCROLL и другие.
