Let Users Resize Your Controls

You can allow users to resize a controljust like in VB design modewith a mouse, using two simple API calls. You can resize the controltop-left, top, top-right, left, right, bottom-left, bottom, and right. When you make ranges for the mouse coordinates (such as x>0 and x<100), the MouseDown event activates the API functions and sizes your picture box when the mouse moves. This code assumes you have a picture box on the form:

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
Private Const WM_NCLBUTTONDOWN = &HA1
' You can find more of these (lower) in the API Viewer. Here
' they are used only for resizing the left and right.
Private Const HTLEFT = 10
Private Const HTRIGHT = 11
Private Sub Picture1_MouseDown(Button As _
Integer, Shift As Integer, X As Single, Y As Single)
Dim nParam As Long
With Picture1
' You can change these coordinates to whatever
' you want
If (X > 0 And X < 100) Then
nParam = HTLEFT
ElseIf (X > .Width - 100 And X < .Width) Then
' these too
nParam = HTRIGHT
End If
If nParam Then
Call ReleaseCapture
Call SendMessage(.hWnd, _
WM_NCLBUTTONDOWN, nParam, 0)
End If
End With
End Sub
Private Sub Picture1_MouseMove(Button As _
Integer, Shift As Integer, X As Single, Y As Single)
Dim NewPointer As MousePointerConstants
' You can change these coordinates to whatever you want
If (X > 0 And X < 100) Then
NewPointer = vbSizeWE
ElseIf (X > Picture1.Width - 100 And X < _
Picture1.Width) Then ' these too
NewPointer = vbSizeWE
Else
NewPointer = vbDefault
End If
If NewPointer <> Picture1.MousePointer Then
Picture1.MousePointer = NewPointer
End If
End Sub