加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 鼠标移动后,SetCursor恢复

发布时间:2020-12-14 04:12:35 所属栏目:Windows 来源:网络整理
导读:我正在使用SetCursor将系统光标设置为我自己的图像.代码看起来像这样: // member on some classHCURSOR _cursor;// at init time_cursor = LoadCursorFromFile("somefilename.cur");// in some functionSetCursor(_cursor); 当我这样做时,光标确实会改变,但
我正在使用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.通常情况下,当光标在窗口上时,窗口只会向您发送WM_SETCURSOR,因此您只需在窗口中设置光标.

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

// defined somewhere
HWND windowHandle;
HCURSOR cursor;

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读