
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中怎么获取鼠标点击某个控件时,它对于这个控件来说的时的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)