Option Explicit
'*************************************************************************************************
'******************** 作者: 南宮飄雪 ******************************************
'******************** Email: Joforn@sohu.com ******************************************
'******************** QQ: 42978116 ******************************************
'*************************************************************************************************
Type POINTAPI
X As Long
Y As Long
End Type
Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type
Private 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 Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public Const GWL_WNDPROC = (-4)
Public Const WM_GETMINMAXINFO = &H24
Dim OldProc&
Dim mhWnd&
'==================================================
'回調
Function WinProc&(ByVal hWnd&, ByVal wMsg&, _
ByVal wParam&, ByVal lParam&)
Select Case wMsg&
Case WM_GETMINMAXINFO
Dim MinMax As MINMAXINFO
CopyMemory MinMax, ByVal lParam, Len(MinMax)
MinMax.ptMinTrackSize.x = 500 '這裏設置窗體最小Width(註意這裏尺寸的單位是像素,不是VB常用的緹,下面的也是像素)
MinMax.ptMinTrackSize.y = 500 '這裏設置窗體最小Height
' MinMax.ptMaxTrackSize.x = 808 '這裏設置窗體最大Width
' MinMax.ptMaxTrackSize.y = 250 '這裏設置窗體最大Height
CopyMemory ByVal lParam, MinMax, Len(MinMax)
WinProc& = 1
Exit Function
End Select
WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
End Function
'==================================================
'==================================================
'掛鉤
Sub Hook(ByVal nhWnd&)
mhWnd& = nhWnd&
OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)
End Sub
'==================================================
'在要控制大小的窗體Form_Load事件代碼中添加代碼如下:
Private Sub Form_Load()
Hook Me.hWnd
End Sub