Est-il possible d’utiliser Windows Raw Input API sans fenêtre (c’est-à-dire depuis une application console)?
J’ai essayé d’utiliser RegisterRawInputDevices, mais mes boucles de messages ne semblent pas recevoir d’ événements de GetMessage et par conséquent, elles se bloquent.
Voulez-vous dire RegisterRawInputDevices
?
Puisque la structure RAWINPUTDEVICE
nécessite que vous RAWINPUTDEVICE
un HWND
pour recevoir les messages WM_INPUT
, il est impossible de le faire sans une fenêtre.
Les applications de console peuvent créer des fenêtres et la fenêtre peut probablement recevoir WM_INPUT
caché, mais vous avez besoin d’une fenêtre.
De cette façon, je l’ai fait (pas sûr que ce soit la manière la plus confortable …):
J’ai lancé un thread (pour remplir mon tampon d’entrée). Dans cette discussion, j’ai créé une fenêtre contenant uniquement des messages (elle est masquée et peut recevoir des données d’entrée) avec une classe de fenêtre appropriée.
Ensuite, enregistré les périphériques d’entrée bruts.
Ce thread a sa propre boucle de gestionnaire de messages. Dans le WindowProc de la classe de fenêtre, j’ai manipulé les entrées.
(Pour buffer, vous pouvez utiliser boost: circular_buffer, ça ROCKS!: D)
Dans cette solution, vous avez besoin d’une fenêtre, mais il semble que vous ne l’ayez pas. 🙂
J’espère que cela peut aider.