Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sp.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
213.38 Кб
Скачать

2. Особенности приложений Win 32.

1) Многозадачная среда выполнения

2) Подконтрольность операционной системе.

Как следствие:

определенная регламентируемая структура;

составные части программы и объекты, с которыми она работает, известны системе и контролируются ею;

унифицированный механизм взаимодействия программ внутри себя и друг с другом;

выполнение всех операций ввода-вывода и управления любыми объектами и ресурсами посредством вызовов ОС.

3. Событийное управление

Сообщения и события. Их функция и обработка в Win 32.

Источник, получатель и обработчик сообщений.

4. Структура приложения

Головной модуль

Цикл обработки сообщений: извлечение, трансляция, обработка.

Генерация сообщений.

Примеры использования сообщений

16. Окно Win32: назначение, виды, свойства. Оконные классы.

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

При загрузке Windows всегда создается окно, занимающее весь экран – Desktop window. Каждое Windows-приложение, использующее стандартные интерфейсы Windows (Windows-based приложение), создает хотя бы одно окно, называемое главным окном приложения (возможно, невидимое). Многие приложения создают еще дополнительные окна. Окно приложения может состоять из ряда компонент:

В каждый момент времени только одно окно в системе может получать вводимую информацию – т.н. активное окно. Пользователь может использовать клавиатуру, мышь или другое устройство ввода для взаимодействия с окном.

...

Приложения могут использовать различные типы окон:

– элементы управления (controls)

– окна диалога (dialog boxes)

– окна сообщений (message boxes)

Windows управляет каждым окном в зависимости от отношений этого окна с другими окнами системы. Информация о взаимоотношениях окон хранится в списке диспетчера окон (window manager's list). Каждое окно в этом списке определяется специальной структурой, внутри которой нам интересны четыре поля:

– описатель родительского окна

– описатель окна - хозяина

– описатель дочернего окна

– описатель следующего окна в списке братьев

При загрузке Windows создает окно рабочего стола (Desktop window). Это окно занимает весь экран. Это окно всегда лежит в начале списка диспетчера окон. Следующий уровень иерархии составляют окна верхнего уровня (top-level windows). К таким окнам относятся все не-дочерние окна. Окна верхнего уровня соединяются с окном рабочего стола следующим образом:

– каждое окно ссылается на окно рабочего стола как на родительское

– окно рабочего стола ссылается на самое верхнее окно из окон верхнего уровня

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

Окна верхнего уровня могут так же вступить в отношения владения. Если при порождении окна указать в качестве окна владельца окно не верхнего уровня, то система поднимется по цепочке родительских окон и назначит в качестве хозяина соответствующее окно верхнего уровня. Окно диалога всегда принадлежит породившему его окну, за исключением тех случаев, когда оно порождается как дочернее.

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

Окна, существующие в любой момент в системе, образуют определенную иерархию.

Отношение предок-потомок (родитель-ребенок)

Окно может иметь родительское окно (parent window). В таком случае оно называется дочерним окном или окном-потомком (child window) по отношению к родительскому. Дочернее окно никогда не выходит за границы родительского, по умолчанию имеет только клиентскую область, но дополнительно дополнительно можно задать любые элементы, кроме меню. Действия, производимые с родительским окном, имеют влияние также и на дочерние:

– уничтожение – уничтожение перед родительским;

– скрытие – скрытие перед родительским;

– перемещение – перемещение вместе с родительским;

– отображение – отображение после родительского.

Окна-потомки обычно используются при организации т.н. многодокументного интерфейса (multi-documentinterface – MDI)

Отношение владелец-подчиненный

Окно также может иметь окно-хозяина, или владельца (ownerwindow). Это другой тип отношений между окнами. Окно всегда располагается поверх хозяина и сворачивается и уничтожается вместе с ним.

Особенности передачи сообщений владельцу и подчиненному.

Каждое окно в системе относится к какому-либо оконному классу. Окна одного класса однотипны и работают одинаково. Это связано с тем, что класс окна определяет, во-первых, ряд внешних атрибутов (форму курсора, параметры фона, пиктограмму), а, во-вторых, все окна одного класса работают с одной и той же функцией окна.

Функция окна – специальная функция, которая назначается классу окна. Для посылки окну сообщения операционная система вызывает эту функцию и передает ей в качестве параметров код сообщения и другую уточняющую информацию.

Существует три типа оконных классов:

1) Системные глобальные классы – классы, которые регистрируются при загрузке операционной системы. К таким классам относятся классы элементов управления (кнопки, списки, полосы прокрутки и т.д.)

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

3) Прикладные локальные классы – классы, которые приложения регистрируют для своего внутреннего использования.

Для регистрации классов используются функции RegsterClass или RegisterClassEx. В функцию регистрации передается адрес структуры типа WNDCLASS, содержащей следующую информацию:

lpszClassName – имя класса окна;

style – стиль окна, именованная константа, задающая дополнительные параметры окна внутри класса; так, например, окно класса “полоса прокрутки” может иметь стили SBS_HORZ или SBS_VERT, определяющие направление прокрутки. Константы стилей могут объединяться по ИЛИ.

hInstance – описатель программы – владельца окна;

lpfnWndProc – указатель на оконную процедуру;

hIcon – описатель значка приложения (стандартного или загружаемого), или NULL (значок по умолчанию);

hCursor – описатель курсора приложения (стандартного или загружаемого), или NULL (курсором можно и нужно будет управлять самостоятельно);

hbrBackground – описатель кисти фона (см. описание графической подсистемы), константа (одна из стандартных) или создается программой;

lpszMenuName – имя меню (??)

cbClsExtra – дополнительная информация класса;

cbWndExtra – дополнительная информация окна.

3) Окно-родитель или окно-владелец – описатель окна, которому подчинено данное окно, или NULL, если окно независимо.

4) Размеры окна и координаты в пикселах, отсчитываемые от левого верхнего угла экрана, место в порядке расположения

5) Позиция (место) окна при перекрытии.

6) Идентификатор дочернего окна (если создаваемое окно является дочерним).

7) Описатель меню для окна, не являющегося дочерним.

Дочернее окно может иметь уникальный идентификатор, который позволяет выделять дочернее окно из множества дочерних окон. Не дочернему окну можно назначить меню.

8) Описатель экземпляра программы, создающей окно.

9) Дополнительные данные. Определяемый приложением блок данных, который будет передан процедуре окна при порождении в качестве одного из параметров. В случае Windows 95 размер корректно обрабатываемого блока ограничен 40 байтами.

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