RSS
StartseiteKnowledge LibraryTop 10Impressum

4.5 Wie kann ich Formulare ohne Titelleiste verschieben?

Jetzt hat man sein Formular von der Titelleiste befreit und vermisst die Möglichkeit das Formular mit der Maus zu verschieben. Mithilfe der API Funktionen ReleaseCapture und SendMessage lässt sich diese Funktionalität aber ganz schnell wiederherstellen. SendMessage schickt dabei die Nachricht WM_NCLBUTTONDOWN mit dem Parameter HT_CAPTION an das Fenster und gauckelt diesem so einen Mausklick auf die Titelleiste vor:

' Deklaration:
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" _
        Alias "SendMessageA" ( _
        ByVal hWnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        ByRef lParam As Any _
              ) As Long

Private Const WM_NCLBUTTONDOWN As Long = &HA1
Private Const HTCAPTION As Long = 2

Im MouseUp- Ereignis der Form (oder beliebiges Steuerelement) stehen folgen Zeilen:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = vbLeftButton Then
    ReleaseCapture
    SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&
  End If
End Sub