|
|
1
11
再次讨论这个问题是因为我已经成功地用WPF替换了我们的顶级MFC UI(主框架、窗口和工具栏)。 事实证明,我们的核心绘图代码只需要交给HWND即可渲染。这使得重用现有的C++代码库变得非常容易。 下面是我采取的方法的关键部分的简要介绍:
作为旁注,我们使用的是来自 Divelements 到目前为止,我和他们在一起很开心。 |
|
|
2
3
|
|
|
3
2
我以前在使用WinForms的项目中也做过同样的事情。我们需要将MFC项目迁移到.NET1.1,并决定采用MFC应用程序的所有核心功能,并围绕所有这些功能编写托管包装。然后我们写了一个WiFrm前端并逐个插入了传统C++代码。我认为从长远来看,我们做出了正确的选择。我无法想象如果我们试图同时保留MFC前端,我们会怎么做。 |
|
|
4
2
FWIW,在此期间,您可以使用MFC功能包(VS2008 SP1提供)让您的应用程序快速呈现Office 2007外观(如果您的用户喜欢,您甚至可以添加一个功能区,尽管这会更复杂)。我在一天内使用这些新类修改了旧MFC应用程序的UI,现在,公平地说,它看起来棒极了,我的用户非常满意(你可以支持一系列的外观和配色方案。)MS选择了BCG工具包,但如果你想付少量的钱,还可以使用其他工具包(例如CodeJock) 我知道这并不能回答你的问题,但如果这只是你正在进行的UI更改,那么它可能值得一看。 |
|
|
5
1
我认为你对策略掌握得很好。请注意,迁移到WPF的一个潜在难点是并非每个控件都有句柄。不幸的是,这是最笨拙的互操作性场景。好的,与MFC和WPF互操作的唯一方法是通过 WindowsFormsHost . WPF范式与MFC/WinForms也有根本不同,因此可能存在一些翻译问题。 考虑到您庞大但功能强大的遗留代码库,我可能会支持您的第二种方法。每次从一个控件开始,并将其设置为WPF-y。在新的托管控件和底层代码库之间创建定义良好的接口,然后使用该接口。如果你一次只做一件事,你的风险就会降低,比如WPF的学习曲线(这是非常陡峭的,imho)。 我觉得重要的是要注意,如果您要使用WinForms,我可能会建议使用前一种方法。更紧密的范例和相对平滑的学习曲线将更容易一次完成所有任务。 |