Я знаю о договоре между Владеющими окнами и их Владельцем и о том, что Собственные окна скрыты, когда Владелец скрыт.Это на самом деле то, что я хочу.Проблема заключается в том, что если вы показываете окно «Владелец» после , то окно «Владелец» сворачивается, тогда окно «Владелец» не скрывается, а отображается нормально на экране.В этом случае WindowState окна свернут при запуске, поэтому любое отображаемое окно Owned отображается на экране.
Я знаю, что могу вызвать ShowOwnedPopups , чтобы заставить ОС скрытьсявсе окна Owned, но это, кажется, работает только после того, как окно Owned было фактически показано, таким образом, вы получаете мерцание на экране.Я попытался явно скрыть окно (например, удалив бит WS_VISIBLE или пытаясь изменить WM_SHOWCOMMAND так, чтобы оно отображалось скрытым), но затем окно Owned не становится видимым при восстановлении владельца.Это согласуется с документацией по API ShowOwnedPopups, согласно которой единственными окнами, которые становятся видимыми, являются те, которые скрыты вызовом ShowOwnedPopups.
Так что я ищу какой-либо способ, чтобы ОС показывала окно в таком видеспособ, которым он не будет виден конечному пользователю, пока владелец не будет восстановлен, или способ установить флаг в окне, чтобы ОС думала, что она скрыла окно, используя ShowOwnedPopups, а затем я вручную скрою окно и установлюэтот флаг.
Обратите внимание, что код, показывающий окна Owned, не связан с оболочкой, поэтому непросто не показывать окно Owned, пока владелец не будет восстановлен.Это часть отдельного пользовательского элемента управления, и в данном случае это элемент управления WPF, поэтому элемент управления можно использовать даже в ElementHost, поэтому я не могу просто наблюдать за WindowState окна-владельца.Любое решение Windows API приветствуется.