用SetWindowLong设置了窗体的消息处理程序后不能够调试!

解决方案 »

  1.   

    兄弟们,就算我把他编译成exe,然后执行,但是还是出错了,还是说,什么什么内存不能读?
    实在看不出有什么问题,请各位帮帮眼,谢谢了!
      

  2.   

    Public prevWndProc As Long
    public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Long) As Long
        Select Case Msg
            Case WM_COMMAND
                If wParam \ 65536 = CBN_CLOSEUP Then
                    If lParam = Form1.Combo1.hwnd Then
                        Form1.Text1 = "CloseUp"
                    End If
                End If
            Case Else
                CallWindowProc prevWndProc, hwnd, Msg, wParam, lParam
        End Select
        
    End Function
    Public Sub main()
        Load Form1
        prevWndProc = GetWindowLong(Form1.hwnd, GWL_WNDPROC)
        SetWindowLong Form1.hwnd, GWL_WNDPROC, AddressOf WndProc
    End Sub
      

  3.   

    这一句的最后一个参数错了,不能采用地址传递,应为值传递Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Long) As Long改为Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long,ByVal lParam As Long) As Long就行了。