Понятие о событийном управлении Windows

Если рассматривать работу программ, написанных в консольном приложении, то следует отметить, что после их запуска начинают выполняться операторы метода Main().

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

В общем случае сообщения – это реакция операционной системы Windows на происходящие в системе события. При этом под событием следует понимать появление любой «нестандартной» ситуации в работе компьютера, например, нажатии клавиши на клавиатуре, перемещении курсора мыши, деления на ноль и т.д.

Все события, на которые может реагировать система Windows, пронумерованы и каждому номеру – «вектору прерывания», поставлена в соответствие специальная программа (драйвер) корректно реагирующая на соответствующее событие. Например, драйверы периферийных устройств компьютера (клавиатуры, мыши или таймер).

При появлении события система Windows определяет «номер» события и запускает соответствующий драйвер. Драйвер «обрабатывает» событие и создает сообщение, которое пересылается системе Windows.

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

Сообщение Windowsявляется записью, которая содержит информацию о том, что произошло и дополнительную информацию (параметры) о произошедшем событии. Например, структура некоторого сообщения может включать дескриптор окна программы, код (идентификатор) сообщения, уточняющие параметры (например, координаты x и y курсора мыши) и время создания сообщения.

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

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

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

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

В предложенной структуре есть очевидная часть работы программиста – написать обработчики сообщений на некоторые события, например, клик мышкой по кнопке окна вашего приложения.

В приложениях, создаваемых дляWindows, (File -> New -> Project -> Windows Forms Application), всегда используется два основных типа (классы пространства имен) – Form и Application.

Класс Application управляет поведением приложения – запускает метод Main(), в котором находится цикл обработки сообщений (Application.Run();), выполняет необходимые действия при выборке сообщений и корректно завершает работу приложения (файл Program.cs).

Класс Form определяет пользовательский интерфейс приложения – он инициализирует окно формы и готовит приложение к работе (файл Form1.cs).

Более подробно работу этих классов мы будем изучать по мере необходимости при изучении материала учебника.

Рассмотрим последовательность действий при создании простого приложения дляWindows.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: