Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ peek message()重置鼠标光标_C++_Cursor_Peekmessage - Fatal编程技术网

C++ peek message()重置鼠标光标

C++ peek message()重置鼠标光标,c++,cursor,peekmessage,C++,Cursor,Peekmessage,我现在在改变一个像C++应用程序的Windows XP游戏中的鼠标光标。p> 要更改光标,我正在使用SetCursor()并传入所需的光标,该光标正在工作。但是,在调用peek message()的while循环中,光标会不断重置回默认箭头 这是有问题的循环: MSG msg; while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMes

我现在在改变一个像C++应用程序的Windows XP游戏中的鼠标光标。p> 要更改光标,我正在使用
SetCursor()
并传入所需的光标,该光标正在工作。但是,在调用
peek message()
的while循环中,光标会不断重置回默认箭头

这是有问题的循环:

MSG  msg;
while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
    TranslateMessage( &msg );
    DispatchMessage( &msg );
}
调试时,我发现在调用
peek message()
期间光标发生了变化,之后msg.message==0x200,这将使消息成为以下消息之一:

WM_MOUSEFIRST = 0x200
WM_MOUSEMOVE = 0x200
我还没有找到任何关于为什么会发生这种情况的信息,也没有使用windows消息的经验

谢谢

编辑:

根据这一点,每次鼠标移动时,系统都会重新绘制类光标,有效地将其设置回默认光标。考虑到这一点,我将其添加到窗口消息回调函数中:

case WM_SETCURSOR:
    return 0;

问题已解决。

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

我只是使用键盘进行调试。鼠标停留在应用程序窗口上。这样我就可以看到它在代码中的变化。我认为这是不可靠的。调试器仍在影响指针。如果在不调试的情况下运行应用程序会发生什么?那么它不起作用了吗?它仍然会发生。如果我
system(“pause”)
在消息循环后启动应用程序,我可以看到光标已更改,因此尽管特定消息可能不正确,但它仍必须发生在那里的某个地方。您是否遵循管理光标形状的规则?请特别注意,当您完成后,将其更改回原来的状态。嘿,链接不错。尽管我已经阅读了该页面,但这一部分现在很突出:“如果类游标不为NULL,则每次移动鼠标时系统都会恢复类游标”,这正是发生的情况。谢谢你!