У меня есть устаревшее приложение, написанное на C, которое состоит из главного окна и нескольких детей mdi, открытых из параметров меню. Чтобы разрешить запись новых файлов mdi на C#, я создал слой взаимодействия C++ COM, который вызывается кодом C и, в свою очередь, вызывает код C#. Затем я использую API SetParent для установки главного окна C в качестве нового родителя любого открытого окна C#. Кажется, что это работает - окно C# ведет себя как дочерний MDI главного окна. НО, дочернее окно не красится правильно и только ухудшается, если вы перемещаете другие окна над ним или перемещаете его по краям главного окна - он нарисован частицами других окон или оставляет кусочки самого себя, когда он перемещается , Кроме того, экран не очень хорошо реагирует, например, вы не можете вставлять текст из одного текстового поля в другое.Проблема перекомпоновки с дочерним устройством MDI, созданным с помощью SetParent API
Пожалуйста, не ставьте под сомнение архитектуру моего решения (поверьте мне, это единственный способ), но если вы когда-либо видели такую проблему с ребенком, созданным SetParent, я бы хотел услышать, если вы удалось это исправить.
+1 для четко сформулированного вопроса. Однако «это единственный способ» часто не соответствует действительности. ;) Добро пожаловать в SO – dss539
Справедливая точка! Я просто пытался сосредоточиться на этой проблеме, поскольку я уже пытался и исключал ряд «других способов». – AlfieAmalfi