form1代码:
Private Sub Form_Load()
HookForm Me.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnHookForm Me.hWnd
End Sub
Moudle1代码:
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 Const WM_FormMoving = 561
Private Const WM_FormFinishMove = 562
Private Const GWL_WNDPROC = (-4)
Dim PrevProc As Long
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(PrevProc, hWnd, uMsg, wParam, lParam)
Select Case uMsg
Case WM_FormMoving
Form1.Caption = "窗体移动中"
Case WM_FormFinishMove
Form1.Caption = "移动完成"
End Select
End Function
Public Sub HookForm(ByVal hWnd As Long)
PrevProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(ByVal hWnd As Long)
SetWindowLong hWnd, GWL_WNDPROC, PrevProc
End Sub