我目前正忙着在像Windows XP的C ++应用程序这样的游戏中改变鼠标光标。
要更改光标,我正在使用SetCursor()
并传入正在工作的所需光标。但是,在调用PeekMessage()
的while循环期间,光标会一直重置为默认箭头。
这是令人讨厌的循环:
MSG msg;
while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
调试时我发现在调用PeekMessage()
期间光标发生变化,之后msg.message == 0x200,这应该使消息成为其中之一:
WM_MOUSEFIRST = 0x200
WM_MOUSEMOVE = 0x200
我无法找到有关原因发生的任何信息,也没有使用Windows消息的经验。
感谢。
修改
根据here,系统每次鼠标移动时重绘类光标,有效地将其设置回默认光标。考虑到这一点,我将其添加到窗口消息回调函数:
case WM_SETCURSOR:
return 0;
问题解决了。
答案 0 :(得分:0)
你是如何调试的?除非您使用SoftIce或其他不共享Windows鼠标指针的应用程序,否则很难将调试器与应用程序隔离开来。