永久隐藏WinForms游标?

时间:2009-08-07 11:28:56

标签: c# winforms cursor timer

我正在开发一个全屏应用程序,其中包含一些动画表单控件(基本上是移动的标签)。

我想在一段时间不活动后隐藏光标,我尝试使用此线程中给出的方法:Hide mouse cursor after an idle time

虽然这在某种意义上是有效的,但是窗体计时器甚至不会开始计数,直到表单没有更多更新(对我的需求无用)。此外,一旦光标被隐藏,它就会在移动一个控件时重新显示(即其中一个标签是动画的)。

我需要的是让Windows忽略显示本身发生的任何事情,并且只需遵守我的'Cursor.Hide()'和'Cursor.Show()'调用。我尝试使用普通的线程计时器,但这根本不起作用 - 光标甚至都没有隐藏。

所以我想我要求的是一种隐藏光标的方法,同时允许在不重新显示光标的情况下进行动画。

非常感谢任何帮助。 汤姆

3 个答案:

答案 0 :(得分:2)

猜测,为什么不进行切换,只需处理与wndproc中的鼠标相关的所有WM_消息,然后什么都不做。在关闭时,让正常处理WM_鼠标消息。

答案 1 :(得分:0)

似乎有一个错误http://social.msdn.microsoft.com/Forums/en-US/smallbasic/thread/2b963082-c5a7-469c-ba35-02b4a546f913/

您可能尝试的是使用100%透明位图分配自己的自定义光标 - 看起来没有光标。

答案 2 :(得分:0)

线程计时器方法调用不会在创建它们的线程上执行,因此要使调用工作,您必须通过UI线程上的调用进行这些调用。