2010-12-04 14 views
0

J'ai un module écrit en utilisant XNA qui interroge le GamePad et le clavier sur un fil de fond, et appelle quelques rappels. Aucune classe de jeu. Je souhaite utiliser ce module à partir d'une application WPF, en appelant Dispatcher.BeginInvoke sur le rappel et en apportant quelques modifications à l'affichage (qui ne contient pas de TextBox, etc.), en fonction des paramètres de rappel. Cela fonctionne parfaitement avec le GamePad, mais le tableau Keyboard.GetState(). GetPressedKeys() est toujours vide! Je pense que cela a quelque chose à voir avec la boucle de messages WPF qui attrape les événements du clavier avant que je puisse les interroger dans XNA, ou il n'y a rien pour xna pour régler le focus du clavier. Avez-vous des conseils? Comment passer l'état du clavier à XNA, donc je n'ai pas besoin de réécrire la manipulation du clavier en utilisant les classes WPF? merciWPF utilisant XNA, Keyboard.GetState(). GetPressedKeys() toujours vide!

Répondre

0

Peu importe, je l'ai élaboré! Le problème n'était pas avec le focus, c'était avec le filetage! J'ai exposé un rappel sur la classe d'interrogation, et quand j'ai voulu appeler Keyboard.GetState(), j'ai appelé le rappel, qui (dans WPF) était un appel de Dispatcher.Invoke (() => poll.GetKeyboardState()), ainsi ceci temps que GetState() était sur le même thread que le contrôle WPF, alors ça a marché !!! Hourra!