定义如下函数
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If hwnd = Form1.hwnd Then
WndProc = CallWindowProc(prevWndProc(0), hwnd, Msg, wParam, lParam)
If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
If Form1.IsInImage(lParam Mod 65536, lParam \ 65536) Then
WndProc = HTCAPTION
End If
End If
Else
If Msg = WM_RBUTTONDOWN Then
Msg = WM_LBUTTONDOWN
End If
WndProc = CallWindowProc(prevWndProc(1), hwnd, Msg, wParam, lParam)
End If
End Function
在 form_load 中
Private Sub Form_Load()
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
这可以屏蔽掉右键
我想不用API就可以解决,可以用如下的方法:
Private Sub Control_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)'Control为你用到的控件的名称
if button = vbRightButton then
Control.disable 屏蔽掉右键
Control.enable 恢复右键
end if
End Sub
例如屏蔽Text控件的右键:
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single
If Button = vbRightButton Then
Text1.Enabled = False '屏蔽掉右键的功能
Text1.Enabled = True '恢复右键的功能