|
|
![]() |
|
||
|
|
|||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||
| Visual Basic
Window/Form Routines ReleaseCapture: Simulating a Working Size-Grip on a VB Form |
||
| Posted: | Tuesday January 21, 2003 | |
| Updated: | Monday December 26, 2011 | |
| Applies to: | VB4-32, VB5, VB6 | |
| Developed with: | VB6, Windows XP | |
| OS restrictions: | None | |
| Author: | Michael Cole, VBnet - Randy Birch | |
| Related: |
SendMessage: Creating a Scrollable Viewport to Simulate a Scrollable Form SendMessage: Move Controls to Simulate Form Scrolling ReleaseCapture: Simulating a Working Size-Grip on a VB Form |
|
| Prerequisites |
| None. |
|
|
Every once in a while a really
cool workaround is presented in the
msnews groups. Here, Michael Cole's code from
microsoft.public.vb.general.discussion shows how to use a label and a
simple API call to
display a simulated form resizing handle on a form using Windows' Marlett
font, and how to react to a click and drag to resize
the form. |
| BAS Module Code |
| None. |
|
|
| Form Code |
|
|
| Add a label (Label1) to a form; all code to set up, position and use the fake size grip is below: |
|
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 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
Private Const HTBOTTOMRIGHT = 17
Private Sub Form_Load()
With Label1
.ForeColor = &H80000015
.BackStyle = vbTransparent
.AutoSize = True
.Font.Size = 12
.Font.Name = "Marlett"
.Caption = "o"
.Font.Bold = False
End With
End Sub
Private Sub Form_Resize()
Label1.Move Me.ScaleLeft + Me.ScaleWidth - (Label1.Width + 40), _
Me.ScaleTop + Me.ScaleHeight - (Label1.Height + 40)
End Sub
Private Sub Label1_MouseDown(Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
If Button = vbLeftButton Then
ReleaseCapture
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0
End If
End Sub
Private Sub Label1_MouseMove(Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
Label1.MousePointer = 8
End Sub |
| Comments |
| Remember that since a label is lower on the graphics ZOrder than other windowed controls, sizing such that the label becomes obscured will cause it to fall behind other windowed controls.. |
|
|
|
|
|
|||||
|
|||||
|
|
|||||
|
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |
![]() |