windows – 提供RIDEV_NOLEGACY标志时的原始输入和窗口交互问题

我有一些与使用RIDEV_NOLEGACY标志注册的原始输入设备的使用相关的问题.

>当窗口未激活并通过鼠标点击设置焦点到窗口时,获得焦点但窗口z顺序保持不变. (alt-tabbing时不会发生这种情况)
>无法与窗口chrome进行交互(调整大小,标题栏按钮)

在我的输入类中,我创建了一个线程,它创建一个仅消息窗口并注册原始输入设备.在另一个线程中,我创建了一个用于OpenGL渲染的窗口.

一切正常,直到没有指定遗留标志.也许这只是我对Windows API的无知.我试过通过::设置[Active,Foreground] Window hacks来解决第一个问题.有没有正确的方法来处理这些问题,还是应该避免禁用传统的键盘和鼠标消息?

最佳答案 从设备注册原始输入时,无论窗口是前景还是后台,都可以获得原始数据.另一种方法是:从设备获取所有应用程序窗口的原始输入.因此,如果您通过使用RIDEV_NOLEGACY标志阻止生成旧版Windows消息,则可以防止为所有Windows生成旧版Windows消息.大多数Windows应用程序依赖于这些遗留消息才能正常运行.如果您的应用程序不是全屏应用程序,则RIDEV_NOLEGACY不是一个好主意.

点赞