Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Sonstiges (https://www.delphipraxis.net/45-library-sonstiges/)
-   -   Kein PopUp-Menü bei Klick auf's Icon in der Titelleiste (https://www.delphipraxis.net/21132-kein-popup-menue-bei-klick-aufs-icon-der-titelleiste.html)

Matze 28. Apr 2004 12:21


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 toms in diesem Thread veröffentlicht.

Die Erklärung stammt von Luckie.


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