![]() |
Kein PopUp-Menü bei Klick auf's Icon in der Titelleiste
Beim Klick auf das kleine Icon oben links einer Titelleiste wird bekanntlich ein kleines PopUp-Fenster geöffnet.
Verhindern lässt sich dies mit folgendem Code:
Delphi-Quellcode:
type
TForm1 = class(TForm) private procedure WMNcrButtonDown(var Msg: TMessage); message WM_NCRBUTTONDOWN; procedure WMSyscommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; procedure WMNCLButtonDblClk(var Msg: TMessage); message WM_NCLBUTTONDBLCLK; public end; var Form1: TForm1; implementation {$R *.DFM} // Rechte Maustaste auf Titelleiste unterdrücken. procedure TForm1.WMNcrButtonDown(var Msg: TMessage); begin if Msg.wParam = HTCAPTION then Msg.Result := 0; end; // Evtl Doppelklick auf App. Icon unterdrücken procedure TForm1.WMNCLButtonDblClk(var Msg: TMessage); begin if Msg.wParam = HTCAPTION then Msg.Result := 0; end; // Klick auf App. Icon unterdürcken procedure TForm1.WMSyscommand(var Msg: TWMSysCommand); begin case (Msg.CmdType and $FFF0) of SC_MOUSEMENU: Msg.Result := 0; else inherited; end; end; Kurze Erklärung des Codes: WM_NCRBUTTONDOWN ist ein Klick mit der rechten Maustaste in die NonClientAera des Fensters, also in den Nicht-Anwendungsbereich. Der wParam der Nachricht ist das Ziel, wohin geklickt wurde. Wurde auf die Titelleiste geklickt (HTCAPTION), dann wird die Nachricht umgebeogen bzw. verschluckt, in dem nicht darauf reagiert wird. Gleiches Vorgehen bei WM_NCLBUTTONDBLCLK. Wird mit WM_SYSCOMMAND normalerweise das Mausmenü geöffnet, wird dies auch wieder verschluckt. Diesen Code hat ![]() ![]() Die Erklärung stammt von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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