将MFC CDialog放入WPF格式

时间:2010-05-23 18:49:36

标签: wpf mfc porting cdialog

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

有没有一种简单的方法可以实现这一目标?如果没有,你能推荐另一种方法来解决这个问题吗?

感谢,
splintor

2 个答案:

答案 0 :(得分:3)

我暂时关注了类似的遗留应用程序,我从WPF and Win32 Interoperation Overview开始与host MFC class inherited from CWnd in WPF一起开始。请参阅(并搜索)HwndHost Class以及Hosting a Simple Win32 Control in a WPF Application

麻烦的是,它从来没有运作良好 - 我觉得它破坏了WPF应用程序,我无法让它在任何可靠的地方工作,所以我放弃了这种方法。

因此,采取不同的策略我将MFC应用程序重建为一个独立的“对话框提供程序”,它只包含所有对话框。这只是完成了所有对话框的工作,并通知了WPF应用程序的结果。这有效并使应用程序向前移动。我也尝试Leveraging the .NET Framework Inside an MFC Application但它最初没有用,时间也很重要。

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

示例有用的分隔符:

//{{AFX_DATA_INIT(CDialogFileProperties)

答案 1 :(得分:-2)

如果您使用的是标准通用对话框,那么只需使用wpf等效项,否则您可能需要在wpf中从头开始创建它们。或者使用Windows窗体主机控件在wpf窗口中显示对话框。