Entwickler-Ecke
Windows API - Programm über Komponente verschieben.
a.C.k - Fr 25.10.02 12:23
Titel: Programm über Komponente verschieben.
Hallo,
ich habe vollgendes Problem:
Ich möchte ein Programm schreiben, welches nicht wie ein "normales" Windowsprogramm in einen Fenster läuft. Eine Grafik soll Mein Formular darstellen. Das ist dank "TransparentColor" und "BorderStyle = bsNone" auch kein Problem. Nun Suche ich aber die Möglichkeit, mein Programm zu verschieben, so wie ich es mit dem "Taskbar machen kann". Leider will ich ja genau diesen nicht haben.
Vielen Dank im Vorraus!
Delete - Fr 25.10.02 12:40
Ihre Suchbegriffe, mein Herr, sind (hier oder in einem anderen Forum)
WM_NCHITTEST
htClient
htCaption
:)
a.C.k - Fr 25.10.02 12:46
Vielen Dank, mein Herr
:lol:
a.C.k - Fr 25.10.02 16:30
So, ich bin nun etwas weiter:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.WMNCHITTest(var m: TWMMouse); var P: TPoint; r: TRect; begin r := Form1.BoundsRect; //Delphi Beispiel inherited; P:=Point(m.XPos, m.YPos); if PtInRect(r, ScreenToClient(P)) then m.Result := HTCAPTION ; end; |
Damit schaffe ich es nun, das Formular zu bewegen, in dem ich einfach auf es drauf drücke und die Maus ziehe. Leider klappt das nicht überall auf dem Formular.
Aber mal davon abgesehen...
Ich schaffe es immer noch nicht, das ganza dann einer Komponente anzuhängen.
Klar die Prozedure "procedure TForm1.WMNCHITTest(var m: TWMMouse);" braucht an stelle des TForm1 einen anderen Type aber wie ...
Muss dazu sagen, dass ich mich noch nicht viel mit Systemnahe Programmierung ausenandergesetzt habe.
Vieleicht könnt ihr mir aber trotzdem auf die sprünge helfen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!