В документации для joySetCapture
говорится, что если fChanged
истинно, то сообщения только отправляются, когда позиция изменяется более чем на пороговое значение. Поскольку он не упоминает кнопки, я предполагаю, что он не отправляет сообщения при нажатии кнопок. Мне кажется, что это плохой дизайн, но если это так, то вам придется с этим справиться.
Почему вы не хотите использовать периодические сообщения опроса? Если вы установите разумный интервал опроса (например, 16 мс для частоты обновления 60 Гц), я могу заверить вас, что опрос джойстика НЕ будет узким местом в вашем приложении, поэтому вопрос не в производительности , Нет причин устанавливать интервал опроса на что-то очень маленькое, потому что аппаратное обеспечение просто не отправляет обновления так быстро, так что вы просто теряете циклы обработки одних и тех же данных.
Наконец, API мультимедийного джойстика несколько устарел и был заменен DirectX. Вместо этого вы должны использовать DirectInput, чтобы вы могли обрабатывать джойстики с более чем 4 кнопками или более чем 2 осями. Кроме того, если вы используете контроллеры Xbox 360, вы должны использовать библиотеку XInput для их обработки.