gpt4 book ai didi

windows - 鼠标移动后 SetCursor 恢复

转载 作者:可可西里 更新时间:2023-11-01 12:44:50 25 4
gpt4 key购买 nike

我正在使用 SetCursor 将系统光标设置为我自己的图像。代码看起来像这样:

// member on some class
HCURSOR _cursor;

// at init time
_cursor = LoadCursorFromFile("somefilename.cur");

// in some function
SetCursor(_cursor);

当我执行此操作时,光标确实发生了变化,但在收到第一个鼠标移动消息时,它变回了默认的系统箭头光标。这是项目中设置光标的唯一代码。我需要做什么才能使光标保持在我设置的位置?

最佳答案

看来我有两个选择。第一个是Mark Ransom在这里建议的,就是响应windows的WM_SETCURSOR消息,根据鼠标所在的位置,此时调用SetCursor。通常情况下,当光标位于您的窗口上时,Windows 只会向您发送 WM_SETCURSOR,因此您只能在您的窗口中设置光标。

另一个选项是在我调用 SetCursor 的同时为窗口句柄设置默认光标。这会将默认处理程序设置的光标更改为 WM_SETCURSOR。该代码看起来像这样:

// defined somewhere
HWND windowHandle;
HCURSOR cursor;

SetCursor(cursor);
SetClassLong(windowHandle, GCL_HCURSOR, (DWORD)cursor);

如果您使用第二种方法,则必须同时调用 SetCursorSetClassLong,否则您的光标将不会更新,直到下一次鼠标移动。

关于windows - 鼠标移动后 SetCursor 恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169155/

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