Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > работа с акселератором |
Автор: EvgenyTS 16.2.2009, 15:54 | ||||||
И при нажатии на клавиши(акселератора) не вызывается функция. ЧТо может быть такое? |
Автор: Earnest 16.2.2009, 17:06 | ||
А что, все остальное у тебя работает? При том, что ты GetMessage засунул в PreTranslate дерева? Или это не контрол? В общем, не надо GetMessage использовать... Также как Translate\Dispatch. MFC само реализует главный цикл. Код должен быть примерно такой:
НО. Если ты хочешь, чтобы горячие клавиши срабатывали всегда, то код нужно добавить куда-нибудь повыше (в главное окно). |
Автор: Earnest 16.2.2009, 18:57 |
Во-первых, не надо делать return, оставь стандартную обработку. Во-вторых, как я уже говорила, до PreTranslate дерева дело может просто не дойти: PreTranslat'ы вызываются от приложения вниз. Лови в главном окне. Но чтобы разобраться, попробуй поставить точку прерывания на свой TranslateAccel. Вопрос еще в том, что команду, которая получится, тоже он должен обработать. Ты это делаешь? Добавлено через 2 минуты и 18 секунд В общем, правильнее всего ловить акселераторы в том же окне, которое обрабатывает команды. Плюс позаботиться о том, чтобы в этот PreTranslate доходило управление (его могут перехватить окна, которые являются "более родительскими"). |