Tengo una ventana de solo mensaje (ATL :: CWindowImpl) que se registra para la entrada sin procesar usando el indicador RIDEV_INPUTSINK, lo que significa que obtiene toda la entrada independientemente de si la ventana es de primer plano. Esto funciona muy bien cuando solo hay una instancia de esa ventana.Múltiples puertos de ventana de entrada sin formato
Sin embargo, cuando creo más de 1 instancia de mi ventana, solo una recibe los mensajes WM_INPUT (actualmente estoy creando dos, y solo el segundo para crear recibe los mensajes).
RegisterRawInputDevices (utilizando RIDEV_INPUTSINK | RIDEV_NOLEGACY) está teniendo éxito durante la creación de ambas ventanas. Además, la ventana que no recibe la entrada en bruto sigue recibiendo otros mensajes, por lo que no es un problema con la ventana en sí ...
Si es relevante, estoy usando el VC11 beta, y se crean ventanas y envío de mensajes en diferentes hilos (usando std :: hilo).
¿Es esto una limitación de API (es decir, está limitado a un receptor de entrada por proceso)? ¿O hay una forma de que esto funcione?
Gracias de antemano.
EDIT:
Ahora mismo mi solución actual es tener sólo una ventana y a que pase en los mensajes de entrada a las otras ventanas, sin embargo, esto es un desastre, y no va a funcionar en el caso de que quiero que funcione (donde tengo mi aplicación cargando complementos que pueden querer entrada sin procesar, no quiero que tengan que registrarse con mi aplicación a menos que realmente tenga que hacerlo de esa manera ...).
Esta es la debacle TOPMOST. –
IIRC, la forma recomendada de tratar esto es que una ventana reciba la entrada sin formato y luego genere eventos para otras ventanas interesadas. En otras palabras, no hará lo que quiera :) – JimR
La gran pregunta, de acuerdo con [la documentación] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645565 (v = vs.85) .aspx): ¿configuró 'hwndTarget' correctamente? – MrGomez