VC++下WIN窗体和MFC窗体的区别

 winform 是基于托管c++的,编程效率高,开发程序简单方便,但需要.net支持。且计算机开机后首次运行需要.net支持的程序时需要加载.net运行库,启动速度较慢。
MFC在进行设置后就可以生成只需要windows xp以下系统自带的动态库就可以运行了,相当于绿色软件。

WIN窗体(Form),是.net的术语,严格来说他不算标准的C++了,而是.net

呵呵,就我的理解来讲解MFC和windows窗体程序的区别吧:
  首先我要对反对MFC的人一点质疑,很明显一个东西存在这么多年,和肯定有它的道理,何况只要微软不倒,他的东西就有人用,因为就结合性来说,微软自己的东西肯定是勿庸置疑的。大家都说MFC封装得太差,但它的高效性,你们承认不,网易的首席游戏制作人云风也说:微软开发MFC的架构还是有一定的道理。总之一句话:还有很多人在用;


从结果来看,完全一样
但过程上来看,MFC就要简单的多。
因为MFC用windows 窗体应用程序写了很多工具,可以直接使用,可以让我们的工作简化很多
MFC的开发方法和windows 窗体应用程序完全不同。
如果要用,就是先用windows 窗体应用程序先写成MFC,再进行开发。

运行起来两者并没有不同,MFC其实就是封装了大部分的API,这样你调用一个MFC函数或new一个MFC的类相当于调用了很多API函数了,这样就节省了大量的时间了;两者的开发方法有点不同,MFC注重于现在类的重用;API方法注重于能熟悉使用WINDOWS API上。

问:我一直有一个疑问:在windows应用程序里面可以轻松设置界面(字体、大小、颜色……),怎么到了MFC应用程序就不行了?
答:因为Windows窗体这个说法容易误导人,应该叫Windows Forms是.NET引入的,可以像C#、VB.NET那样可以拖拽编程,.NET库把所有操作系统细节都封闭了,你使用各种控件的功能时就像VB6那样时由运行库代劳很多细节,你不需要知道对话框模板或GDI画刷之类的。不过程序是解释执行的,而且必须带.NET组件安装包才能发布。不过一般的程序也能接受。
不过对于VC开发的程序,大多数还是用MFC做的,因为考虑MFC是编译非解释,效率更高。如果想用.NET完全可以用语法更简洁的C#,.NET下C++自身的很多功能比如指针什么的就不能随便用了、VC++.NET总有些不伦不类。
不过用MFC比纯用Windows SDK写C程序要方便很多了,用SDK写就是那个“Win32项目”,所有控件的创建和消息处理都必须自己动手,稍微大一点的程序就很难管理了。而MFC点几下就能产生一个SDI/MDI框架,开发效率已经提高很多倍了。对各种Windows功能的封装、文档视图结构什么的都大大简化了绘图、打印、保存等操作。虽然是十几年前就成熟的东西,但是到现在来说还是宝刀未老

你说的没错,MFC是不基于.net的,而WinForm是基于.net的。
    用MFC开发的程序经过简单的设置(设置为静态连接),其release版本就可以脱离开发环境成为一个绿色软件。而WinForm则不然,它的release版本的软件需要开发时设置的对应版本及以上版本的.net运行库的支持才能运行。当然也可以用一些软件构建一个虚拟的.net环境,以前的飞信就是这么做的,可以利用飞信的虚拟环境来将你的WinForm程序(release版本)脱离Windows的.net来运行,但这样软件包会变的非常大(约大20M左右)。当然,vista和win7都已经在系统安装时集成了.net,所以xp以上的系统不必考虑.net的支持。
    其实MFC是基于visual C++语言的开发,而WinForm是基于托管C++的开发,也就是说WinForm程序开发可以简单认为是通常所说的CLI或者是C++/CLR。
    WinForm用C#语言来开发比较方便。

发布了51 篇原创文章 · 获赞 20 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/xuexijiaoliu/article/details/6846258
今日推荐