PDA

Click to See Complete Forum and Search --> : Move a form with no border


Madboy
Nov 30th, 2003, 11:18 AM
Works for anything else you specify, like say a tab control, pic box etc.

Private OldX As Integer
Private OldY As Integer
Private DragMode As Boolean
Dim MoveMe As Boolean

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

MoveMe = True
OldX = X
OldY = Y

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If MoveMe = True Then
Me.Left = Me.Left + (X - OldX)
Me.Top = Me.Top + (Y - OldY)
End If

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Me.Left = Me.Left + (X - OldX)
Me.Top = Me.Top + (Y - OldY)
MoveMe = False

End Sub

manavo11
Dec 3rd, 2003, 04:41 PM
There is an API way. I'll look for it...

manavo11
Dec 3rd, 2003, 04:46 PM
Here it is :

Option Explicit

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, lParam As Any) As Long

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

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
If Button = vbLeftButton Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub