У меня есть окно только для сообщений (ATL :: CWindowImpl), которое регистрируется для необработанного ввода с использованием флага RIDEV_INPUTSINK, что означает, что он получает весь ввод независимо от того, является ли окно окном переднего плана. Это прекрасно работает, когда есть только один экземпляр этого окна.
Однако, когда я создаю более 1 экземпляра моего окна, только одно получает сообщения WM_INPUT (в настоящее время я создаю два, и только второй, который будет создан, получает сообщения).
RegisterRawInputDevices (используя RIDEV_INPUTSINK | RIDEV_NOLEGACY) успешно выполняется при создании обоих окон. Кроме того, окно, не получающее необработанный ввод, все еще получает другие сообщения, так что это не проблема с самим окном ...
Если это актуально, я использую бета-версию VC11, и создаются окна, которые отправляют сообщения в разные потоки (используя std :: thread).
Это ограничение API (т. Е. Вы ограничены одним входным приемником на процесс)? Или есть способ заставить это работать?
Заранее спасибо.
EDIT:
Сейчас мой текущий обходной путь - это просто иметь одно окно и передавать ему входные сообщения другим окнам, однако это беспорядок, и не будет работать в том случае, если я хочу, чтобы оно работало (где У меня есть плагины для загрузки приложений, которые могут требовать необработанного ввода, я не хочу, чтобы они регистрировались в моем приложении, если только мне действительно не нужно делать это таким образом ...).