| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| все так просто? завтра попробую... |