【问题标题】:c++ set a cursor using SetCursorc++ 使用 SetCursor 设置游标
【发布时间】:2010-08-24 05:48:11
【问题描述】:

好的,我在循环中设置了一个光标,它可以工作,但是当我移动光标时,它只是变回原来的样子。我用的是win32 api,我用过
SetCursor(LoadCursor(hInstance, MAKEINTRESOURCE(IDC_PROTECTED)));
任何想法

【问题讨论】:

    标签: c++ visual-c++ winapi cursor


    【解决方案1】:

    IIRC,您想致电 SetCursor 以响应 WM_SETCURSOR。如果没有记忆,如果窗口类的游标成员设置为 NULL,游标也将保持您设置的状态。

    【讨论】:

    • 试过哪个——将类光标设置为NULL,还是调用SetCursor响应WM_SETCURSOR?在后一种情况下,您还需要从消息处理程序返回TRUE。我刚刚快速检查了对WM_SETCURSOR 的回复,效果非常好。
    • 当我注册窗口时,我已经将它设置为我的光标,但是当它运行时我看到一个沙漏光标,而不是当我将它设置为我的另一个光标时它可以工作。如果我取出 WM_CURSOR,第一个光标可以工作,但第二个不会留下
    【解决方案2】:

    是的。 DefWindowProc() 正在更改它。

    如果您想在窗口上使用不同的光标,请使用 SetClassLong(),或者在调用 RegisterClass 时更改 WNDCLASS 的 hCursor 字段(如果您自己调用它的人)

    【讨论】:

    • 当事件发生时程序启动时我不会改变光标
    • @Ramiz:这与调用 SetClassLong() 的建议有何矛盾? (实际上,您希望 SetClassLongPtr(GCLP_HCURSOR) 兼容 64 位,但这是一个细节)
    【解决方案3】:

    也许你可以在 WM_MOUSEMOVE 中尝试 setcursor。

    【讨论】:

    • 在效率方面的建议非常糟糕(笔记本电脑电池电量等)。
    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2011-10-10
    • 2013-03-13
    • 2010-09-15
    • 2012-02-19
    • 2023-03-30
    • 2016-10-24
    相关资源
    最近更新 更多