Зависание в IsDialogMessage () со стилем WS_EX_CONTROLPARENT - PullRequest
0 голосов
/ 23 марта 2020

Моя проблема немного похожа на Почему IsDialogMessage () никогда не вернется? , но у меня есть особая ситуация, которую я полностью описываю здесь:

У меня есть окно пользовательского контейнера со стилем WS_EX_CONTROLPARENT (который на самом деле похож на ProperySheet), его дочерним элементом является также диалог со стилем WS_EX_CONTROLPARENT, внутри которого находятся обычные элементы управления.

У меня две проблемы с этой конструкцией:

  1. Зависание при нажатии клавиши Tab:

    Когда окно контейнера имеет фокус, и я нажимаю клавишу Tab, оно должно перейти к первому нормальному элементу управления внутри диалога, который находится внутри мое окно контейнера. Это работает только в том случае, если в окне контейнера есть одноуровневое окно со стилем WS_TABSTOP, например, кнопкой ОК.

  2. Нет перехода обратно в окно контейнера:

    Когда окно контейнера имеет фокусируюсь и нажимаю клавишу Tab, он перемещается к первому нормальному элементу управления в диалоге, как и ожидалось (если условие 1. не применяется). Но затем нажатие Shift + Tab не возвращает его обратно в окно контейнера.

Обычный PropertySheet имеет немного иную структуру: там PropertyPages не являются дочерними окнами PropertySheet, но они братья и сестры. Я предполагаю, что обе проблемы связаны с этой разницей.

Но почему? Я не вижу, что я делаю здесь неправильно.

...