Hi,
ich versuche gerade einen Weg zu finden wie ich verhindern kann das das Systemmenü eines Fensters aufgerufen werden kann. Ohne in der Option 'BorderIcons' das Menü zu deaktivieren, dann verschwindet das "Rote X" und BorderStyle bsToolWindow ist auch keine Option. Mein erster weg war einfach im OnCreate() von TForm die Einträge aus dem Menü zu löschen was auch funktioniert und das Menü scheint auch weg zu sein. Mir ist dann aber aufgefallen das man das Menü trotzdem noch mit der Tastenkombination ALT + Leertaste aufrufen kann, es ist zwar nicht sichtbar aber der Fokus liegt dann trotzdem im Menü und nicht mehr auf der Form selbst. Das möchte ich gerne unterbinden.
Bei meiner Recherche bin ich auf zwei Windows Botschaften gestoßen WM_INITMENU und WM_INITMENUPOPUP jedoch finde ich keine wirkliche Lösung wie ich diese Botschaften abfangen und quasi verwerfen kann so das das Systemmenü einfach nicht aufgerufen wird.
Ich habe es mal mit WndProc versucht und ja die Botschaften werden abgefangen, aber wie verwerfe ich diese nun?
Delphi-Quellcode:
.
.
.
private
procedure WndProc(var msg: TMessage); override;
procedure TForm1.WndProc(var msg: TMessage);
begin
if (msg.Msg = WM_INITMENU) or (msg.Msg = WM_INITMENUPOPUP) then
begin
ShowMessage('Bla Bla Mr. Freeman');
end
else
inherited;
end;