2010-12-04 22 views
0

我有一個使用XNA在後臺線程上輪詢GamePad和Keyboard的模塊,並調用一些回調函數。沒有任何遊戲課程。 我想從WPF應用程序中使用此模塊,在回調中調用Dispatcher.BeginInvoke,並根據回調參數對顯示器(不包含TextBox等)進行一些更改。 它與GamePad完美協作,但Keyboard.GetState()。GetPressedKeys()數組始終爲空! 我認爲它與WPF消息循環捕捉鍵盤事件有關,因爲我可以在XNA中輪詢它們,或者xna沒有設置鍵盤焦點。 你有任何提示嗎?如何將鍵盤狀態傳遞給XNA,所以我不必使用WPF類重寫鍵盤處理? 謝謝WPF使用XNA,Keyboard.GetState()。GetPressedKeys()總是空的!

回答

0

沒關係,我解決了它!問題不在於焦點,而在於線程!我在輪詢類上公開了一個回調函數,當我想調用Keyboard.GetState()時,我調用了回調函數,它在WPF中調用了Dispatcher.Invoke(()=> poll.GetKeyboardState()),所以this當GetState()與WPF控件位於同一線程中時,它就起作用了! Hoorah!