Моя проблема немного похожа на Почему IsDialogMessage () никогда не вернется? , но у меня есть особая ситуация, которую я полностью описываю здесь:
У меня есть окно пользовательского контейнера со стилем WS_EX_CONTROLPARENT (который на самом деле похож на ProperySheet), его дочерним элементом является также диалог со стилем WS_EX_CONTROLPARENT, внутри которого находятся обычные элементы управления.
У меня две проблемы с этой конструкцией:
Зависание при нажатии клавиши Tab:
Когда окно контейнера имеет фокус, и я нажимаю клавишу Tab, оно должно перейти к первому нормальному элементу управления внутри диалога, который находится внутри мое окно контейнера. Это работает только в том случае, если в окне контейнера есть одноуровневое окно со стилем WS_TABSTOP, например, кнопкой ОК.
Нет перехода обратно в окно контейнера:
Когда окно контейнера имеет фокусируюсь и нажимаю клавишу Tab, он перемещается к первому нормальному элементу управления в диалоге, как и ожидалось (если условие 1. не применяется). Но затем нажатие Shift + Tab не возвращает его обратно в окно контейнера.
Обычный PropertySheet имеет немного иную структуру: там PropertyPages не являются дочерними окнами PropertySheet, но они братья и сестры. Я предполагаю, что обе проблемы связаны с этой разницей.
Но почему? Я не вижу, что я делаю здесь неправильно.