PeekMessage()重置鼠标光标

时间:2009-12-04 01:51:19

标签: c++ cursor peekmessage

我目前正忙着在像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;

问题解决了。

1 个答案:

答案 0 :(得分:0)

你是如何调试的?除非您使用SoftIce或其他不共享Windows鼠标指针的应用程序,否则很难将调试器与应用程序隔离开来。