Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top