Сообщения Windows, события и делегаты — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Сообщения Windows, события и делегаты

2017-12-21 208
Сообщения Windows, события и делегаты 0.00 из 5.00 0 оценок
Заказать работу

 

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

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

 

C# и C++/CLI. Сообщения выполняются в рамках окон, то есть форм, и для связи функций-обработчиков с сообщениями используется механизм событий и делегатов. Посредством делегатов к событиям привязывают требуемые функции-обработчики определённого формата.

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

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

Java и J#. Обработка событий основана на делегировании обработчиков с помощью интерфейсов. Вместо делегатов используются предопределённые интерфейсы и включённые в них обработчики.

Итак, реализация обработки событий в языках C# и Java отличаются; она рассмотрена в разделах 9.4.1 и 9.4.2 на примере обработки события от мыши.

 

 

9.4.1. Обработка событий мыши на языке C#

 

Для события MouseDown, возникающего при нажатии на клавишу мыши, используют делегат MouseEventHandler.

Событие определено в классе System.Windows.Forms.Control, из которого порождён класс Form, следующим образом:

 

public event MouseEventHandler MouseDown;

 

С событием MouseDown. можно с помощью оператора “+=” связать один или несколько объектов делегата MouseEventHandler события с инкапсулированными в них обработчиками, допустим, обработчик OurMouseDown():

 

MouseDown += new MouseEventHandler (OurMouseDown);

 

Разумеется, формат обработчика определяется делегатом MouseEventHandler и должен быть следующим:

 

void OurMouseDown (object sender, MouseEventArgs args);

 

где

sender - ссылка на объект-источник события,

args - ссылка на объект типа MouseEventArgs, содержащий данные, относящиеся к свершившемуся событию.

 

Обработчик OurMouseDown() получает аргумент типа MouseEventArgs, содержащий данные, относящиеся к обрабатываемому событию и представленные следующими свойствами класса MouseEventArgs, специфичными для события MouseDown:

 

- Button, указывающее, какая клавиша нажата;

- Clicks, указывающее, сколько раз была нажата и отпущена клавиша;

- Delta, указывающее, сколько раз было повёрнуто колёсико мыши;

- X, указывающее значение координаты х носика мыши и

- Y, указывающее значение координаты у носика мыши.

 

Пример 9.4.1 содержит C# программу с событием, происходящим при нажатии на клавишу мыши. При каждом нажатии на клавишу появляется строка на консоли.

 

Пример 9.4.1. Программа обработки события мыши на C#.

Приложение создаёт прикладное окно и ожидает нажатия клавиши мыши в этом окне (точнее, в области клиента окна). При нажатии на клавишу в консольное окно выдаётся строка с координатами носика курсора мыши.

 

 

Рис. 9.4.1. При нажатии на клавишу мыши появилась очередная строка на консоли

 

Ниже приводятся три варианта реализации этого приложения на языке C#.

///////////////

// C# Вариант 1

using System;

using System.Drawing;

using System.Windows.Forms;

 

class MainClass: Form // Класс прикладного окна

{

// Использовать предопределённый обработчик OnMouseDown мыши


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.