2

我们正在将 MFC 应用程序移植到 WPF,并且可能没有时间移植整个应用程序。MFC 应用程序有许多基于 CDialog 的窗口,我们正在考虑将其中一些窗口留在 MFC 中,并将它们显示在 WPF 窗口中,以便我们可以从 WPF 控制它们的模式。

有没有一种简单的方法可以做到这一点?如果没有,你能推荐另一种方法来处理这个问题吗?

谢谢,
分裂者

4

2 回答 2

4

不久前我研究了一个类似的遗留应用程序,我从WPF 和 Win32 互操作概述以及从 WPF 中的 CWnd 继承的主机 MFC 类开始。请参阅(并搜索)HwndHost 类,以及在 WPF 应用程序中托管一个简单的 Win32 控件

问题是它从来没有很好地工作——我觉得它损害了 WPF 应用程序,我无法让它在任何地方足够可靠地工作,所以我放弃了这种方法。

因此,我采取了不同的策略,将 MFC 应用程序重新构建为一个独立的“对话框提供程序”,它只包含所有对话框。这只是完成了所有对话工作,并将结果通知了 WPF 应用程序。这有效并使应用程序能够向前发展。我也尝试过在 MFC 应用程序中利用 .NET Framework,但它最初不起作用,而且时间至关重要。

最终结果是一个用 AWK 编写的 Q&D 转换器,它采用 .rc、.cpp 和 .h,并以准备好编辑的形式为每个对话框生成 XAML 和 C#。如果您已经使用类向导构建了 MFC 对话框,那么应该有在此过程中非常有用的有用分隔符。

有用的分隔符示例:

//{{AFX_DATA_INIT(CDialogFileProperties)
于 2010-05-26T00:33:59.250 回答
-2

如果您使用标准的通用对话框,则只需使用 wpf 等效项,否则您可能必须在 wpf 中从头开始制作它们。或者使用在 wpf 窗口中显示对话框的 Windows 窗体宿主控件。

于 2010-05-23T20:48:19.040 回答