Dragging caption-less forms

Dragging caption-less forms

The standard way to move a captionless form is to execute some tricky code from within the MouseDown event procedure. More advanced VB developers can reach the same result by setting up a subclassing procedure to fool the form into believing that the user had clicked on its title bar.

There’s a solution halfway, though, that exploits the WM_NCBUTTONDOWN message but doesn’t resort to subclassing:

Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal _    hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _    lParam As Any) As LongPrivate Declare Sub ReleaseCapture Lib "User32" ()Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, _    Y As Single)    Const WM_NCLBUTTONDOWN = &HA1    Const HTCAPTION = 2    If Button = 1 Then        ReleaseCapture        SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&    End IfEnd Sub

This trick only works if the mouse is clicked on the form, so that the user’s action can be trapped in the form’s MouseDown event. If you want to drag the form wherever the mouse is clicked you must use a subclassing technique.


Share the Post: