1

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

问题解决了。

4

1 回答 1

0

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

于 2009-12-04T01:55:36.380 回答