Is it possible to use Windows Raw Input API without a window (ie from a console application)?
I've tried using RegisterRawInputDevices but my message loops doesn't seem to get any events from GetMessage and hence just 'hangs' there.
Is it possible to use Windows Raw Input API without a window (ie from a console application)?
I've tried using RegisterRawInputDevices but my message loops doesn't seem to get any events from GetMessage and hence just 'hangs' there.
Do you mean RegisterRawInputDevices
?
Since the RAWINPUTDEVICE
structure requires you to specify an HWND
to receive the WM_INPUT
messages, no it's not possible to do this without a window.
Console applications can create windows, and the window probably can receive WM_INPUT
while hidden, but you do need a window.
That way I did it (not sure it is the most comfortable way...):
I have started a thread (for the task of filling my input buffer). In this thread I have created a message-only window (its hidden, and can get input datas) with an appropriate window-class.
Then registered the raw input devices.
This thread has its own message handler loop. In the WindowProc of the window-class I've handled the inputs.
(For buffer, You can use boost:circular_buffer, it ROCKS! :D)
In this solution You did need have a window, but it looks like You don't. :)
I hope this can help.