在窗口中 Option ExplicitPrivate Sub Command1_Click() Form2.Show End SubPrivate Sub Form_Load() 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 在模块中Option ExplicitDeclare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long 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
Option ExplicitPrivate Sub Command1_Click()
Form2.Show
End SubPrivate Sub Form_Load()
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
在模块中Option ExplicitDeclare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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
怎么回事??
不就可以了?