2009-05-05 2 views
15

Я пытаюсь помочь инвалиду с небольшим количеством кода, чтобы помочь ему играть в игру легче. Он ограничен трекболом и одной кнопкой.Предотвращение изменения фокуса окна

В настоящее время он использует экранную клавиатуру и сумел играть в другие игры, используя его. Я создал небольшой код, чтобы попытаться сделать его жизнь проще. Он использует кнопки наведения для клавиш. Когда указатель мыши входит в эту кнопку, он посылает ключ вниз, когда он отходит от кнопки, он отправляет ключ вверх.

У меня это работает, и я думаю (или надеюсь) ему это понравится. Он работал очень хорошо, когда я тестировал его.

Я хочу добавить еще одну функциональность. Если он нажимает на мой контроль, я хочу отправить другой ключевой штрих. Не проблема, я могу это сделать. Однако, когда я делаю это, фокус окна переключается с игры на мой контроль.

Я нашел это на MSDN:

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

Это работает, чтобы предотвратить мое окно от активации, но она по-прежнему вызывает игра терять фокус. Я могу настроить фокус обратно в игру, но я бы предпочел, чтобы он просто не терял фокус.

Я кодирую в C# и WPF.

У кого-нибудь есть идеи о том, как вы можете это сделать?

Джон Фентон

+0

Попробуйте эту страницу: http://stackoverflow.com/questions/2444842/keeping-an-application-on-top-and-in-focus-always/3338447#3338447 – MonkeyWrench

+0

Это не работает, MonkeyWrench. Это будет держать ваше окно сверху, но это не помешает ему украсть фокус из игры. –

ответ

2

крюк в некоторых уровень мыши и клавиатуры крючками низким, и ваше приложение не нужно будет украсть фокус и вернуть его обратно.

Посмотрите на this pastie of a simple WPF app, который в значительной степени основан на an article by Stephen Toub.

Всякий раз, когда вы оставляете клик, в любом месте, отправляется второй щелчок левой кнопкой мыши, поэтому вы эффективно дважды щелкаете. Вы можете достичь своей цели, скрывая свое приложение, когда пользователь нажимает, так что ваше приложение никогда не крадет фокус. Затем определите местоположение щелчка и решите, была ли нажата одна из ваших кнопок, и действуйте соответствующим образом.

Я понимаю, что я выкапываю это из прошлого, но, надеюсь, кто-то найдет этот ответ полезным. Привет, и хорошо для вас, чтобы превратить ваше программирование в помощь другому человеку!

Смежные вопросы