Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программа, управляемая событиями



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

1. Ссылка на окно, которое находилось в фокусе, когда произошло событие.

2. Идентификатор события Message (значение типа Word).

3. Дополнительная информация для данного события (два значения — одно типа Word, второе типа LongInt), например, код нажатой клавиши для сообщения о нажатии клавиши, или координаты мыши для сообщения о перемещении мыши.

Далее, эти пакеты сохраняются в специальной очереди сообщений Windows, а ядро опять переходит в режим слежения за системой. С другой стороны, очередь непрерывно разбирается, анализируется ссылка на окно, которому предназначено событие, и вызывается его оконная функция —специальная подпрограмма, описанная по определенным правилам и зарегистрированная в операционной системе как объект назначения для сообщений. Заголовок оконной функции выглядит следующим образом:

Function WindowProc (Window: HWnd; Message, WParam: Word;

LParam: Longint): Longint; export;

Жизненный цикл сообщения представлен на рис. 13.

Вызванная оконная функция должна проанализировать событие по его идентификатору Message, используя дополнительные параметры Wparam и LParam, выполнить действия, обусловленные логикой программы, и вернуть в качестве результата функции код завершения обработки. Если приложение не может проанализировать код события (обработка такого события не предусмотрена в оконной функции), то должен быть вызван обработчик по умолчанию. Таким образом, большую часть оконной функции обычно занимает оператор множественного выбора Case, который на основании информации о сообщении выполняет необходимые действия. В секции Else такого оператора вызывается обработчик по умолчанию (см. рис. 14).


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

Рассмотрим основные этапы работы программы в ОС Windows:

1. Создание и регистрация класса окна, передача операционной системе ссылки на оконную функцию.

2. Создание окна на основе класса.

3. Организация предварительного анализа очереди сообщений, работа оконной функции, вызываемой ядром Windows.

4. Уничтожение окна, дерегистрация класса окна.

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

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

Сокрытие сложных процессов, происходящих с приложением в Windows и объектно-ориентированный подход к программированию — основное направление развития языков программирования в настоящее время.

Исключением не стал и Delphi. Все процессы, связанные с поддержанием работоспособности оконной программы, реализованы разработчиками языка. Это позволяет программисту сосредоточиться на разработке логики программы, а не той ее части, которая взаимодействует с системой.





Дата публикования: 2014-11-02; Прочитано: 389 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...