MFC アプリケーションを WPF に移植していますが、おそらくアプリケーション全体を移植する時間はありません。MFC アプリには多くの CDialog ベースのウィンドウがあり、これらのウィンドウの一部を MFC に残し、WPF ウィンドウ内に表示して、WPF からモダリティを制御できるようにすることを考えています。
それを達成する簡単な方法はありますか?そうでない場合、これを処理する別の方法をお勧めできますか?
ありがとう、
破片
同様のレガシーアプリケーションについてしばらく前にこれを調べました。WPF と Win32 の相互運用の概要と一緒に WPF の CWnd から継承されたホスト MFC クラスから始めました。Hosting a Simple Win32 Control in a WPF Applicationと共にHwndHost Classを参照 (および検索) します。
問題は、それがうまく機能しなかったことでした.WPFアプリケーションが危険にさらされていると感じ、十分に確実に動作させることができなかったため、このアプローチをあきらめました.
そこで、別の方法で MFC アプリケーションを、すべてのダイアログを備えたスタンドアロンの「ダイアログ プロバイダー」として再構築しました。これにより、すべてのダイアログ作業が行われ、結果が WPF アプリケーションに通知されました。これが機能し、アプリケーションが前進できるようになりました。また、MFC アプリケーション内で .NET Framework を活用しようとしましたが、最初は機能せず、時間が重要でした。
最終的な結果は、AWK で記述された Q&D コンバーターでした。これは、.rc、.cpp、.h を取り、編集可能な形式で各ダイアログの XAML と C# を生成しました。クラス ウィザードを使用して MFC ダイアログを構築した場合は、このプロセスで非常に役立つ便利な区切り文字があるはずです。
役立つ区切り文字の例:
//{{AFX_DATA_INIT(CDialogFileProperties)
標準の共通ダイアログを使用している場合は、同等の wpf を使用してください。それ以外の場合は、wpf でゼロから作成する必要があります。または、wpf ウィンドウ内にダイアログを表示する Windows フォーム ホスト コントロールを使用します。