我想让VB窗体小到一定程度(或大到一定程度)就不在改变窗体的大小
Private Sub Form_Resize()
If Me.Width <= 500 * 15 Then Me.Width = 500 * 15
If Me.Height <= 500 * 15 Then Me.Height = 500 * 15
End Sub
用上面的做法可以做到,但是当窗体的高或宽等于500*15的时候,在缩小窗体会看到闪耀的。还有什么好办法可以得到这样的效果吗?等待高人的指点!多谢!!
Private Sub Form_Resize()
If Me.Width <= 500 * 15 Then Me.Width = 500 * 15
If Me.Height <= 500 * 15 Then Me.Height = 500 * 15
End Sub
用上面的做法可以做到,但是当窗体的高或宽等于500*15的时候,在缩小窗体会看到闪耀的。还有什么好办法可以得到这样的效果吗?等待高人的指点!多谢!!
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Const GWL_WNDPROC = (-4)
Public Const WM_GETMINMAXINFO = &H24
Public OldWindowProc As LongType POINTAPI
x As Long
y As Long
End TypeType MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End TypePublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
If Msg = WM_GETMINMAXINFO Then
Dim MinMax As MINMAXINFO
CopyMemory MinMax, ByVal lp, Len(MinMax)
MinMax.ptMinTrackSize.x = 300
MinMax.ptMinTrackSize.y = 200
MinMax.ptMaxTrackSize.x = 640
MinMax.ptMaxTrackSize.y = 480
CopyMemory ByVal lp, MinMax, Len(MinMax)
WndProc = 1
Exit Function
End If
WndProc = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp)
End Function窗口中: 'w = 200: h = 100
OldWindowProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, OldWindowProc)
End Sub
来个简单一点的:Private Sub Form_Resize() If Width > 5000 Then Width = 5000: Enabled = False
Enabled = TrueEnd Sub
OldWindowProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
End Sub