我目前正忙于在 Windows XP 的 C++ 应用程序等游戏中更改鼠标光标。
要更改我正在使用的光标SetCursor()
并传入所需的光标,该光标正在工作。但是,在调用游标的 while 循环期间,PeekMessage()
不断重置为默认箭头。
这是有问题的循环:
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 消息的经验。
谢谢。
编辑:
根据此处,每次鼠标移动时系统都会重新绘制类光标,从而有效地将其设置回默认光标。考虑到这一点,我将其添加到窗口消息回调函数中:
case WM_SETCURSOR:
return 0;
问题解决了。