vbs实现“当在应用中单击左键时,获得鼠标在应用中的坐标”

vbs实现“当在应用中单击左键时,获得鼠标在应用中的坐标”,第1张

Private Sub 控件名_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

End Sub

x,y 分别返回在控件上的位置

要返回桌面上鼠标的位置:

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

dim zuobiao as POINTAPI

GetCursorPos zuobiao

'以下在模块中

Public Type POINTAPI

x As Long

y As Long

End Type

API:

GetForegroundWindow 可以获取到有焦点的顶层窗口。

获取有焦点的子窗口只能用GetFocus,但是如果当前顶层窗口属于其他线程,GetFocus将返回NULL。没有好的办法解决,除非AttachThreadInput或者用钩子(HOOK)。

两种方法:

1在pictureBox1的MouseDown事件里得到坐标

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

int x = eX;

int y = eY;

}

//x,y就是相对pictureBox1的坐标,

2先得到相对于屏幕的坐标,然后通过pictureBox1PointToClient()转换到相对于pictureBox1的坐标:

Point mx = MousePosition;

Point mx2 = pictureBox1PointToClient(mx);

//mx2就是相对pictureBox1的坐标,

CRect r(0,0,100,100); //控件区域

CPoint pt(0,0);

ScreenToClient(&r);

ScreenToClient(&pt);

控件不会默认捕获鼠标消息,因此处理代码放在对话框的OnLButtonDown这样的鼠标消息中即可。

鼠标消息函数会默认带入鼠标位置,而框的位置可以通过控件变量或指针的GetWindowRect获取。

之后通过rectPtInRect(point)函数即可判断鼠标是否在上,至于上的具体位置,就需要你通过CRect或者CRgn来一一记录了(这并不太容易),之后依然是通过PtInRect和CRgn的PtInRegion来判断是否在区域(这需要一个循环语句)。

至于显示另一个,通过CBitmap导入资源后,就是控件的SetBitmap就可以了。

以上就是关于vbs实现“当在应用中单击左键时,获得鼠标在应用中的坐标”全部的内容,包括:vbs实现“当在应用中单击左键时,获得鼠标在应用中的坐标”、VB获取窗口下,鼠标光标位置所在的控件句柄、在winform中怎么获取鼠标点击某个控件时,它对于这个控件来说的时的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9346926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存