Главная » Delphi » Событие OnMessage класса TApplication

0

Другой метод обработки сообщений заключается в использовании события On- Message класса  TApplication. При  назначении обработчика этому событию он бу дет вызываться всякий раз при  получении сообщения из очереди и подготовке его к обработке. Обработчик события OnMessage всегда  вызывается до того,  как система Windows  получит  возможность обработать сообщение. Обработчик TApplica- tion.OnMessage имеет  тип  TMessageEvent и объявляться со списком  параметров, приведенным ниже.

procedure SomeObject.AppMessageHandler(var Msg: TMsg;

var Handled: Boolean);

Все параметры сообщения передаются обработчику события OnMessage в параметре Msg. Этот параметр имеет  тип TMsg (записи сообщения Windows), который был описан в настоящей главе ранее). Параметр Handled имеет  тип Boolean и используется для указа ния того, обработано сообщение или нет.

Чтобы создать  обработчик события OnMessage, можно  воспользоваться компонен том TApplicationEvents, расположенном во вкладке  Additional (Дополнительные) палитры компонентов. Ниже приведен пример такого обработчика события:

var

NumMessages: Integer;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;

var Handled: Boolean);

begin

Inc(NumMessages);Handled := False;

end;

Событие OnMessage обладает одним существенным ограничением, заключающем ся в том, что оно перехватывает только  те сообщения, которые выбираются из очере ди, и не перехватывает те, которые передаются непосредственно процедурам окон приложения. С более  подробной информацией о том,  как обойти это  ограничение, можно  ознакомиться в предыдущем издании данной книги  Delphi 5 Руководство разра ботчика, в главе 13 — “Дополнительный инструментарий разработчика”.

CОВЕТ

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

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии