Verschieben von Formen ohne Titelleiste
Überall sieht man sie, und fast Überall sind sie auch gern gesehen.
Die Rede ist von Formen ohne Titelleiste. Diese sind weitaus besser zu Designen denn die Titelleiste mit Ihren frei konfigurierbaren Farben lässt da wirklich nicht viel zu
Also stellt man die Titelleiste ab (ich erklär hier mal nicht wie das geht...*gg*) und läßt seiner künstlerischen Ader freien lauf.
Doch wie läßt diese Form sich jetzt verschieben? Wo doch Windows so arg aufpasst, damit dieses nur mit derTitelleiste geht...
Die Antwort lautet (wie so oft) "SendMessage".
Deklaration:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Const HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1
Im Ereigniss Form_MouseDown sollte der Aufruf dann stehen.
Die Funktion ReleaseCapture benötigt man, um Windows die Kontrolle der Maus zu entziehen.
Danach wird MouseDown auf der Titelleiste simuliert und man kann loslegen.
ReleaseCapture
SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
Eine Besonderheit, die von Vor- und auch von Nachteil sein kann, ist allerdings zu beachten.
Form_MouseDown kommt auch nur auf der Form zum Einsatz, daß heißt, wenn ein Label-Steuerelement darüberliegt, muß in dessen MouseDown-Ereigniss der gleiche Code.
So kann man Natürlich auch Prima bestimmte Bereiche zum Verschieben der Form vorgeben.