gpt4 book ai didi

c++ - PeekMessage() 重置鼠标光标

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:12 26 4
gpt4 key购买 nike

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

问题解决了。

最佳答案

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

关于c++ - PeekMessage() 重置鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1844404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com