Существует возможность определять, отсылать и принимать собственные сообщения.
Номера своих собственных сообщений вы должны отсчитывать от WM_USER
.
Пример 6.3. Использование собственных сообщений
const WM_MYMSG=WM_USER+1; procedure WMMyMsg (var Msg:TMessage); message WM_MYMSG; implementation procedure TForm1.WMMyMsg(var Msg: TMessage); begin Label2.Caption:='Сообщение WM_MYMSG принято'; end;
Для всех функций отправки сообщений можно в качестве первого параметра указывать
HWND_BROADCAST
, однако для того, чтобы другие окна были уведомлены о наличии такого сообщения
необходимо его предварительно зарегистрировать с помощью процедуры RegisterWindowMessage
.
Прием сообщения в этом случае можно осуществить, переопределив обработчик сообщений по
умолчанию окна-приемника:
Пример 6.4. Использование широковещательного сообщения
procedure TForm1.Button6Click(Sender: TObject); begin WM_MYMSG_TO_ALL:=RegisterWindowMessage('WM_MYMSG_TO_ALL'); SendMessage(HWND_BROADCAST,WM_MYMSG_TO_ALL,0,0) end; procedure TForm1.DefaultHandler(var Message); begin with TMessage(Message) do begin if Msg = WM_MYMSG_TO_ALL then Label3.Caption:='WM_MYMSG_TO_ALL' else Inherited; end; end;