如何在全屏隐藏鼠标
来源:互联网 发布:ios开发中数据库fmdb 编辑:程序博客网 时间:2024/05/16 05:18
鼠标是个好东西,指指点点的很方便,但有时候我们会有些特别的目的,需要想把它藏起来,就像它不存在一样。如何实现呢?
网上提供最多的解决方法是使用ShowCursor函数。
The ShowCursor function displays or hides the cursor.
Syntax
int ShowCursor(
BOOL bShow
);
这个函数确实可以隐藏鼠标的光标,但是隐藏的范围仅限当前应用程序的窗口,出了窗口鼠标又出来了,达不到全屏隐藏的效果。
网上还有人出主意,说把系统的所有鼠标光标都设成一个点。这个方法我没试过,但我想一定很麻烦,系统有很多光标类型,都设置一遍,回头还得再全部恢复,想想就够麻烦的。
我曾经使用另一种方法:把鼠标移到最右边,然后使用鼠标钩子(HOOK)拦住鼠标移动消息。一般情况下这个方法也可以用,不幸的是,如果正好在右边有个停靠栏,那就惨了,每次那个停靠栏都会被弹出来。
这个问题让我挠头了好几天,最后还真想出个主意来,倒也简单的很。
创建一个透明窗口,面积只有一个点,置于桌面的顶层。然后调用ShowCursor函数,把鼠标设为隐藏。当我们真的要隐藏鼠标的时候,就把这个窗口移到鼠标那儿,然后锁定鼠标位置,这样神不知鬼不觉的鼠标就没了。解除隐藏的时候更简单,直接把这个窗口设为不可见就行了。
主意有了,实现起来有些技术问题还是要简单提一下,否则初学的人还是不太容易搞定。
透明窗口
在创建的时候,使用CreateWindowEx,并设置WS_EX_TRANSPARENT。或者使用SetWindowLong设置窗口的扩展属性,加入WS_EX_TRANSPARENT。
置于顶层,也就是所有窗口之上,或称为最前
在创建的时候,使用WS_EX_TOPMOST。或者使用SetWindowPos函数,并设置第二个参数为HWND_TOPMOST,把窗口设置到最前。
别让窗口显示在任务栏上
一般的窗口,如果不是子窗口,那么它会被显示在任务栏上,并且使用Alt+Tab的时候也会看到该窗口。要避免这些,请使用WS_EX_TOOLWINDOW属性,方法同上。
设置窗口可见
这个不用说了吧,使用ShowWindow函数。
限制鼠标移动
上文说了,可以使用鼠标钩子拦住消息,其实还有另一种更简单的方法,使用ClipCursor函数。
BOOL ClipCursor(
const RECT *lpRect
);
这个函数可以把鼠标限定在一定的区域。在本例中,需要把鼠标限定在那个窗口的范围之内。
以上这些如有不明白的,请参考MSDN,或网上搜寻一下,相关文章有很多。
- 如何在全屏隐藏鼠标
- 隐藏鼠标和应用全屏
- 如何隐藏虚拟键,实现android全屏
- Android如何实现全屏(隐藏ToBar)
- 如何让层在鼠标在层外的位置点击时隐藏
- android如何隐藏头部的标题栏全屏显示
- 鼠标样式改变 隐藏鼠标在鼠标位置绘制图片,当鼠标经过时改变样式
- 在Android中全屏显示内容,隐藏覆盖通知栏
- 隐藏 鼠标
- 隐藏鼠标
- 隐藏鼠标
- 如何隐藏浏览器的菜单栏、地址栏,浏览器窗口全屏,浏览器全屏分屏
- 在WinCe下如何让程序全屏
- 在WinCe下如何让程序全屏
- 在WinCe下如何让程序全屏
- 全屏获取鼠标形状
- android全屏,隐藏状态栏
- Android隐藏状态栏 全屏
- python 采用代理模拟登陆代码
- 如何做数据库操作的排他操作?(个人小结) .
- oracle 全文检索实践
- 在O(1)时间删除链表结点[数据结构]
- Android 开发之使用Eclipse Debug调试详解
- 如何在全屏隐藏鼠标
- JAVA编程思想第四版-多线程的练习答案之练习10
- 重载WndProc
- ANALYZE
- innobackupex介绍与使用
- 【转】Lucene笔记+PaodingAnalyzer+高亮显示
- sqlserver2012外部无法连接的解决办法
- 英语聊天中的简写
- 大数相减