winapi - Win32 WM_SETCURSOR、WM_MOUSEMOVE 总是成对的?

标签 winapi controls

我正在处理 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/

相关文章:

c++ - 在辅助显示器上工作

wpf - 如何使 WPF slider 仅捕捉到离散整数位置?

c# - WPF WebBrowser控件如何禁用IE的快捷键?

c# - 如何通过以 xamarin 形式绑定(bind)来使用可绑定(bind)属性?

c++ - 我可以依靠TCHAR的定义对我使用的字符集做出正确的假设吗?

c# - 在 C# 中从外部应用程序获取 UI 文本

c++ - 在 Visual Studio 中的单实例 Qt 应用程序版本 5.11.1 中,在每个其他窗口的顶部打开 Qt MainWindow

c++ - 如何在 C++ 中将 Windows DATE 转换为 Unix 时间

c# - 如何在 C# 中将相同的控件添加到多面板中?

c# - IP 地址的字段验证