Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Advanced
Jun 12, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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 Long
Private Declare Sub ReleaseCapture Lib "User32" ()

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, _
    Y As Single)
    Const HTCAPTION = 2
    If Button = 1 Then
        SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
    End If
End 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.
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date