Понятие о событийном управлении 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.




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