![]() |
Eine Message senden
Hallo!
Ich möchte innerhalb meines Programms eine Nachricht senden. Wenn diese empfangen wird, soll eine Procedure ausgeführt werden. Leider bin ich mithilfe der Suchfunktionen der DP und auch der EE nicht wesentlich weiter gekommen. Folgenden Codeschnipsel habe ich:
Delphi-Quellcode:
Fragen: Ich möchte
const
WM_LOESCHMICH = WM_USER + 123; // die Message (immer als WM_USER + irgendeine Zahl deklarieren) type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure LoeschMich(var Msg: TMessage); message WM_LOESCHMICH; // der MessageHandler public { Public-Deklarationen } end; implementation procedure TForm1.Button1Click(Sender: TObject); begin PostMessage(Handle, WM_LOESCHMICH, Integer(Sender), 0); // an Form senden (Handle), in WParam den Button stecken end; procedure TForm1.LoeschMich(var Msg: TMessage); begin TObject(Msg.WParam).Free; // WParam nach TObject casten und freigeben end;
Delphi-Quellcode:
innerhalb einer Klasse deklarieren. Wo muss dann hin? Und was hat WM_User zu bedeuten?
const
WM_LOESCHMICH = WM_USER + 123; // die Message (immer als WM_USER + irgendeine Zahl deklarieren) Genauso wenig verstehe ich folgende Zeile:
Delphi-Quellcode:
Wer kann mir helfen?
TObject(Msg.WParam).Free; // WParam nach TObject casten und freigeben
|
Re: Eine Message senden
Hi.
Zu deiner ersten Frage: deine Konstante gehört dahin wo sie ist. Man deklariert keine Konstanten in einer Klasse. Zu deiner zweiten Frage: Der Pointer auf den Button wurde in wParam als 32-bit Ganzzahl transportiert und muss wieder als TObject interpretiert werden, sonst kommst du nicht an seine Methodentabelle. Grüße vom marabu |
Re: Eine Message senden
Und was hat das WM_User zu bedeuten?
|
Re: Eine Message senden
Alle message numbers unterhalb WM_USER sind bereits reserviert bzw. in Verwendung.
marabu |
Re: Eine Message senden
Zitat:
|
Re: Eine Message senden
Zitat:
...:cat:... |
Re: Eine Message senden
Hi!
Dürfte ich an dieser Stelle eine kleine Verständnisfrage einschieben? Was passiert, wenn ich eine Message in meinem Programm als WM_USER+37 definiere und ein anderes Programm will auch ne Message mit WM_USER+37 haben? Werden dann beide "Events" ausgelöst? Ciao Frederic |
Re: Eine Message senden
Hi Frederic,
deine custom messages haben nur lokale Bedeutung. Willst du sie programmübergreifend verwenden, dann musst du dir eine message number von Windows zuteilen lassen. Siehe auch ![]() Grüße vom marabu |
Re: Eine Message senden
Hi!
ah, Perfekt! Danke! Ciao Frederic |
Re: Eine Message senden
Zitat:
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz