自动隐藏鼠标

mayudong1 2014-04-22 03:35:11
最近做一个东西需要有自动隐藏鼠标的功能
本来觉得挺简单的,不就是ShowCursor的调用吗

可用起来发现还有一个什么计数的问题

最初现在是这么做的
1. 启动一个定时器,到时间后就调用ShowCursor(false)隐藏鼠标
2. 在mousemove消息响应中调用ShowCursor(true)来显示鼠标

但发现mousemove消息每次调用会导致那个计数增加,要想再次隐藏需要调用相同数量的false

然后又改成
CURSORINFO stInfo;
stInfo.cbSize = sizeof(stInfo);
BOOL bRet = GetCursorInfo(&stInfo);
if(bRet && stInfo.flags == CURSOR_SHOWING)
{
ShowCursor(FALSE);
}
这样子的在调用ShowCursor之前先判断鼠标状态

可又发现当窗口没有焦点时还会不停的调用ShowCursor(FALSE)

再有就是如果弹出一个模态对话框后,当鼠标隐藏了在这个对话框上也就看不到鼠标了

希望大家给提供一个比较好的方法能自动隐藏鼠标
...全文
149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2014-04-22
  • 打赏
  • 举报
回复
// 加个静态变量记录鼠标显示状态 static BOOL cursorState = TRUE;
mayudong1 2014-04-22
  • 打赏
  • 举报
回复
引用 3 楼 BeanJoy 的回复:
调用ShowCursor(TRUE)和ShowCursor(FALSE)不是你自己写程序控制的吗,用个变量记录是鼠标的状态,在调用前判断一下不成吗? 如果调用了ShowCursor(TRUE),那么既然鼠标再移动,也不应该再调用ShowCursor(TRUE)。
额~~~, 我好像钻牛角尖了
BeanJoy 2014-04-22
  • 打赏
  • 举报
回复
调用ShowCursor(TRUE)和ShowCursor(FALSE)不是你自己写程序控制的吗,用个变量记录是鼠标的状态,在调用前判断一下不成吗? 如果调用了ShowCursor(TRUE),那么既然鼠标再移动,也不应该再调用ShowCursor(TRUE)。
mayudong1 2014-04-22
  • 打赏
  • 举报
回复
引用 1 楼 lgstudyvc 的回复:
不知道你说的计数器是个啥时候用的
就是调用ShowCursor的时候的返回值,没调用一次ShowCursor(TRUE),它就+1,false就-1,当这个值小于0时鼠标才能隐藏,大于等于0时才能显示 如果多个true的调用,会需要多个false的调用才能隐藏鼠标,反之则需要多个true的调用才能显示
lgstudyvc 2014-04-22
  • 打赏
  • 举报
回复
不知道你说的计数器是个啥时候用的

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧