ホストされているウィンドウが正しく破棄されていることを確認するのに問題があります。
HwndHostTabControlに表示している派生クラスがあります(おそらくそれは無関係ですが)。タブが閉じたときに(含まれているウィンドウが閉じたときではなく)、ホストされているコンテンツを破棄しようとしています。
私は現在、の効果のコードを持っています。myControlHost.Dispose()これにより、HwndHost.DestroyWindowCoreすぐに呼び出されます。問題は、DestroyWindowCoreがホストされているHWNDコンテンツを実際に破棄しないことです。
CWnd基盤となる派生アプリケーションが何かを確実に受信するにはこれで十分だと思いましたがWM_CLOSE、これは発生しないようです。Spy++は、送信された登録済みメッセージ「HwndSubclass.DetachMessage」のみを報告します。
WM_CLOSEこれは自動的に行われることになっているため、ホストされているウィンドウを明示的に送信することは想定されていないことを読みましたDestroyWindowCore。
HwndHost派生コントロールを手動で削除するときに、ホストされているウィンドウが正しく破棄されるようにする正しい方法は何ですか?