2015-04-17 5 views
0

Я заметил, что в большинстве (если не все) приложений в Windows диалог не имеет двунаправленной ссылки относительно ее родителя. То есть У родителя диалога нет ссылки на диалог в списке дочерних окон. Я заметил это раньше, но теперь это действительно меня беспокоит. Это по дизайну? Есть ли способ получить дескриптор диалога (ов) окна (один, если модальный, один или несколько, если не модальный), учитывая только дескриптор окна?Почему родительское окно диалога не имеет диалога в качестве дочернего?

ответ

0

Возможно, вы сбиваете с толку с владелец. Существует различие между child window и owned window. Оба устанавливаются либо с использованием SetParent(), либо с параметром hwndParentCreateWindow/Ex(), но разница в том, что принадлежит. Окно - это перекрывающееся/всплывающее окно верхнего уровня, не имеющее флаг стиля WS_CHILD (за исключением нескольких окон верхнего уровня, которые принадлежат системе). Окна для детей могут быть перечислены с использованием EnumChildWindows(), тогда как нет единого API для перечисления принадлежащих окнам. Вам нужно будет использовать EnumWindows() для перечисления окон верхнего уровня, используя GetParent()/GetWindow(GW_OWNER), чтобы проверить, принадлежит ли каждому окну определенному владельцу.

Смежные вопросы