我的窗体上面有很多控件,我想在窗体上面任何地方(包括控件上面)右击鼠标,都去执行一个函数?

p2227 2008-12-03 09:40:02
网上大概搜索了一个是用API的了,但我对于VB中如何用API一窍不通,
我已经找到这些

Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

函数功能:该函数综合鼠标击键和鼠标动作。

函数原型:VOID mouse_event(DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, DWORD dwExtraInfo);

参数:

dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下列值的任何合理组合:

MOOSE_EVENTF_ABSOLOTE:表明参数dX,dy含有规范化的绝对坐标。如果不设置此位,参数含有相对数据:相对于上次位置的改动位置。此标志可被设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参见下面备注部分。

MOOSEEVENTFMOVE:表明发生移动。

M00SEEVENTF_LEFTDOWN:表明接按下鼠标左键。

M00SEEVENTF_LEFTUP:表明松开鼠标左键。

MOOSEEVENTF_RIGHTDOWN:表明按下鼠标右键。

MOOSEEVENTF_RIGHTUP:表明松开鼠标右键。

MOOSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。

MOOSEEVENTF_MIDDLEUP:表明松开鼠标中键。




Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
这句话放在哪里,如何执行我都不知道呀

之前我只是知道 肯定可以实现如标题所示的功能,然后又搜索到API,仅此而已,所以请不要讲得很简单
...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SYSSZ 2008-12-04
  • 打赏
  • 举报
回复
是把右看成了左
p2227 2008-12-04
  • 打赏
  • 举报
回复
楼上说反了
SYSSZ 2008-12-03
  • 打赏
  • 举报
回复
文本框的右键菜单是定制的没法,其实只要左键就行了,右键是多余的可将
If x = -32767 Then
Call YY'调用函数yy
Exit Sub
End If
删除
p2227 2008-12-03
  • 打赏
  • 举报
回复
呃……上面这个……在文本框上面右击不弹出msgbox 而是弹出那个复制,撤消的菜单可以吗?
SYSSZ 2008-12-03
  • 打赏
  • 举报
回复
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetCapture Lib "user32" () As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
x = ReleaseCapture()
MsgBox x
End If
End Sub
Private Sub Form_Load()
Timer1.Interval = 100
GetCapture
End Sub

Private Sub Timer1_Timer()
x = GetAsyncKeyState(1) '获得左键状态
If x = -32767 Then
Call XX'调用函数XX
Exit Sub
End If
x = GetAsyncKeyState(2) '获得右键状态
If x = -32767 Then
Call YY'调用函数yy
Exit Sub
End If

End Sub

Private Function XX()
MsgBox "我点击了左键!"
End Function

Private Function YY()
MsgBox "我点击了右键!"
End Function
xzdgy 2008-12-03
  • 打赏
  • 举报
回复
帮顶
filec75 2008-12-03
  • 打赏
  • 举报
回复
帮顶

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧