| If Shift is pressed, the MouseDown event handler starts dragging the control. 
The MouseMove event handler determines the control's new position, making sure it stays on the form, and repositions the control accordingly.
 
The MouseUp event handler ends the drag.
               | 
              
              
                | ' Start dragging.
Private Sub Picture1_MouseDown(Button As Integer, Shift As _
    Integer, X As Single, Y As Single)
    If Shift And vbShiftMask Then
        m_Dragging = True
        m_StartX = X
        m_StartY = Y
    End If
End Sub
' Continue dragging.
Private Sub Picture1_MouseMove(Button As Integer, Shift As _
    Integer, X As Single, Y As Single)
Dim new_x As Single
Dim new_y As Single
    If Not m_Dragging Then Exit Sub
    new_x = Picture1.Left + (X - m_StartX)
    If new_x < 0 Then
        new_x = 0
    ElseIf new_x > ScaleWidth - Picture1.Width Then
        new_x = ScaleWidth - Picture1.Width
    End If
    new_y = Picture1.Top + (Y - m_StartY)
    If new_y < 0 Then
        new_y = 0
    ElseIf new_y > ScaleHeight - Picture1.Height Then
        new_y = ScaleHeight - Picture1.Height
    End If
    Picture1.Move new_x, new_y
End Sub
' End dragging.
Private Sub Picture1_MouseUp(Button As Integer, Shift As _
    Integer, X As Single, Y As Single)
    If m_Dragging Then m_Dragging = False
End Sub |