Проблема с перехватом нажатия клавиш
Есть приложение с табами!
В обработчике главного окна перехватываю нажатия клавиш через:
BOOL CRMainDlg::PreTranslateMessage(MSG* pMsg) {
if(pMsg->message == WM_KEYDOWN ) {
.................
Если просто ставить обработчик на WM_KEYDOWN - почему-то нажатия вообще не перехватывались.
Так вот, когда запускаю окно, нажатия отлично перехватываются, но стоит лишь мышкой кликнуть на таб, всё. Нажатия на клавиши перестают перехватываться.
Я подозреваю, что это из-за того, что таб становится активным - а там свои диалоги, свои обработчики. Так вот как сделать так, чтобы нажатия обрабатывались безусловно главным окном, а не табовыми диалогами?
Приходит в голову одна интересная мысль- а ты во всех диалогах напиши этот обработчик... Или поставь хук для приложения. Это точно поможет.В каком бы окне программы ты не нажимал таб, обработка все равно будет вестись одной и той же функцией.
Цитата: Kap
Приходит в голову одна интересная мысль- а ты во всех диалогах напиши этот обработчик... Или поставь хук для приложения. Это точно поможет.В каком бы окне программы ты не нажимал таб, обработка все равно будет вестись одной и той же функцией.
а по подробнее?)
имхо легче ручками фокус переставить куда нада ..
Цитата: Dart Bobr
имхо легче ручками фокус переставить куда нада ..
в смысле?
Подробнее- SetWindowsHookEx. В MSDN преподробненько написано как работать с этой функцией. А если лень смотреть в мануал- то на этом форуме полно тем про хуки. А насчет ручками переставлять- мне влом учить мфц только из- зи того, чтобы по- человечески написать одну программу =). IMHO лучше задействовать уже известные API.
Цитата: Kap
Подробнее- SetWindowsHookEx. В MSDN преподробненько написано как работать с этой функцией. А если лень смотреть в мануал- то на этом форуме полно тем про хуки. А насчет ручками переставлять- мне влом учить мфц только из- зи того, чтобы по- человечески написать одну программу =). IMHO лучше задействовать уже известные API.
Благодарю!
SetWindowsHookEx действительно оказался отличным выходом.