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 WM_NCLButtonUp (https://www.delphipraxis.net/97818-wm_nclbuttonup.html)

pstruh 16. Aug 2007 19:46


WM_NCLButtonUp
 
Hm, habe jetzt erkannt, dass "inherited" sehr wohl einen entscheidenden Einfluß hat. Aber trotzdem bekomme ich bei Aufruf der o.g. Windows-Message nur eine Rreaktion, wenn vorher durch Aufruf der Message WM_NCLBottomDown das Message-Ergebnis auf 0 gesetzt wird - damit verhindere ich aber die ursprünglichen Funktionalitäten (Fenster verschieben). Also, langer Rede kurzer Sinn, Alles soll so bleiben wie es ist, ich möchte lediglich eine zusätzlich Funktionalität einbauen, wenn die linke Maustaste in/über der FormCaption losgelassen wird. geht das nicht, oder bin ich heute Abend zu blöde :oops:

DGL-luke 16. Aug 2007 20:03

Re: WM_NCLButtonUp
 
zeich ma n büschen code. überschreiben der nachrichtenbehandlung is im prinzip nicht soooo schwierig.

Christian Seehase 16. Aug 2007 20:04

Re: WM_NCLButtonUp
 
Moin pstruh,

das ist ja ein interessantes Phänomen.
Es geht übrigens auch, wenn das Formular maximiert ist (ohne das WM_NCLBUTTONDOWN Result auf 0 zu setzen).

Ich vermute mal, dass das ein Problem der VCL ist.
Bei einem non-VCL-Programm würde es wohl funktionieren.

pstruh 16. Aug 2007 20:13

Re: WM_NCLButtonUp
 
Hallo Lukas,
der Code ist nicht der Rede wert. Eigentlich soll in

Delphi-Quellcode:
procedure TForm4.WMNCLeftButtonUp(var Message:TMessage);
begin
 ShowMessage('left up'); // << nur zum Test, hier soll eine Proc aufgerufen werden, die NIX
                         // am weiteren Windows-Handling verändert, sondern nur im Programm
                         // interne Reorganisationsaufgaben bearbeitet
end;
das funktioniert aber nur, wenn ich mit

Delphi-Quellcode:
procedure TForm4.WMNCLeftButtonDown(var Message:TMessage);
begin
 Message.Msg:=0;
end;
die Windows-Funktionalitäten quasi ausschalte: Dann kann ich natürlich nicht mehr das Fenster verschieben, ist also indiskutabel. Noch mal: Ich benötige eigentlich nur das Event LeftMouseButtonUp in der FormCaption um eine programminterne Proc auszuführen. Windows-Funktionalitäten sollen hier NICHT verändert oder ergänzt werden.

pstruh 16. Aug 2007 20:18

Re: WM_NCLButtonUp
 
Hallo Chris,
ein VCL-Phänomen?! Könnte es daran liegen, dass ich DelphiSpeedUp installiert habe?! Hm, sollte ich mal deinstallieren und dann noch mal probieren...

Christian Seehase 16. Aug 2007 20:24

Re: WM_NCLButtonUp
 
Moin pstruh,

Zitat:

Zitat von pstruh
Könnte es daran liegen, dass ich DelphiSpeedUp installiert habe?

das denke ich mal nicht, da ich es nicht installiert habe, und den Effekt nachvollziehen kann.
Wie gesagt, bei maximiertem Fenster funktioniert es, wie gewünscht.

pstruh 16. Aug 2007 20:24

Re: WM_NCLButtonUp
 
Neee, ohne DelphiSpeedUp geht's auch nicht :cry: Vielleicht ist WM_NCHitTest 'ne alternative?

pstruh 16. Aug 2007 20:28

Re: WM_NCLButtonUp
 
Arggggggggg, nein ist natürlich keine Alternative, die Message ertönt ja schon, wenn der Cursor nur über die Caption bewegt wird. Schit!

Christian Seehase 16. Aug 2007 20:42

Re: WM_NCLButtonUp
 
Moin pstruh,

aber da könntest Du dann mit GetAsyncKeystate die Maustaste abfragen, und entsprechend reagieren.

pstruh 16. Aug 2007 20:54

Re: WM_NCLButtonUp
 
Hihihi, habe Alternative gefunden: WM_WindowPosChanged Ist auch gleich ein Leerbeispiel für "mein" inherited. Ohne "inherited" haben alle Forms eine identische (von wem auch immer definiert?) Breite. Die Message gibts zwar schon für jedes Form 1x bevor der Anwender das es zu Gesicht bekommt - aber das ist in meinem Fall nicht kritisch. Vielen Dank für die Antworten und Gute Nacht - Dobru noc!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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