Christian Schmitt
2017-01-02 12:49:20 UTC
Hallo Leute,
ich habe mir in einer eigenen Unit eine Klasse erstellt. Darin wird eine DLL angesprochen, welche wiederum Messages an das von meiner Klasse angegebene Handle schickt. Diese Message soll von meiner Klasse behandelt werden und einfach ein paar Variablen füllen. Soweit so einfach dachte ich. Ich habe also Prozeduren definiert á la
procedure OnMyEvent(var MSG: TMessage); message WM_USER;
Jetzt habe ich das Problem, dass wenn ich der externen DLL das Handle Application.Mainform.Handle (also vom Main-Window) als Message-Ziel mitgebe, dann reagiert meine Klasse nicht auf die Message. Lediglich mein Hauptfenster reagiert und auch nur wenn ich o.g. Prozedur in die TForm-Klasse einbinde. Ok, dachte ich, meine Klasse hat ja eigentlich keinen Bezug zu dem Main-Form, also verwende ich einfach Application.Handle, aber auch darauf reagiert OnMyEvent nicht. Ich habe es jetzt etwas unschön durch das Application.OnMessage Event gelöst, finde ich aber wie gesagt nicht sauber. Wenn aus irgendeinem Grund in der Hauptanwendung OnMessage belegt ist, überschreibt meine Klasse dies :-(
Was hab ich falsch gemacht?
Gruß
ich habe mir in einer eigenen Unit eine Klasse erstellt. Darin wird eine DLL angesprochen, welche wiederum Messages an das von meiner Klasse angegebene Handle schickt. Diese Message soll von meiner Klasse behandelt werden und einfach ein paar Variablen füllen. Soweit so einfach dachte ich. Ich habe also Prozeduren definiert á la
procedure OnMyEvent(var MSG: TMessage); message WM_USER;
Jetzt habe ich das Problem, dass wenn ich der externen DLL das Handle Application.Mainform.Handle (also vom Main-Window) als Message-Ziel mitgebe, dann reagiert meine Klasse nicht auf die Message. Lediglich mein Hauptfenster reagiert und auch nur wenn ich o.g. Prozedur in die TForm-Klasse einbinde. Ok, dachte ich, meine Klasse hat ja eigentlich keinen Bezug zu dem Main-Form, also verwende ich einfach Application.Handle, aber auch darauf reagiert OnMyEvent nicht. Ich habe es jetzt etwas unschön durch das Application.OnMessage Event gelöst, finde ich aber wie gesagt nicht sauber. Wenn aus irgendeinem Grund in der Hauptanwendung OnMessage belegt ist, überschreibt meine Klasse dies :-(
Was hab ich falsch gemacht?
Gruß