回 帖 发 新 帖 刷新版面

主题:[讨论]请教游戏里坐标的获取问题

请那位老师帮助啊;代码如下;

Option Explicit

Dim tPoint As POINTAPI
Dim bxqtHnd As Long

Private Sub Command1_Click()

bxqtHnd = FindWindow(vbNullString, "碧雪情天Online")           '获取程序窗口句柄
Label3.Caption = bxqtHnd

End Sub

Private Sub Timer1_Timer()
Call ScreenToClient(bxqtHnd, tPoint)
Label1.Caption = tPoint.x
Label2.Caption = tPoint.y

End Sub


得到的该游戏里的坐标值却是负数,而且还是不断的变化递增的,
不知是何原因,
还请哪位老师给与指教帮助,感谢了!!!!

回复列表 (共1个回复)

沙发

这是由于你对这个API函数的理解错误造成的。
ScreenToClient是把屏幕指定点的坐标转换为指定窗口的客户区坐标,注意它的作用仅仅是“转换”而不是获取客户区的坐标,所以,你必须先给它一个获取到的屏幕坐标,它才能正确转换。获取屏幕坐标可以使用API函数GetCursorPos。因此在调用ScreenToClient前必须加一句:

GetCursorPos tPoint '获取鼠标指针的当前屏幕位置
ScreenToClient bxqtHnd, tPoint '把屏幕坐标转换成客户区坐标


GetCursorPos的声明:

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

我来回复

您尚未登录,请登录后再回复。点此登录或注册