screentoclient

时间:2024-06-06 13:35:16编辑:小早

VC++6.0 如何获取窗口客户区域在屏幕中的位置

GetWindowRect() 得到的是在屏幕坐标系下的RECT(即以屏幕左上角为原点)

GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0)

ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。

如果需要获得窗体在屏幕上的位置,使用GetWindowRect

如果需要获得窗体的大小,使用GetClientRect


游戏窗口的鼠标坐标和实际的坐标不一致,怎么换算?

这个有很多种写法
写法一

1 先将鼠标指向游戏窗口获取游戏窗口句柄
Hwnd = Plugin.Window.MousePoint()

2建立一个动态数组
dim MyArray

3通过获取到的句柄Hwnd得到游戏窗口大小

sRect = Plugin.Window.GetClientRect(Hwnd)


4通过数组分割函数将得到的坐标分割为两组
MyArray = Split(sRect, "|")


5,通过类型转换函数将得的坐标转换为LNG并赋值
Ux = Clng(MyArray(0))
Uy= Clng(MyArray(1))

假如普通抓点坐标为100,100 则游戏内坐标为 100-Ux 100-Uy

完整代码
Hwnd = Plugin.Window.MousePoint()

sRect = Plugin.Window.GetClientRect(Hwnd)

dim MyArray
MyArray = Split(sRect, "|")

Ux = Clng(MyArray(0))
Uy= Clng(MyArray(1))

写法二

利用ScreenToClient(hwnd,x,y) 函数,转换实际坐标和窗口坐标
首先
1 先将鼠标指向游戏窗口获取游戏窗口句柄
Hwnd = Plugin.Window.MousePoint()
2将原来抓点的值代入ScreenToClient(hwnd,x,y) 函数则可以得到窗口坐标

示例:
x = 100:y = 100
dm_ret = dm.ScreenToClient(hwnd,x,y)
这里利用了大漠插件的功能,实际上按键自带的VB函数就可以完成。

还有其它许多写法,对于新手来说,这两种就已经够用了


vc++如何获得鼠标指针在窗口中的位置?

1、在打开的ie浏览器窗口右上方点击齿轮图标,选择“Internet选项”,如下图所示:2、在打开的Internet选项窗口中,切换到安全栏,在安全选卡中点击“自定义级别”,如下图所示:3、在“安全设置-Internet 区域”界面找到“Java 小程序脚本”、“活动脚本”,并将这两个选项都选择为“禁用”,然后点击确定,如下图所示:

vb怎么获取鼠标的屏幕坐标

函数功能:该函数检取光标的位置,以屏幕坐标表示。
函数原型:BOOL GetCursorPos(LPPOINT lpPoint);
参数:
IpPoint:POINT结构指针,该结构接收光标的屏幕坐标。
Visual Basic 6.0 函数声明:
[Public/Private] Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
使用时要先定义一个数据结构:
Public Type POINTAPI
x As Long
y As Long
End Type
例如:
Dim biao as POINTAPI
GetCursorPos biao
那么biao.x用来存放当前光标的x轴坐标,biao.y用来存放当前y轴的坐标。
返回值:如果成功,返回值非零;如果失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。


MFC中如何得到对话框客户区中鼠标点下位置的坐标,具体代码。我的对话框中有一个图片,需要知道点下w

//在对话窗标题处实时显示客户区内鼠标的坐标void CTestDlg::OnMouseMove(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultCString str;str.Format("X:%d Y:%d", point.x, point.y); //格式化鼠标坐标点信息并保存到CString型变量str中SetWindowText(str); //更新程序窗口Edit控件文本CDialog::OnMouseMove(nFlags, point);}//单击鼠标时,显示鼠标在客户区内的坐标void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultCString str;str.Format("x = %d, y = %d", point.x, point.y);AfxMessageBox(str,MB_ICONQUESTION);CDialog::OnLButtonDown(nFlags, point);}

上一篇:掘金勇士3366

下一篇:米尚优品官网