So, habe mal auf die Schnelle was zusammen geschustert:
Delphi-Quellcode:
type
TForm1 =
class(TForm)
Memo1: TMemo;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure WndProc(
var msg: TMessage);
override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
bShow: Boolean = False;
procedure TForm1.WndProc(
var msg: TMessage);
var
s:
string;
begin
case msg.Msg
of
WM_MOUSEMOVE:
begin
// leider gibt es keine Funktion, die den numerischen Wert der
// Konstante umwandelt, deswegen alles von Hand und das macht es so
// aufwendig
s := '
WM_MOUSEMOVE';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
WM_ACTIVATE:
begin
s := '
WM_ACTIVATE';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
WM_CLOSE:
begin
s := '
WM_CLOSE';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
Sleep(2000);
// 2 Sekunden warten, wir wollen noch was sehen.
end;
WM_LBUTTONDOWN:
begin
s := '
WM_LBUTTONDOWN';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
WM_LBUTTONUP:
begin
s := '
WM_LBUTTONUP';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
WM_MOVING:
begin
s := '
WM_MOVING';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
WM_SHOWWINDOW:
begin
s := '
WM_SHOWWINDOW';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
bShow := True;
end;
WM_SIZE:
begin
// vor WM_SHOWWINDOW existiert das Memo noch nicht!!!
if bShow = True
then
begin
s := '
WM_SIZE';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
end;
WM_SYSCOMMAND:
begin
s := '
WM_SYSCOMMAND';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
WM_PAINT:
begin
s := '
WM_PAINT';
Memo1.Lines.Add(s + '
= '+IntToStr(msg.Msg));
end;
end;
// weiterleiten an die in der VCL eingebaute WndProc,
// sonst reagiert unser Programm nicht mehr auf die abgefangenen Nachrichten
inherited;
end;
Im Memo wird die Konstate angezeigt und ihr nummerischer Wert.