【问题标题】:How to prevent system mouse cursor movement in a C++ applicatioin with custom cursor?如何在具有自定义光标的 C++ 应用程序中防止系统鼠标光标移动?
【发布时间】:2013-06-02 12:59:00
【问题描述】:

我正在编写一个 OpenGL/DX 应用程序,我在其中读取 WndProc() 中的 WM_INPUT 消息以移动自定义鼠标光标。系统鼠标光标通过ShowCursor(false) 在应用程序窗口上方/中时隐藏。

问题是当我移动鼠标时系统鼠标光标仍然移动。所以两个光标(普通系统光标和我的应用程序中的自定义光标)同时移动。鼠标点击也是如此。

所以我的问题是:如何防止系统鼠标光标在应用程序运行时移动(和单击),以便只有自定义鼠标光标起作用?

【问题讨论】:

  • 或者,您可以只在隐藏系统光标的位置显示自定义光标。
  • @BlueWanderer:我认为这不能解决我的问题。问题是系统鼠标光标在我的应用程序运行时功能齐全。因此,当用户在应用程序中用鼠标点击时,点击也是由系统鼠标光标完成的。例如,如果该系统光标位于另一个窗口的按钮上,则该按钮也会被单击。这显然不是我想要的。必须有一种“默认”方式来解决这个问题......

标签: c++ mouse mouseevent wndproc


【解决方案1】:

光标仅用于显示。隐藏默认光标并绘制自己的光标不会影响移动和点击。

我猜你在做什么有两种可能:

  1. 如果您只想显示自定义光标,则应在鼠标位于窗口内时隐藏系统光标。因此,当光标在您的窗口之外时,用户知道他/她在做什么。或者,您可以使用 ClipMouse 将鼠标限制在窗口内。

  2. 如果您使用 DirectInput 之类的东西完全自己处理鼠标,那么您应该再次使用 ClipMouse。

【讨论】:

  • 太好了,谢谢ClipCursor()(我想这就是你的意思)为我解决了问题!
猜你喜欢
  • 1970-01-01
  • 2010-10-04
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
相关资源
最近更新 更多