Передача событий от одного окна

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
integer
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Dec 04, 2009 5:41 pm

Передача событий от одного окна

Post by integer » Tue Feb 23, 2010 3:42 pm

Привет всем.
Использую архитектуру документ-вид, есть несколько видов, у каждого свое окно. В некоторый момент времени мне необходимо, чтобы окно перестало обрабатывать события от мышки и клавы, то есть "заморозилось" бы и разморозилось по нажатию любой клавиши.
Сейчас я размещаю в классе вида функцию disable() для окна и в обработчике нажатия клавиш enable(), и все работает как надо, но до тех пор, пока окно не потеряет фокус ввода.
Можно еще решить проблему подключением/отключением обработчиков событий, но хотелось бы обойтись без них и вообще не трогать класс окна, а весь код разместить в классе вида.
Есть какое-нибудь другое решение?

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Re: Передача событий от одного окн

Post by Kolya » Thu Feb 25, 2010 8:43 pm

1. Похожую функциональность выполняет wxWindowDisabler
2. Вручную фильтровать события при помощи методов wxApp::FilterEvent можно, но не уверен насколько оно будет работать эффективно в данном случае.
Открытие модальных окон как я понимаю не подойдет поскольку оно блокирует весь ввод, а не только к отдельному окну.

integer
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Dec 04, 2009 5:41 pm

Post by integer » Fri Feb 26, 2010 6:22 pm

Спасибо, использование wxWindowDisabler в дополнении к тому, что я описывал, решает проблему. Теперь окно не может потерять фокус ввода и все события благополучно добираются до вида.
Я думал решение будет в замене каким-либо образом обработчиков событий, но с wxWindowDisabler все решается даже лучше. И проще :)

Post Reply