メインウィンドウとメニューオプションから開かれたいくつかのmdi子で構成されるCで書かれたレガシーアプリがあります。新しい mdi の子を C# で記述できるようにするために、C コードによって呼び出され、次に C# コードを呼び出す C++ COM 相互運用レイヤーを作成しました。次に、SetParent API を使用して、開いている C# ウィンドウの新しい親として C メイン ウィンドウを設定します。これは機能しているようです - C# ウィンドウはメイン ウィンドウの MDI 子のように動作します。しかし、子ウィンドウは適切に描画されず、他のウィンドウをその上に移動したり、メイン ウィンドウの端に移動したりすると悪化するだけです。他のウィンドウの一部で描画されるか、移動するとそれ自体の一部が残ります。 . さらに、画面がうまく反応しません。たとえば、あるテキスト ボックスから別のテキスト ボックスに移動できません。
私のソリューションのアーキテクチャについて質問しないでください (信じてください。これが唯一の方法です)。ただし、SetParent によって作成された子でこのような問題が発生したことがある場合は、修正できたかどうかをぜひお聞かせください。 .