Сообщения (часть 3)


Как вы знаете, Delphi предоставляет программисту все средства, необходимые для обработки сообщений. Простейший способ обработки сообщений заключается в использовании директивы message.

На практике это выглядит примерно так (ниже представлена обработка сообщения wm_move).

type TSomeForm = class(TForm)

{ процедура обработки сообщения Windows} procedure WMMOVE (var Message: TMessage); message

WM_MOVE;

procedure TSomeForm. WMMOVE; begin {что-то делаем} inherited end;

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

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

Само сообщение представлено в Delphi типом Message: type

TMessage = record Msg: Cardinal;

case Integer of

0: (WParam: Longint; LParam: Longint; Result: Longint; 1: (WParamLo: Word; WParamHi: Word; LParamLo: Word; LParamHi: Word; ResultLo: Word; ResultHi: Word;

end;

Данный тип представляет собой запись, содержащую 32-разрядные целые поля Msg, WParam, LParam И Result.

Первое поле содержит уникальный идентификатор сообщения, два следующих - параметры сообщения, а в поле Result метод должен присвоить то значение, которое потом вернет системе данный обработчик. Именно из-за необходимости передавать значение параметр метода обработки сообщения должен быть переменной.

 


Читайте также

Сообщения (часть 1)

Сообщения операционной системы Windows очень напоминают событийные сообщения Delphi...

Сообщения (часть 2)

Каждое сообщение Windows имеет свой уникальный номер (идентификатор)...

Сообщения (часть 4)

При обработке сообщений часто приходится сталкиваться с ситуациями, когда один 32-разрядный…

Синтаксис функций Windows API

Большая часть функций API уже импортирована в среду Delphi и описана в ее модулях

Параметры функции

Подавляющее количество Windows API-функций использует переданные им статические параметры…



Комментарии (0)







Разрешённые теги: <b><i><br>Добавить новый комментарий: