是否可以在没有窗口的情况下使用 Windows Raw Input API(即来自控制台应用程序)?
我试过使用 RegisterRawInputDevices 但我的消息循环似乎没有从 GetMessage 获得任何事件,因此只是“挂起”。
是否可以在没有窗口的情况下使用 Windows Raw Input API(即来自控制台应用程序)?
我试过使用 RegisterRawInputDevices 但我的消息循环似乎没有从 GetMessage 获得任何事件,因此只是“挂起”。
这样我就做到了(不确定这是最舒服的方式......):
我已经启动了一个线程(用于填充我的输入缓冲区的任务)。在这个线程中,我创建了一个带有适当窗口类的仅消息窗口(它是隐藏的,并且可以获取输入数据)。
然后注册原始输入设备。
该线程有自己的消息处理程序循环。在窗口类的 WindowProc 中,我处理了输入。
(对于缓冲区,您可以使用 boost:circular_buffer,它非常棒!:D)
在这个解决方案中,您确实需要一个窗口,但看起来您不需要。:)
我希望这会有所帮助。
你的意思是RegisterRawInputDevices
?
由于该RAWINPUTDEVICE
结构要求您指定一个HWND
来接收WM_INPUT
消息,所以不,没有窗口就不可能做到这一点。
控制台应用程序可以创建窗口,并且窗口可能WM_INPUT
在隐藏时可以接收,但您确实需要一个窗口。