4

是否可以在没有窗口的情况下使用 Windows Raw Input API(即来自控制台应用程序)?

我试过使用 RegisterRawInputDevices 但我的消息循环似乎没有从 GetMessage 获得任何事件,因此只是“挂起”。

4

2 回答 2

7

这样我就做到了(不确定这是最舒服的方式......):

我已经启动了一个线程(用于填充我的输入缓冲区的任务)。在这个线程中,我创建了一个带有适当窗口类的仅消息窗口(它是隐藏的,并且可以获取输入数据)。

然后注册原始输入设备。

该线程有自己的消息处理程序循环。在窗口类的 WindowProc 中,我处理了输入。

(对于缓冲区,您可以使用 boost:circular_buffer,它非常棒!:D)

在这个解决方案中,您确实需要一个窗口,但看起来您不需要。:)

我希望这会有所帮助。

于 2011-07-25T03:48:38.980 回答
2

你的意思是RegisterRawInputDevices

由于该RAWINPUTDEVICE结构要求您指定一个HWND来接收WM_INPUT消息,所以不,没有窗口就不可能做到这一点。

控制台应用程序可以创建窗口,并且窗口可能WM_INPUT在隐藏时可以接收,但您确实需要一个窗口。

于 2011-07-23T14:44:42.887 回答