WinForm ダイアログの所有者の HWND を取得できる必要があります。アンマネージでは、前面のウィンドウの HWND を取得するバックグラウンド スレッドがあります。次に、コードは ::GetParent(frontHWND) を呼び出して、別の非モーダル MFC ダイアログを非表示にする必要があるかどうかを確認します。WinForm ダイアログが frontHWND の場合、GetParent 呼び出しに対して常に NULL が返されます。また、.Net が親と所有者の違いをクリーンアップしようとしたことを認識して、GetOwner を試しました。Spy++ を使用して WinForm ダイアログを見ると、WinForm には親または所有者がいないとも表示されます。通ってきました
NativeWindow ^natWin = gcnew NativeWindow();
natWin->AssignHandle(IntPtr(hwndParent));
managedDlg->ShowDialog(natWin);
上記のコードは、WinForm の所有者を設定しませんでした。OnFormShown() で WinForm コードから Win32 SetParent を呼び出してみましたが、MFC アプリケーションと WinForm がロックされました。
管理されていないダイアログ/アプリを管理されたwinformの所有者/親にする方法を誰かが説明できますか?