滑鼠訊息攔截一問(編號:8521)

最近在寫一個功能,就是利用listview顯示資料,希望在按下滑鼠右鍵之時,可以同時選到點選的物件又同時彈跳出自訂的功能表列(就像平時使用檔案總管那樣的功能),按下滑鼠右鍵彈跳出自訂功能表列已經完成,可是無法選擇點到的物件(它會留在原Setfocus的物件),故我試著攔截滑鼠訊息,使滑鼠右鍵功能和左鍵功能相同,可是這樣它就不會彈跳出自訂功能表了,我必須在原程式加入怎樣的判斷或做怎樣的修改才能同時完成這兩項功能呢??請各位高手指教一下,以下附上相關程式碼:
Private Sub Form_Load()
preWinProc = GetWindowLong(ListView1.hwnd, GWL_WNDPROC)
  SetWindowLong ListView1.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
模組內宣告
Public Const WM_RBUTTONDOWN = &H204       '宣告WM_RButtondown為滑鼠右鍵按下的值
Public Const WM_LBUTTONDOWN = &H201       '宣告WM_LButtondown為滑鼠左鍵按下的值
Public Const GWL_WNDPROC = (-4)
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) 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
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim K1 As Long
  Select Case Msg
    Case 516
      Msg = WM_LBUTTONDOWN
  End Select
  WndProc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function