代码之家  ›  专栏  ›  技术社区  ›  0xC0DEFACE

peek message()重置鼠标光标

  •  1
  • 0xC0DEFACE  · 技术社区  · 16 年前

    SetCursor() 并传入所需的光标,该光标正在工作。但是在while循环中 PeekMessage() 称为光标不断重置回默认箭头。

    MSG  msg;
    while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
    

    调试时,我发现在调用时光标发生了变化 peek消息() 在此之后,msg.message==0x200,这将使消息成为以下消息之一:

    WM_MOUSEFIRST = 0x200
    WM_MOUSEMOVE = 0x200
    

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

    谢谢

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

    case WM_SETCURSOR:
        return 0;
    

    问题解决了。

    1 回复  |  直到 14 年前
        1
  •  0
  •   wallyk    16 年前