Необработанные входные данные и проблемы взаимодействия с окном, когда установлен флаг RIDEV_NOLEGACY - PullRequest
4 голосов
/ 25 марта 2012

У меня есть несколько проблем, связанных с использованием необработанных устройств ввода, зарегистрированных с флагом RIDEV_NOLEGACY.

  • , когда окно деактивировано, и я устанавливаю фокус с помощью щелчка мыши на окне, фокус получаетсяно z-порядок окна остается прежним.(Этого не происходит при alt-tabbing)
  • невозможно взаимодействовать с хромом окна (изменение размера, кнопки строки заголовка)

В моем классе ввода я создаю поток, который создаетокно только сообщения и регистрирует необработанные устройства ввода.В другом потоке я создаю окно, которое используется для рендеринга OpenGL.

Все работает нормально, пока не указан флаг без устаревших настроек.Возможно, это всего лишь мое незнание Windows API.Я попытался обойти первую проблему с помощью :: Set [Active, Foreground] Window hacks безрезультатноЕсть ли правильный способ справиться с этими проблемами или я должен просто избегать отключения устаревших сообщений клавиатуры и мыши?

1 Ответ

2 голосов
/ 18 декабря 2013

Когда вы регистрируетесь для необработанного ввода с устройства, вы получаете эти необработанные данные независимо от того, является ли ваше окно передним или задним планом. Это можно сделать еще одним способом: вы получаете необработанный ввод с устройства для ВСЕХ окон приложения. Таким образом, если вы предотвратите создание устаревших сообщений Windows, используя флаг RIDEV_NOLEGACY, вы предотвратите создание устаревших сообщений Windows для ВСЕХ Windows. Большинство приложений Windows зависят от этих устаревших сообщений для правильной работы. Если ваше приложение не является полноэкранным приложением, RIDEV_NOLEGACY не является хорошей идеей для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...