【问题标题】:Hide the WinForms cursor 'persistently'?“永久”隐藏 WinForms 光标?
【发布时间】:2009-08-07 11:28:55
【问题描述】:

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

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

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

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

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

非常感谢任何帮助。 汤姆

【问题讨论】:

    标签: c# winforms cursor timer


    【解决方案1】:

    猜想,为什么不设置一个开关,它只会处理所有与 wndproc 中的鼠标相关的 WM_ 消息,而什么也不做。在切换关闭时,让 WM_ 鼠标消息的正常处理发生。

    【讨论】:

    • 这似乎是要走的路,但到目前为止我的结果好坏参半。我认为这可能最终会成为答案,所以谢谢!
    • 与鼠标处理相关的 WM_ 消息实际上与显示光标没有任何关系,除非您的意思是 WM_SETCURSOR。见here
    【解决方案2】:

    http://social.msdn.microsoft.com/Forums/en-US/smallbasic/thread/2b963082-c5a7-469c-ba35-02b4a546f913/好像有bug

    您可以尝试为自己的自定义光标分配 100% 透明位图 - 看起来好像没有光标。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这就是我正在做的 - 但光标仍然没有隐藏。我不确定这是为什么 - 代码已执行但没有任何反应。
      • 对不起,我不是winforms专家。祝你好运:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      相关资源
      最近更新 更多