有关GetCursorPos的返回值
是这样的,我想用Win32汇编实现这样一个功能:如果鼠标在窗口的某个特定范围内双击,则执行特定的某段代码。即,在窗口范围内接收到鼠标双击事件时,用GetCursorPos...
是这样的,我想用Win32汇编实现这样一个功能:如果鼠标在窗口的某个特定范围内双击,则执行特定的某段代码。
即,在窗口范围内接收到鼠标双击事件时,用GetCursorPos得到此时鼠标的坐标,如果这个坐标落在特定范围内,就执行某某代码。
但是写好后出现了这样的问题:当屏幕分辨率改变时,原来可以正确实现这个功能的代码,就不可以了。修改一下范围值,又能实现了。甚至当屏幕分辨率不改变,只是移动了窗口,也会出错。
书上说GetCursorPos返回的是光标的坐标值,是一个POINT型结构体,而POINT型结构体是这样定义的
typedef struct tagPOINT { // pt
LONG x;
LONG y;
} POINT;
不过,我还是不大明白,这个坐标值是什么意思?是以什么为单位或者基准的?它和分辨率有什么关系吗? 展开
即,在窗口范围内接收到鼠标双击事件时,用GetCursorPos得到此时鼠标的坐标,如果这个坐标落在特定范围内,就执行某某代码。
但是写好后出现了这样的问题:当屏幕分辨率改变时,原来可以正确实现这个功能的代码,就不可以了。修改一下范围值,又能实现了。甚至当屏幕分辨率不改变,只是移动了窗口,也会出错。
书上说GetCursorPos返回的是光标的坐标值,是一个POINT型结构体,而POINT型结构体是这样定义的
typedef struct tagPOINT { // pt
LONG x;
LONG y;
} POINT;
不过,我还是不大明白,这个坐标值是什么意思?是以什么为单位或者基准的?它和分辨率有什么关系吗? 展开
展开全部
MSDN有这样一段话“This function retrieves the cursor's position, in screen coordinates. ”就是它返回的坐标是以你屏幕左上角的基点的,你的程序会出现这样的问题很有可能是因为你的代码写在某个窗口类里面,窗口类它默认的参考坐标系是它的客户区,所以在判断之前用ScreenToClient等函数把它们设置在同一个参考坐标系内就可以了
另外,你的问题跟分辨率应该是没关系,分辨率只是改变了显示平面的大小,坐标系不会发生变化
另外,你的问题跟分辨率应该是没关系,分辨率只是改变了显示平面的大小,坐标系不会发生变化
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询