我正在处理 Win32 控件。此控件上可能有数百个“项目”。这些不是窗口,而是内部对象(例如:矩形)。根据鼠标位置,我想更改鼠标光标。没关系,我可以使用 WM_SETCURSOR。
同时基于鼠标移动,我想显示一个状态栏,显示当前鼠标下对象的详细信息。为此,我可以使用 WM_MOUSEMOVE。
因为可能有数百个项目,移动所有项目在鼠标下找到一个,效率不高,尤其是两次(一次用于设置光标,一次用于鼠标移动)。
简而言之,您知道 WM_SETCURSOR 和 WM_MOUSEMOVE 是否总是成对的吗?在这种情况下,我可以在 WM_SETCURSOR 期间计算我想要的。另一种选择是在 WM_MOUSEMOVE 期间设置鼠标光标,但据我所知,这不是一个好的解决方案(会闪烁)。
谢谢
虽然它们目前可能总是配对出现,但您可能不能依赖这种行为。
你可以在WM_MOUSEMOVE期间设置光标(使用SetCursor),并且它不会闪烁,只要(IIRC),你从WM_SETCURSOR返回TRUE而不做任何事情(即你吃了消息),并且你的窗口没有分配给它的类光标。