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


Автор: deniska 11.2.2008, 18:07
Ситуация следующая:
есть dialog-based приложение в InitDialog которого создается сначала объект CFrameView потом его child CSplitterWnd, который разбивается на 2-4 панели, которые можно изменять в размерах. (такой способ создания сплиттеров в диалоге нарыл где-то в инете). 

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

Собственно хотелось чтобы прехваты "стекались" в 1 какой-либо обработчик, любого окна приложеня. Пока получается вот что: на одной из панелей располагаю за областью рисования свой Cedit, который обрабатывает WM_GETDLGCODE() и возвращает DLGC_WANTARROWS. 

При получении эдитом нужных мне кодов клавиш, посылаю родителю сообщение WM_KEYDOWN. этот способ работает только при установленном курсоре в эдите. Можно конечно в конце всех обработчиков, всех окон устанавливать курсор на этот эдит, но как то способ мне кажется кривоват. Есть ли какие-нибудь альтернативы?

Автор: Earnest 11.2.2008, 18:38
Переопредели на диалоге PreTranslateMessage и лови там.

Автор: deniska 11.2.2008, 19:00
все так просто? завтра попробую...

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