我目前正在处理非常大的旧版MFC MDI应用程序。它具有大量UI元素-可停靠的工具栏,自定义树控件,上下文菜单等。它是图像处理应用程序,因此主 View 使用DirectX和OpenGL进行渲染。该产品已有10年的历史了,此处的重点之一是更新产品的外观。
知道Microsoft在提供C++/MFC与.NET之间的互操作性方面做得很好,我认为逐步增加代码库是有意义的。我现在正在努力的是从哪里开始。
一种方法是使用WPF淘汰MFC框架,并尽可能多地重用C++代码。这将使我们能够最大程度地利用WPF架构的好处,但是这意味着漫长的开发周期,直到我们再次完全发挥作用。
另一种方法是用WPF对应的控件一次替换MFC控件。这将使我们能够逐步工作。我对这种方法的担忧是,这意味着托管和非托管代码之间将有很多连接点,而且我不确定从何处着手替换主菜单和工具栏之类的东西。
还是这里没有其他选择?
任何建议或有关此主题的信息的链接将不胜感激。
更新: DavidK提出了一些很好的问题,因此我在此添加了动机。
1)产品的 future 发展
该产品仍在积极开发中,并定期添加新功能。我认为尝试缓慢地向C#/WPF迁移非常有意义。以我对C#/WPF的有限经验,我发现与使用C++/MFC相比,生产率得到了惊人的提高。
使用WPF的另一大好处是能够利用多头系统。 MFC应用程序仅限于单个顶级框架,因此很难利用多个监视器。
2)员工保留和招聘
找到愿意在MFC上工作的开发人员越来越难。对于当前开发人员的职业发展而言,接触更新的技术也很重要。
最佳答案
再来一遍,因为我已经成功地用WPF替换了顶层MFC UI(主框架,窗口和工具栏)。
事实证明,我们的核心绘图代码只需要交给HWND即可呈现。这使得重用我们现有的大部分C++代码库非常容易。
这是我采用的方法的关键部分的简要概述:
附带说明一下,我们正在使用Divelements中的SandDock和SandRibbon,到目前为止对它们非常满意。
关于c# - 将大型MFC应用程序迁移到WPF/.NET有哪些技术?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/836511/