Архитектура Windows
Окна
Окна
Окна
Окна
Окна
Окна
Окна
Окна
Окна
Окна
293.00K
Category: programmingprogramming

Архитектура Windows

1. Архитектура Windows

2. Окна

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

3. Окна

«Обычное» окно
Разновидности окон
Заголовок,
за который
окно можно
перемещать
Кнопки
«свернуть»,
«развернуть»,
«закрыть»
Меню
Толстая граница, с
помощью которой
можно изменять
размер окна
Рабочая
область
окна

4. Окна

«Диалоговое» окно. Обычно
вызывается из другого окна родителя
Заголовок,
за который
окно можно
перемещать
Разновидности окон
Обычно только
кнопка «закрыть»
Обычно размер окна
менять нельзя
В рабочей области размещаются
элементы управления – кнопки, поля
ввода, выпадающие списки и т.д.

5. Окна

Разновидности окон
Диалоговые окна имеют разновидности:
• Модальные. Работа с другими окнами приложения невозможна,
пока данное окно не будет закрыто
• Немодальные. Можно продолжать работу с другими окнами
приложения
• Стандартные. Предопределены в операционной системе
• Созданные прикладной программой
Пример стандартного
модального окна

6. Окна

Элементы управления. Не
могут существовать без окнародителя
Флажок
(check box)
Примеры элементов
управления
Ползунок (slider)
Радиокнопка
(radio button)
Кнопка (button)
Прогресс

7. Окна

Каждому окну может быть
отправлено сообщение
Оконные сообщения
Формат сообщения:
НОМЕР СООБЩЕНИЯ
W-ПАРАМЕТР
L-ПАРАМЕТР
Номер сообщения
идентифицирует событие
(например «нажата кнопка
мыши»)
Смысл параметров зависит от
события и различается в
каждом конкретном случае
Пример
1. Пользователь нажал левую кнопку мыши,
когда курсор над Button1
2. Система отправила окну Button1
соответствующее сообщение
3. Окно Button1 перерисовалось так, что
выглядит нажатым
4. Пользователь отпустил кнопку мыши
5. Система отправила сообщение об этом
Button1
6. Кнопка снова перерисовалась и отправила
сообщение о нажатии родительскому окну

8. Окна

Любое окно принадлежит к оконному классу.
Оконный класс определяет самые общие
параметры и поведение окна
Оконный класс
Важная составляющая оконного класса
– оконная функция, которая
обрабатывает сообщения,
отправляемые окнам
Существуют предопределенные
оконные классы, а также любое
приложение может создавать
собственные.
Оконный класс, созданный
специально для диалогового окна.
Определяет уникальное поведение
для событий, например перемещение
ползунка
Предопределенный оконный класс
«кнопка». Кнопки отличаются размером,
надписью, и т.д. Однако для всех кнопок
определено одинаковое поведение,
например при нажатии.

9. Окна

Оконный класс
Оконный класс
«Button»
• Функция
обработки
сообщений
Функция обработки
сообщений «Button»
Экземпляр Button1
• Надпись на
кнопке
• Другие
персональные
данные кнопки
Экземпляр Button2
• Надпись на
кнопке
• Другие
персональные
данные кнопки
Экземпляр OK
• Надпись на
кнопке
• Другие
персональные
данные кнопки
При возникновении события с любой кнопкой (например
пользователь переместил курсор над кнопкой) вызывается
одна и та же функция обработки сообщений

10. Окна

«Окно1»
• Событие
Приложение запущено
Обработка сообщений
Главный поток
• Создание еще
одного потока
Второстепенный
поток
Создание окна
«Окно1»
Ожидание сообщения
Передача сообщения
оконной функции
Поток завершил работу
Создание окна
«Окно2»
Ожидание сообщения
Передача сообщения
оконной функции
Поток завершил работу
«Окно2»
• Событие

11. Окна

Окна и потоки
• Поток может создавать окна.
• Окно относится с конкретным потоком (принадлежит потоку)
• Каждый поток имеющий окна, имеет также очередь
сообщений
• При возникновении события, связанного с окном СИСТЕМА
отправляет сообщение ПОТОКУ (помещает сообщение в
конец очереди)
• Поток может извлечь сообщение из очереди с помощью
функции GetMessage
• Поток может передать сообщение функции-обработчику с
помощью DispatchMessage
• Если поток завершился, система автоматически удаляет все
связанные с ним окна
• Приложение также может отправить окну сообщение. В
WinAPI имеются функции для синхронной и асинхронной
отправки сообщений
English     Русский Rules