Ho una finestra di solo messaggio (ATL :: CWindowImpl) che si registra per l'input non elaborato utilizzando il flag RIDEV_INPUTSINK, il che significa che ottiene tutto l'input indipendentemente dal fatto che la finestra sia la finestra in primo piano. Funziona alla grande quando c'è una sola istanza di quella finestra.Lavelli finestra di input raw multipli
Tuttavia, quando creo più di 1 istanza della mia finestra, solo uno riceve i messaggi WM_INPUT (attualmente sto creando due e solo il secondo da creare riceve i messaggi).
RegisterRawInputDevices (utilizzando RIDEV_INPUTSINK | RIDEV_NOLEGACY) ha esito positivo durante la creazione di entrambe le finestre. Inoltre, la finestra che non riceve l'input non elaborato riceve ancora altri messaggi, quindi non è un problema con la finestra stessa ...
Se è rilevante, sto utilizzando la beta VC11 e le finestre vengono create e i messaggi di invio su thread diversi (usando std :: thread).
Questa è una limitazione API (ad esempio, si è limitati a un sink di input per processo)? O c'è un modo per farlo funzionare?
Grazie in anticipo.
EDIT:
In questo momento la mia soluzione attuale è quella di avere solo una finestra e per poter trasmettere i messaggi di input per le altre finestre, tuttavia questo è un casino, e non funzionerà nel caso io voglio che funzioni (dove ho la mia app che carica plugin che potrebbero volere input non corretti, non voglio che debbano registrarsi con la mia app a meno che non debba davvero farlo in quel modo ...).
Questa è la debacle TOPMOST. –
IIRC, il modo consigliato per gestire questo è che una finestra riceva l'input non elaborato e quindi generi eventi per altre finestre interessate. In altre parole, non farà quello che vuoi :) – JimR
La grande domanda, secondo [la documentazione] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645565 (v = vs.85) .aspx): hai impostato 'hwndTarget' correttamente? – MrGomez