如何获取鼠标点击的坐标

时间:2023-01-20 21:20:21
想获取鼠标在当前软件窗口点击的相对坐标。

因为想在菜单栏添加单击事件,但是菜单貌似只有子菜单可以添加事件。
所以想获取鼠标点击的坐标 做相应的处理。)

处理OnLButtonDown可以获得鼠标点击坐标 但是不能获取 菜单栏 标题栏等地方的坐标。

9 个解决方案

#1


WIN32中鼠标点击消息结构中有点击时的x y坐标值

#2


引用 1 楼 mydo 的回复:
WIN32中鼠标点击消息结构中有点击时的x y坐标值


但是那个如果点击的是菜单栏和标题栏 消息就不响应了啊

#3


在定时器或线程里 一直获取鼠标坐标(GetCursorPos)和窗口所在位置 如果鼠标在窗口内且发生了点击事件 do something

#4


WM_NCLBUTTONDOWN   有NC的消息表示非客户区的

#5


引用 4 楼 lang14 的回复:
WM_NCLBUTTONDOWN   有NC的消息表示非客户区的


用这个可以获取相对桌面的坐标 请问如何获取相对于窗口的坐标呢

#6


引用 5 楼 haohui321 的回复:
引用 4 楼 lang14 的回复:
WM_NCLBUTTONDOWN   有NC的消息表示非客户区的

用这个可以获取相对桌面的坐标 请问如何获取相对于窗口的坐标呢

screentoclient()

#7


GetCursorPos获取绝对坐标,screentoclient()转换为需要的相对坐标!

#8


楼上几位都讲的比较全了。

注意screentoclient和clienttoScreen的转换。菜单弹出是需要屏幕坐标的。

#9


你的设计初衷是想在按下鼠标左键后获得鼠标位置。
问题的根本原因并不是鼠标位置不好获取(获取鼠标位置很容易),而是菜单标题栏无法响应LButtonDown消息事件,导致无法得知何时来获取这个坐标。

局部钩子HOOK鼠标LButtonDown获取坐标。

#1


WIN32中鼠标点击消息结构中有点击时的x y坐标值

#2


引用 1 楼 mydo 的回复:
WIN32中鼠标点击消息结构中有点击时的x y坐标值


但是那个如果点击的是菜单栏和标题栏 消息就不响应了啊

#3


在定时器或线程里 一直获取鼠标坐标(GetCursorPos)和窗口所在位置 如果鼠标在窗口内且发生了点击事件 do something

#4


WM_NCLBUTTONDOWN   有NC的消息表示非客户区的

#5


引用 4 楼 lang14 的回复:
WM_NCLBUTTONDOWN   有NC的消息表示非客户区的


用这个可以获取相对桌面的坐标 请问如何获取相对于窗口的坐标呢

#6


引用 5 楼 haohui321 的回复:
引用 4 楼 lang14 的回复:
WM_NCLBUTTONDOWN   有NC的消息表示非客户区的

用这个可以获取相对桌面的坐标 请问如何获取相对于窗口的坐标呢

screentoclient()

#7


GetCursorPos获取绝对坐标,screentoclient()转换为需要的相对坐标!

#8


楼上几位都讲的比较全了。

注意screentoclient和clienttoScreen的转换。菜单弹出是需要屏幕坐标的。

#9


你的设计初衷是想在按下鼠标左键后获得鼠标位置。
问题的根本原因并不是鼠标位置不好获取(获取鼠标位置很容易),而是菜单标题栏无法响应LButtonDown消息事件,导致无法得知何时来获取这个坐标。

局部钩子HOOK鼠标LButtonDown获取坐标。