А>>Я занялся извращением и переопределил метод PreTranslateMessage(), в котором по нажатию клавиши Tab переключал фокус вручную путем m_pControl->SetFocus();
А вот это делать не надо. Не отбирайте хлеб у функции IsDialogMessage.
Она вызывается в CDialog::PreTranslateMessage() и прекрасно справляется с переключением фокуса и
другими особенностями диалоговых окон.