我想在窗口子类化的时候捕获窗口移动的消息,
我认为是当用鼠标移动窗口的时候应该产生WM_MOVING消息
但下面的写法没有办法收到正在移动的消息,其大家指教要怎么写。'新建一个模块加入
Option Explicit
Public OldWinProc As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPublic Const GWL_WNDPROC = (-4)
Private Const WM_MOVING As Long = &O216
Private Const WM_PAINT As Long = &HF
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 LongPublic Function MYWinProc(ByVal hwnd As OLE_HANDLE, _
                                             ByVal Msg As OLE_HANDLE, _
                                             ByVal wp As OLE_HANDLE, _
                                             ByVal lp As Long) As Long    If Msg = WM_PAINT Then
        Debug.Print "paint"
    End If    If Msg = WM_MOVING Then'这个消息移动窗口的时候收不到
        Debug.Print "Moving"
    End If    MYWinProc = CallWindowProc(OldWinProc, hwnd, Msg, wp, lp)End Function''新建一个Form 在load事件中加入加入
''先取得窗口函数的地址保存
OldWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
''用MYWinProc代替窗口函数处理消息
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf MYWinProc)