SetCursor函数只能暂时设置光标样式,当鼠标移动时,光标恢复为箭头。因此不能在移动响应函数中调用此函数,会产生闪烁。
SetClassLong()函数才能保证设置新光标后,以后一直是新光标。但是本控件中,使用此函数设置,依然不行,鼠标移动还是闪烁。
换另外一种思路,查找光标变换消息。只要鼠标移动OnMouseMOve就会自动发送 WM_SETCURSOR消息。默认情况下,此消息会设置光标为箭头。因此重写此消息响应函数。在响应函数中进行光标设置。且要在其默认调用函数前返回,否则继续变回箭头。
SetClassLong()函数才能保证设置新光标后,以后一直是新光标。但是本控件中,使用此函数设置,依然不行,鼠标移动还是闪烁。
换另外一种思路,查找光标变换消息。只要鼠标移动OnMouseMOve就会自动发送 WM_SETCURSOR消息。默认情况下,此消息会设置光标为箭头。因此重写此消息响应函数。在响应函数中进行光标设置。且要在其默认调用函数前返回,否则继续变回箭头。
本文介绍了一个解决在应用程序中光标闪烁问题的方法,通过重写WM_SETCURSOR消息响应函数,确保鼠标移动时始终显示所需光标样式。详细解释了SetCursor与SetClassLong函数的局限性,并提供了替代方案。
1048

被折叠的 条评论
为什么被折叠?



