Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для КР по ООП.doc
Скачиваний:
8
Добавлен:
18.04.2019
Размер:
2.47 Mб
Скачать

События класса Application

ApplicationExit

Статическое. Происходит при закрытии приложения.

Idle

Статическое. Происходит, когда приложение заканчивает обработку и собирается перейти в состояние незанятости.

ThreadException

Статическое. Возникает при выдаче не перехваченного исключения потока.

ThreadExit

Статическое. Происходит при закрытии потока. Перед закрытием главного потока для приложения вызывается данное событие, за которым следует событие ApplicationExit.

Итак, класс Application располагает методами для запуска и останова ПОТОКОВ и ПРИЛОЖЕНИЙ, а также для обработки Windows messages.

Вызов методов Run обеспечивает выполнение цикла обработки сообщений (an application message loop) в текущем потоке, а также, возможно, делает видимой соответствующую форму.

Вызов методов Exit и ExitThread приводит к остановке цикла обработки сообщений.

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

Вызов AddMessageFilter обеспечивает добавление фильтра сообщений to the application message pump для monitor Windows messages.

Интерфейс IMessageFilter позволяет реализовывать специальные алгоритмы непосредственно перед вызовом обработчика сообщения.

Класс статический и объектов-представителей этого класса создать невозможно!

Windows message

Прежде всего, Message – это СТРУКТУРА, представляющая в .NET сообщения Windows. Те самые, которые адресуются приложению и используются системой как средство уведомления выполняющихся в Windows приложений.

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

Объект-представитель Message structure, может быть создан с использованием метода Create (создать – не означает отправить).

Список членов Message structure

Члены

Объявление

HWnd property. Gets or sets the window handle of the message.

public IntPtr HWnd(get; set;)

Msg property. Gets or sets the ID number for the message.

public int Msg {get; set;}

WParam property. Gets or sets the WParam field of the message. Значение этого поля зависит от конкретного сообщения. Use the WParam field to get information that is important to handling the message. Это поле обычно используется для фиксирования small pieces of information, например, значений флагов.

public IntPtr WParam {get; set;}

LParam property. Gets or sets the LParam field of the message. The value of this field depends on the message. Use the LParam field to get information that is important to handling the message. This field is typically used to store an object if it is needed by the message.

public IntPtr Lparam {get; set;}

Result property. Specifies the value that is returned to Windows in response to handling the message.

public IntPtr Result {get; set;}

Create method. Создает новую структуру Message.

public static Message Create (

IntPtr hWnd,

int msg,

IntPtr wparam,

IntPtr lparam);

Equality operator. Сравнивает два сообщения на предмет определения их идентичности.

public static Boolean operator ==(

Message left,

Message right);

Inequality operator. Сравнивает два сообщения на предмет определения их различия.

public static Boolean operator !=(

Message left,

Message right);

Equals метод. Compares two message structures to determine if they are equal.

public override bool Equals(object o)

GetHashCode method. Gets the hash code of the message handle.

public override int GetHashCode();

При этом IntPtr – это platform-specific тип, который используется для представления указателей или дескрипторов. Предназначен для представления целочисленных величин, размеры которых зависят от характеристик платформы (is platform-specific). То есть ожидается, что объект этого типа будет иметь размер 32 бита на 32-разрядных аппаратных средствах и операционных системах, и 64 битах на аппаратных средствах на 64 бита и операционных системах.

Тип IntPtr может использоваться языками, которые поддерживают механизм указателей, и как общее средство для обращения к данным между языками, которые поддерживают и не поддерживают указатели.

Объект IntPtr может быть также использован для поддержки дескрипторов.

For example, instances of IntPtr are used extensively in the System.IO.FileStream class to hold file handles.

Существует ещё один экзотический тип – UIntPtr, который в отличие от IntPtr не является CLS-compliant типом.

Только IntPtr тип используется в common language runtime.

UIntPtr тип разработан в основном для поддержки архитектурной симметрии (to maintain architectural symmetry) с IntPtr типом.