Visual c++ MFC是否仍用于新开发(任何材料体积)?

Visual c++ MFC是否仍用于新开发(任何材料体积)?,visual-c++,mfc,frameworks,lifecycle,Visual C++,Mfc,Frameworks,Lifecycle,我从来都不是MFC的忠实粉丝,但这不是重点。我读到微软将于2010年发布新版本的MFC,这让我感到很奇怪——我以为MFC已经死了(我真的没有恶意) MFC是否用于新开发?如果是这样,有什么好处?我无法想象它对C++之类的东西(甚至是C++使用Win32 API)有什么好处。 < P>我去年基于MFC做了一个项目。我不知道为什么选择MFC,但它足以让虚拟3D图形用户界面——一个刷新率为每秒10帧的楼宇管理安全系统——在上世纪90年代中期基于win32的PC上高效运行。可执行文件(只需要核心win3

我从来都不是MFC的忠实粉丝,但这不是重点。我读到微软将于2010年发布新版本的MFC,这让我感到很奇怪——我以为MFC已经死了(我真的没有恶意)


MFC是否用于新开发?如果是这样,有什么好处?我无法想象它对C++之类的东西(甚至是C++使用Win32 API)有什么好处。

< P>我去年基于MFC做了一个项目。我不知道为什么选择MFC,但它足以让虚拟3D图形用户界面——一个刷新率为每秒10帧的楼宇管理安全系统——在上世纪90年代中期基于win32的PC上高效运行。可执行文件(只需要核心win32系统DLL)少于400K,使用现代工具不容易实现。

远离托管代码有很多好处(可能您正在编写驱动程序UI或进行COM)


还有大量的MFC代码。也许你在X公司工作,需要使用他们在过去十几年中编写的无数DLL之一

MFC已随Visual Studio的每个版本更新。这不是头条新闻

至于新的发展,是的。它仍在使用,并将继续使用(尽管我和你一样,不喜欢这样)。许多组织在几年前就做出了技术决策,没有理由改变


不过,我认为你说的是老牌的商店,那些对维护/增强所写内容更感兴趣的人,而不是停留在最前沿。

有大量使用MFC的代码。我一直看到这些问题,这个还是用的,那个还是用的,答案是肯定的。我在一个非常大的组织工作,这个组织仍然雇用数百名用cobol语言写作的人。如果它曾经在企业中使用过,那么它将继续使用,直到没有更多的硬件支持它,然后一些公司会付钱让人编写一个仿真器,以便旧代码仍能工作

海军仍然使用带有磁芯的计算机作为内存,我确信他们有人在上面工作。技术一旦被创造出来,就永远无法得到支持。这有点像Deus ex machina,大型组织不完全确定他们的系统是做什么的,并且有一种压倒一切的恐惧感,害怕让企业屈服,他们不想尝试您的新型技术(顺便说一句,我们向IBM支付OS2上的尽力而为支持)

此外,mfc对于windows开发来说是一个完全可以接受的解决方案,因为它是一个对象模型,它封装了系统API,这几乎是大多数人从.net中得到的


作为附录,由于这个问题是悬赏问题,这是一个引用MS关于VS 11中mfc的话

在每个版本中,我们都需要平衡产品各个领域的投资。然而,我们仍然相信MFC是构建本机桌面应用程序的功能最齐全的库。我们全力支持并保持MFC的高质量。下面是我们在MFC for Visual Studio 11中修复的一些问题的简短列表:


如果你想阅读全文,这里是MFC仍然用于一些新开发和许多维护开发(包括Microsoft内部)的示例

虽然它可能比直接使用Win32 API慢几分钟,但性能损失确实很小——很少达到整个百分比。使用.NET时,性能损失要大得多在我的测试中,很少有10%个,20-30个是典型的,而且对于重计算来说仍然更高。例如,我有一个程序,在相当大的数组上做特征向量/特征值计算。我的原始版本使用C++和MFC在我们的标准测试机上运行了一分钟的测试用例。在C#中重新实现它会很酷。他们的版本在同一台机器上几乎需要三分钟(四核,16吉比特的RAM,所以不,不是“传统”硬件)。我承认我没有仔细研究他们的代码,所以可能会有所改进,但他们是优秀的程序员,所以3:1的改进让我觉得不太可能

有了MFC,当你想直接使用Win32 API时,也可以很容易地绕过框架直接使用Win32 API。有了.NET,你可以使用p/Invoke,但相比之下,这是相当痛苦的。

的发布(一年或两年前,iirc)这是MFC大约10年来最大的一次扩展,对MFC的发展起到了新的推动作用。我猜很多公司决定维护他们的遗留应用程序,推动它们向前发展,并在此基础上开发新的应用程序


对我来说(作为一个必须维护大型MFC应用程序的人),更大的问题是(Microsoft和第三方)的开发和支持减少组件而不是MFC本身。例如,如果在应用程序中组装了大量旧的和不受支持的纯32位Active-X组件,那么移植到64位并不容易。

在为新系统选择技术时,冷静并不重要。是的,如果你是学生或想玩,你可以选择任何你想要的

但在现实世界中,每种技术都有其优缺点。一年前,其中一个团队启动了一个新项目,决定在MFC中完成。 原因很简单:他们必须大量使用windows api进行底层操作,包括打印机、internet explorer和天知道还有什么

C#甚至不在游戏中,由MFC和QT做出决定,两者都有必要的功能,都可以轻松集成低级功能,唯一的区别是一些团队成员已经有MFC经验,因此他们不必在培训上浪费时间和金钱

让我们假设他们选择C和W