【发布时间】:2009-12-04 01:51:18
【问题描述】:
我目前正忙于在 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;
问题解决了。
【问题讨论】:
标签: c++ cursor peekmessage