У меня есть «подключаемое» приложение C #, где каждый плагин работает в своем собственном потоке и создает свое собственное окно, но дает общую иллюзию отдельного приложения MDI.
Например, окнавыложено в Z-порядке примерно так:
... где MainHeaderFormвсегда вверху, а BackgroundForm всегда должен быть внизу стопки.Однако не должно быть возможности для других (внешних) Windows появиться в Z-порядке этого приложения (таким образом разрушая иллюзию MDI).Я всегда хочу держать эти окна в таком порядке и (где это возможно) показывать эту «группу» окон над всеми остальными окнами, когда они отображаются.
Причина, по которой у меня есть плагины в отдельных потоках, заключается в том, чточтобы их можно было принудительно удалить / убить, если они перестают отвечать на запросы.Насколько я знаю, это невозможно сделать в одном потоке без отключения ВСЕХ плагинов.
Но у меня возникают проблемы, когда (возможно из-за синхронизации) иногда окна плагинов появляются заBackgroundForm и другие странности.
Я поддерживаю общий Z-порядок из потока GUI и использую «Вызывает», чтобы заставить Windows выполнять SetWindowPos.Однако, как упомянуто выше, это, вероятно, выполняет блокирующий вызов (?), Который может объяснить некоторые из проблем.
В противном случае функциональность является желательной - это просто проблемы с отображением.
Если у кого-то есть дополнительные указания, я буду очень признателен.
Большое спасибо