Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Accelerator vs MFC MDI


Автор: cs137 11.2.2008, 10:35
Привет всем!!!
Никто случаем не сталкивался с такой проблемой:
Вдруг неожиданно оказалось smile, что в моей проге (MDI) горячие клавиши меню работают только если нет ни одного фрейма (т.е. MDI чайлда). В противном же случае все это дело работает нормально... Проверил ресурсы и код, но за что-нить этакое зацепиться не могу :(
Спасибо!

Автор: Earnest 12.2.2008, 08:56
Мало информации...
Акселераторы должны работать независимо от наличия MDI-окон...
Возможно, при создании чайлд-фрейма его таблица акселераторов пуста и заменяет собой таблицу акселераторов главного окна?
Пошарь отладчиком в главном цикле (MFC), обращая внимание именно на обработку акселераторов.

Автор: cs137 12.2.2008, 13:10
Я создал новый MDI проект, чтобы сравнить со своим, но опять ничего не добился. По коду, таблице акселераторов чайлд фрейма присваивается значение из DocTemplate и значение это 0. Если создать отдельную таблицу для чайлда, то тогда присваиваемое значение таблицы не будет равно 0. Но то не зависимо от жэтого я получаю же результат :( Горячии клавиши перестают работать, т.е. таблица акселераторов отваливается.
Причем в новом проекте, если переопределить клавишу например, открытия чайлда на Ctrl+N, то при существовании чайлд фрейма работает комбинация как Ctrl+N (из таблицы акселераторов для майн фрейма), так и Ctrl+T (из таблицы акселераторов для чайлд фрейма). Вообще ничего не понимаю :(

Автор: cs137 13.2.2008, 07:14
Все, разобрался smile У меня вьюха базируется на CFormView, и на ней я еще создаю диалоги... так вот, оказалось, что один из диалогов перехватывал нажатие клавишь, потому-то горячие клавиши и не работали smile
Дико извиняюсь smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)