当提供RIDEV_NOLEGACY标志时,原始input和窗口交互问题

我有几个与使用RIDEV_NOLEGACY标志注册的原始input设备有关的问题。

  • 当一个窗口被禁用,我通过鼠标点击窗口设置焦点,获得焦点,但窗口z顺序保持不变。 (这在alt-tabb时不会发生)
  • 无法与窗口镶边进行交互(resize,标题栏button)

在我的input类中,我创build了一个线程,它创build一个消息窗口并注册原始input设备。 在另一个线程中,我创build了一个用于OpenGL渲染的窗口。

一切工作正常,直到没有遗产标志被指定。 也许这只是我对Windows API的无知。 我试着通过:: Set [Active,Foreground] Window hacks来解决第一个问题。 有没有正确的方法来处理这些问题,或者我应该避免禁用传统的键盘和鼠标信息?

当你注册一个设备的原始输入时,你可以得到原始数据,无论你的窗口是前景还是背景。 另一种方法是:您可以从设备获取所有应用程序窗口的原始输入。 因此,如果您通过使用RIDEV_NOLEGACY标志防止生成传统Windows消息,则将阻止为所有Windows生成传统Windows消息。 大多数Windows应用程序依赖于这些传统消息才能正确运行。 如果您的应用程序不是全屏应用程序,则RIDEV_NOLEGACY不是一个好主意。