在.NET WinForms中获取MFC Feature Pack GUI元素

时间:2010-06-11 06:57:37

标签: c# c++ winforms user-interface mfc

MFC Feature Pack(和VS 2010)为几个“现代”GUI元素(例如带有选项卡式文档的MDI,功能区和带有停靠面板的Visual Studio风格界面)添加了开箱即用的支持。这些对于我们这些必须支持基于MFC的传统应用程序并希望更新其外观的人来说是一个福音,并且这表明微软还没有完全放弃非托管C ++开发。但是,由于推动如此强烈支持.NET,WinForms和托管代码(并且有充分的理由),似乎没有理由在非托管C ++ / MFC中开发新的应用程序。

然后问题是如何在WinForms应用程序中获取这些GUI元素。到目前为止,我发现的几乎所有附加组件和库都需要花钱,并引入了额外的依赖项。我没有购买第三方库的预算,微软在MFC中免费提供的控件似乎足以满足我们的需求。但我仍然对学习MFC开发新应用程序有所保留。不仅时间上的投入看起来很重要(据说所有人都认为MFC似乎特别难以学习,即使对于有经验的.NET开发人员 - 尽管我愿意尝试),但MFC的生命周期问题也被提出。当然,考虑到用原生C ++编写的数百万行代码和现有应用程序,它将会存在一段时间,但手写似乎已经存在,可以说,它不再是微软吹捧的开发平台。

似乎这些功能现在应该可以在WinForms中使用,而不需要第三方附加组件,或者花费大量时间和资源来自定义绘制一切。我只是错过了一些东西吗?我发现很少在线将MFC的这些新特性与WinForms中可用的功能进行比较,主要是因为MFC上写的大部分内容都是在最近的更新之前发布的,之前它看起来被认为是“过时的”,还有其他缺陷,几乎没有一个吸引人的新发展平台。随着VS 2010的最新发布,我们有一段时间等待WinForms再次更新。您的客户在预算中需要具有现代风格的用户界面的应用程序有哪些途径?

2 个答案:

答案 0 :(得分:2)

大多数这些功能都是通过WPF提供给.NET开发人员的,而不是WinForms。没有什么能满足你对“现在应该可以在WinForms中使用”的期望,因为WinForms没有被添加到。就像之前的COM一样,“它没有死,但已经完成了。”

我认为你的答案在你的问题中。如果你正在维护一个MFC应用程序,请继续使它看起来像21世纪。如果您对MFC了解得很好,请继续使用它来购买新应用。如果你已经切换到托管代码,并且需要学习MFC来使用它,那就把这些精力投入到学习WPF中。有一些“转换器”将WinForms更改为WPF以节省您一些时间并帮助您更快地了解WPF - 例如http://wf2wpf.codeplex.com/

答案 1 :(得分:1)

WinForms几乎都在Zombieland中 - 并没有完全死亡,但绝对不是真的活着。我想说WinForms的一个功能区的可能性就在那里,有可能有新版本的MS-DOS。

如果您想要现在色带等新功能,MFC几乎是唯一的选择而无需为第三方库花费额外费用。微软已经说过,WPF 4的Ribbon控件应该可以在Real Soon Now上使用,但是AFAIK,它还没有用(虽然preview已经有一段时间可用了。)