'---------------------------
'  form1中的代码:
'---------------------------
Private Sub Form_Load()
'    Timer1_Timer
    RegisterWindow Me.hwnd 
End SubPrivate Sub Form_Unload(Cancel As Integer)
    unRegisterWindow Me.hwnd 
End Sub'---------------------------
'  modual1中的代码:
'---------------------------
Public Const GWL_WNDPROC As Long = (-4)
Public Const WM_MOUSEWHEEL As Long = &H20A
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) 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 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
Public Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As LongPublic oldproc As LongPublic Function RegisterWindow(hwnd As Long) As Long
    If hwnd <> 0 Then
      oldproc = SetWindowLong(hwnd, -4, AddressOf WndProc)
    End If
End FunctionPublic Function unRegisterWindow(hwnd As Long) As Long
 
    If hwnd <> 0 Then
       SetWindowLong hwnd, -4, oldproc
    End IfEnd FunctionPublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long    '这个函数打印到15的时候就进入死循环了:::::::::::
    Debug.Print "Msg=" & Msg    If Msg = WM_MOUSEWHEEL Then
       '///// 我想在这里屏蔽掉 鼠标滚轮事件,不想处理他
        '写下事件
        If wParam > 0 Then '正数是上
            'SendKeys "{PGUP}"
            Debug.Print "WM_MOUSEWHEEL up"
            MsgBox "WM_MOUSEWHEEL up"
        Else
            'SendKeys "{PGDN}"
            MsgBox "WM_MOUSEWHEEL down"
            Debug.Print "WM_MOUSEWHEEL down"
        End If
        
        'WndProc = -1
        'WndProc = CallWindowProc(WndProc, hwnd, Msg, wParam, lParam)
    Else
        WndProc = CallWindowProc(WndProc, hwnd, Msg, wParam, lParam)
    End If
End Function
'------------------------------------------
上面WndProc函数设置断点后的调试结果:
Msg=1533
Msg=13
Msg=127
Msg=70
Msg=34
Msg=71
Msg=70
Msg=34
Msg=1529
Msg=15
Msg=15
Msg=15
...
之后全是Msg=15 ,而且是死循环,form怎么都显示不出来,一直打印15。请问这是怎么回事?