当前位置:  开发笔记 > 开发工具 > 正文

鼠标移动后,SetCursor恢复

如何解决《鼠标移动后,SetCursor恢复》经验,为你挑选了2个好方法。

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

// member on some class
HCURSOR _cursor;

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

// in some function
SetCursor(_cursor);

当我这样做时,光标确实会改变,但在第一个鼠标移动消息时,它会变回默认的系统箭头光标.这是项目中设置光标的唯一代码.我需要做什么才能使光标保持原样?



1> Joe Ludwig..:

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

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

// defined somewhere
HWND windowHandle;
HCURSOR cursor;

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

如果您使用第二种方法,则必须同时调用两种方法SetCursor,SetClassLong否则在下一次鼠标移动之前,光标将不会更新.



2> Mark Ransom..:

您需要响应Windows消息WM_SETCURSOR.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有