Ich muss auch noch schnell zurück rudern! Das Problem an meinem Code ist, dass das (Window-)
Handle fehlt, an welches die Nachricht geschickt werden kann. Denn nur dann wird die
WndProc()
angesprungen.
Hier die funktionierende Version.
Delphi-Quellcode:
const
WM_MY_MESSAGE = WM_USER + 100;
type
TTest = class(TObject)
private
FHandle : HWND;
procedure WndProc(var Msg: TMessage);
procedure OnMyMessage(var Msg: TMessage); message WM_MY_MESSAGE;
public
constructor Create(); reintroduce;
destructor Destroy(); override;
end;
procedure TTest.WndProc(var Msg: TMessage);
begin
Dispatch(Msg);
end;
procedure TTest.OnStartupMessage(var Msg: TMessage);
begin
if (Msg.Msg = WM_MY_MESSAGE) then
begin
end;
end;
constructor TTest.Create();
begin
inherited Create();
FHandle := Classes.AllocateHWnd(Self.WndProc);
end;
destructor TTest.Destroy();
begin
DeallocateHWnd(FHandle);
inherited Destroy();
end;
-- EDIT: Dann bau halt eine passende if-Abfrage in die WndProc-Methode ein.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)