Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WMNCHitTest, genaue Erklärung (https://www.delphipraxis.net/51205-wmnchittest-genaue-erklaerung.html)

Gruber_Hans_12345 8. Aug 2005 11:57


WMNCHitTest, genaue Erklärung
 
Kann mir jemand genau Erklären, wann die Sache mit WMNCHitTest funktioniert und wann nicht ?

Habe meine eigene Statusbar in einem Frame und diese auf dem Formular.

In der Message WMNCHitTest mache ich nun foglendes :

Delphi-Quellcode:
var
  Pt: TPoint;
begin
  inherited;
  if (Message.Result = HTCLIENT) then begin
    Pt := ScreenToClient(SmallPointToPoint(Message.Pos));
    if PtInRect(GripperRect, Pt) then Message.Result := HTBOTTOMRIGHT;
  end;
... damit ich rechts unten das Formular vergrössern kann.

Ab und zu habe ich dann folgendes Phänomen, das ich zwar denn Curser zum Vergrößern bekomme, aber wnn ich darnn ziehe, dann wird die Statusbar selbst vergrößert (Per Debugger habe ich geprüft, das diese Zeilen auch ausgeführt werden)

Jetzt, wo ich diesen Beitrag verfasst habe, funktionierts wieder überall.

Kann mir jemand erklären, wann bzw. wie das dann genau funktioniert, warum ist dieses HITTest fürs Form bestimmt und nicht für die Statusbar oder das Frame ? (Wo kann man eisntellen, welches Controll vergrößert werden kann ?)

Olli 8. Aug 2005 12:41

Re: WMNCHitTest, genaue Erklärung
 
Da auch die Statusbar vermutlich eine NCA (NonClient-Area) hat, wirst du beim Vergrößern der Statusbar vermutlich versehentlich genau diese treffen. Du müßtest also auch noch den Sender der Nachricht überprüfen, denke ich mal.

Gruber_Hans_12345 8. Aug 2005 13:35

Re: WMNCHitTest, genaue Erklärung
 
@Olli:
Der Sender muß doch die Statusbar sein, da ja diese die Message bekommt und dann den Result zurückgibt.
Die Message ist ja in der TMyStatusbar definiert (und nicht in der Form)

Also, entweder, oder ich bin jetzt noch verwirrter als vorher.

Olli 8. Aug 2005 13:51

Re: WMNCHitTest, genaue Erklärung
 
Zitat:

Zitat von Gruber_Hans_12345
Die Message ist ja in der TMyStatusbar definiert (und nicht in der Form)

Also, entweder, oder ich bin jetzt noch verwirrter als vorher.

Schon gut :mrgreen: ... ist ja aus dem obigen Code nicht ersichtlich ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz