Здравствуйте ilya123, Вы писали:
I>У меня есть главное окно программы. Я создаю modeless диалог (от CDialogImpl). В нем 3 кнопки. I>Проблема в том, что нельзя переключать фокус с помощью клавиатуры между этими кнопками. Т.е. стрелки влево и вправо не работают; если нажать Tab, вызывается обработчик акселератора из главного окна. I>Я пробовал задавать в качестве родительского окна хэндл главного или нуль — результат один и тот же. I>На мышь диалог реагирует нормально. I>Если создать его модальным, тоже все нормально. I>Как пофиксить?
Клавиатурную навигацию в диалоге реализует функция IsDialogMessage, которую надо вызывать в цикле сообщений. Для модального диалога это делается само внутри функции DialogBox (а CDialogImpl::DoModal испольщует именно её). А для немодального ты должен сделать это сам.
Проще всего сделать твой диалог фильтром сообщений (пронаследоваться от CMessageFilter), реализовать метод PreTranslateMessage, вызвать в нём IsDialogMessage и зарегистрировать твой фильтр в цикле сообщений (CMessageLoop::AddMessageFilter).
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...