joySetCapture не работает с fChanged = false - PullRequest
1 голос
/ 26 апреля 2009

Я использую joySetCapture с fChanged (4-й параметр) = true.

Я получаю сообщения только при изменении позиции, как я должен. Однако я не получаю никаких сообщений при нажатии кнопки джойстика.

Если я использую fChanged = false, wParam периодических сообщений обновляется правильно.

Как я могу получать сообщения только при изменении позиции или кнопки без использования периодических сообщений?

Ответы [ 2 ]

1 голос
/ 27 апреля 2009

Если вам не нужна совместимость с Windows до Win98, почему бы просто не использовать API DirectInput? API-интерфейсы «радости» - это просто оболочка для DirectInput API-интерфейсов.

1 голос
/ 26 апреля 2009

В документации для joySetCapture говорится, что если fChanged истинно, то сообщения только отправляются, когда позиция изменяется более чем на пороговое значение. Поскольку он не упоминает кнопки, я предполагаю, что он не отправляет сообщения при нажатии кнопок. Мне кажется, что это плохой дизайн, но если это так, то вам придется с этим справиться.

Почему вы не хотите использовать периодические сообщения опроса? Если вы установите разумный интервал опроса (например, 16 мс для частоты обновления 60 Гц), я могу заверить вас, что опрос джойстика НЕ ​​будет узким местом в вашем приложении, поэтому вопрос не в производительности , Нет причин устанавливать интервал опроса на что-то очень маленькое, потому что аппаратное обеспечение просто не отправляет обновления так быстро, так что вы просто теряете циклы обработки одних и тех же данных.

Наконец, API мультимедийного джойстика несколько устарел и был заменен DirectX. Вместо этого вы должны использовать DirectInput, чтобы вы могли обрабатывать джойстики с более чем 4 кнопками или более чем 2 осями. Кроме того, если вы используете контроллеры Xbox 360, вы должны использовать библиотеку XInput для их обработки.

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