15

私は、障害のある人がゲームをより簡単にプレイできるように、少しのコードで支援しようとしています。彼はトラックボールと単一のボタンに制限されています。

現在、彼はオンスクリーン キーボードを使用しており、それを使用して他のゲームをプレイすることができました。彼のライブを簡単にするために、ちょっとしたコードを作成しました。キーにはホバー ボタンを使用します。マウス ポインタがボタンに入るとキーが下に移動し、ボタンから離れるとキーが上に移動します。

私はそれが機能しており、彼がそれを気に入ってくれると思います(または願っています). テストしたところ、かなりうまくいきました。

もう1つ機能を追加したいと思います。彼が私のコントロール上でクリックした場合、別のキー ストロークを送信したいと考えています。問題ありません、私はそれを行うことができます。ただし、その場合、ウィンドウのフォーカスはゲームから自分のコントロールに移ります。

MSDNでこれを見つけました:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/48737c2b-7e6f-4ade-ac1c-7dd2f5cc2b88/

これにより、ウィンドウがアクティブになるのを防ぐことができますが、それでもゲームのフォーカスが失われます。フォーカスをゲームに戻すことはできますが、フォーカスが失われないことが望ましいです。

C# と WPF でコーディングしています。

どうすればそれを行うことができるかについて、誰にもアイデアがありますか?

ジョン・フェントン

4

2 に答える 2

3

いくつかの低レベルのマウスとキーボードのフックをフックすると、アプリケーションはフォーカスを盗んで戻す必要がなくなります。

この単純な WPF アプリのパスティを見てください。これは、Stephen Toub による記事に大きく基づいています。

どこでも左クリックするたびに、2 回目の左クリックが送信されるので、効果的にダブルクリックします。ユーザーがクリックするたびにアプリを非表示にして、アプリがフォーカスを奪わないようにすることで、目標を達成できます。次に、クリックの位置を検出し、ボタンの 1 つが押された可能性があるかどうかを判断し、それに応じて行動します。

私はこれを過去から掘り下げていることを認識していますが、誰かがこの回答が役立つことを願っています. 乾杯、あなたのプログラミングを仲間の人間を支援するために変えてくれてありがとう!

于 2011-02-11T20:31:52.630 に答える
1

このブログで言及されているように、イベントPreviewLostKeyboardFocusをキャンセルしてみることができます。

http://immortalratblog.blogspot.com/2008/03/canceling-keyboard-focus-change-in-wpf.html

キーを押すことをシミュレートしているので、フォーカスが失われていると思いますか?

于 2011-02-14T03:06:49.817 に答える