简单
在摸块中为:
Public Const WM_NCHITTEST = &H84
Public Const HTCLIENT = 1
Public Const HTCAPTION = 2
Public Const WM_RBUTTONDOWN = &H204
Public Const GWL_WNDPROC = (-4)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
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic prevWndProc As LongFunction WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIf Msg = WM_RBUTTONDOWN Then
MsgBox "a"
End If
If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
WndProc = HTCAPTION
End IfWndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
'看见了吗将WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)放到这里呀!!!!!
End Function加分吧

解决方案 »

  1.   

    Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIf Msg = WM_RBUTTONDOWN Then
    MsgBox "a"
    End If
    If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
    WndProc = HTCAPTION
    End If'这个必须在最后。
    '如果你自己处理了前面的消息,不希望再由系统处理,还要直接返回,不要执行这一句。
    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
    End Function