WndProc = HTCAPTION 巴消息给吞了
WM_NCHITTEST 他们较常量

解决方案 »

  1.   

    我说明一下 这个程序是在一个没有标题框的窗口上用鼠标可以拖动 再在窗体上单击右键 可以显示出"a"
    窗体代码为:
    Private Sub Form_Load()
       prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
       SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
    End SubPrivate Sub Form_Unload(Cancel As Integer)
     SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
    End Sub
    并且 FORM1.BORDERSTYLE=0
      

  2.   

    你用的是debug.print 'a'可能在程序运行时是在立即窗口上显示
      

  3.   

    搞定了!
    不过注意!换一个常量。Public Const WM_NCLBUTTONDOWN = &HA1
    Public Const WM_NCRBUTTONDOWN = &HA4Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = WM_NCRBUTTONDOWN Then
        MsgBox "RBUTTONDOWN"
    End If
    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
    If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
        WndProc = HTCAPTION
    End If
    End Function