Главная » Delphi » Что такое сообщение?

0

Сообщение (message) представляет собой  извещение о некотором событии, посы лаемое  системой Windows в адрес  приложения. Любые  действия пользователя — щел чок  мышью,  изменение размеров окна  приложения, нажатие клавиши  на  клавиату ре — вынуждают  Windows отправить приложению сообщение, извещающее о том, что произошло в системе.

Сообщение представляет собой  запись (record),  передаваемую приложению систе мой  Windows.  Эта запись  содержит информацию о типе  произошедшего события и дополнительную информацию,  специфическую для  данного сообщения. Например, для  щелчка  мышью  запись  содержит дополнительную информацию  о  координатах указателя  мыши  на момент щелчка  и номер нажатой кнопки. Тип  записи, используе мый Delphi для представления сообщений Windows, называется TMsg. Он определен в модуле Windows следующим образом:

type

TMsg = packed record

hwnd: HWND;

//

Дескриптор (handle) окна-получателя

message: UINT;

//

Идентификатор сообщения

wParam: WPARAM;

//

32 бита дополнительной информации

lParam: LPARAM;

//

32 бита дополнительной информации

time: DWORD;

//

Время создания сообщения

pt: TPoint;

//

Позиция мыши в момент создания сообщения

end;Что же содержится в сообщении?

Ниже приведено более подробное описание формата записи сообщения.

•     hwnd — 32-битовый дескриптор окна (window handle), которому предназначено со- общение. Окно может быть практически любым типом объекта на экране, поскольку Win32 поддерживает дескрипторы окон для большинства визуальных объектов (окон, диалоговых окон, кнопок, полей ввода и т.п.).•                   message — константа, соответствующая некоторому стандартному сообщению. Сис- темные константы сообщений (для Windows) определены в модуле Windows, а констан- ты для пользовательских сообщений программист должен определить сам.

•     wParam — это поле часто содержит какую-то константу, значение которой опреде- ляется типом сообщения. Кроме того, оно может содержать идентификатор окна или элемента управления, связанного с данным сообщением.

•     lParam — это поле чаще всего хранит индекс или указатель на некоторые данные в памяти. Так как поля WParam, LParam и Pointer имеют один и тот же размер, равный

32 битам, между ними допускается взаимное преобразование типов.

Теперь, ознакомившись с тем, что представляют собой сообщения Windows в це

лом, можно более подробно рассмотреть их различные типы.

Типы сообщений

Интерфейс прикладных программ Windows 32 (API Win32 —  Application Programming Interface Win32) является интерфейсом операционной системы для взаимодействия с большинством приложений MS Windows.  Здесь  каждому сообщению Windows постав лено  в соответствие определенное значение, которое заносится в поле  message за писи TMsg. В Delphi все эти константы определены в модуле Messages, и большая  их часть  задокументирована в интерактивной справочной системе. Обратите внимание, что имя каждой  константы, представляющей тип  сообщения, начинается с символов WM (т.е.  Windows Message). В табл. 3.1 представлены некоторые наиболее распростра ненные сообщения Windows и их числовые коды.

Таблица 3.1. Основные типы сообщений WindowsИдентификатор сообщенияЗначение  Сообщает окну о том, что…wm_Activate $00l6 Оно активизируется или дезактивируется

wm_Char             $0102   От  некоторой клавиши   были  посланы сообщения

wm_KeyDown или wm_KeyUp wm_Close  $0010 Оно должно быть закрыто wm_KeyDown $0100  На клавиатуре была нажата клавиша  wm_KeyUp   $0101  Клавиша на клавиатуре была отпущена

wm_LButtonDown      $0201   Пользователь нажал левую кнопку мыши

wm_MouseMove        $0200   Указатель мыши переместился

WM_PAINT            $000F   Необходимо перерисовать клиентскую область  окна

wm_Timer            $0113   Произошло событие таймера

wm_Quit     $0012 Программа должна быть завершена

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

По теме:

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