我正在处理 Win32 控件。此控件上可能有数百个“项目”。这些不是窗口,而是内部对象(例如:矩形)。根据鼠标位置,我想更改鼠标光标。没关系,我可以使用 WM_SETCURSOR。
同时基于鼠标移动,我想显示一个状态栏,显示当前鼠标下对象的详细信息。为此,我可以使用 WM_MOUSEMOVE。
因为可能有数百个项目,移动所有项目在鼠标下找到一个,效率不高,尤其是两次(一次用于设置光标,一次用于鼠标移动)。
简而言之,你知道 WM_SETCURSOR 和 WM_MOUSEMOVE 是否是 永远 成对?在这种情况下,我可以在 WM_SETCURSOR 期间计算我想要的。另一种选择是在 WM_MOUSEMOVE 期间设置鼠标光标,但据我所知,这不是一个好的解决方案(会闪烁)。
谢谢
最佳答案
你也可以试试 GetMessagePos()
(给出光标屏幕坐标),然后 MapWindowPoints()
看看它是否在热矩形或类似的东西中。
关于winapi - Win32 WM_SETCURSOR、WM_MOUSEMOVE 总是成对的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194133/