XNA capture les clics de souris lorsque le jeu n'a pas de focus

13

Si je fais un alt-tab et que je fais des choses en dehors de la fenêtre de jeu, le jeu capture toujours les clics de souris (clics gauche et droit).

Le jeu ne "consomme" pas les clics, car ils sont également envoyés à l'application qui a le focus.

Mais c'est plutôt ennuyeux d'entendre un coup de feu à chaque fois que vous cliquez dans votre navigateur internet ...

En outre, le problème se produit même si le jeu est défini en plein écran.

asmo
la source

Réponses:

15

La meilleure solution que j'ai trouvée à cela est de cesser de répondre aux entrées (et probablement de mettre en pause votre jeu également) s'il devient inactif.

Vous pouvez vérifier Game.IsActiveou accrocher les événements Activatedet Deactivated.

Il y a un inconvénient mineur - je considérerais à peu près cela comme un bug dans le framework - le jeu démarre toujours à l'état Actif, même si le jeu n'est pas réellement actif lorsqu'il commence à fonctionner. (Par exemple: vous cliquez sur une autre fenêtre entre le lancement de votre jeu et le démarrage de votre jeu.)

Vous pouvez contourner ce problème en vérifiant la fenêtre active au démarrage de votre jeu, probablement en utilisant GetForegroundWindow. Ou vous ne pouvez pas vous en soucier - cela arrive parfois en tant que développeur, mais je pense que cela n'affecte pas vraiment les utilisateurs finaux.

Andrew Russell
la source