zoukankan      html  css  js  c++  java
  • mfc和win32区别

    Win32通常是指sdk编程方法,app没有被封装,开发人员需要自己搭程序框架;
    mfC则是以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量

    (整理自CSDN,http://topic.csdn.net/u/20090611/20/a0532864-3890-4a67-b649-ecbf31d4fc70.html,感谢各位的智慧,学习了)

    MFC就是 微软给你包装了的库,提供了很多扩展功能,以及高级功能,这样方便你使用,而不是自己从头调用API来实现
    而API由于是MFC下一层,自然实现更灵活,可以根据你的需要来使用,不会被MFC类库所限制。‍win32和mfc编程的最大不同是
    win32是编程者自己把消息和响应函数联系在一起。
    mfc是编程者采用微软为我们做好了MESSAGE-MAP机制,来处理消息。
    --------------
    mfc是便利的,为什么有人不用呢?
    不用mfc的人群往往是从DOS时代开始从事窗口编程的人,他们早在mfc出世之前就编得一手好程序。
    长期的编程过程中,每人,每个TEAM都拥有了自己的消息处理机制程序库或类库。
    当然有很多人认为他的类库比mfc使用方便。他开始为窗口编程的时候,mfc的TEAM的很多人还在学校里读书呢。
    --------------
    如果不是从那个年代过来的人,还是用mfc吧!
    mfc是封装的类,最后还是会调用win32api 
    win32api开发效率是底一些,但比较自由. 
    有时候mfc是封装的类不能满足我们的要求,这时就需要我们自己用api来开发啦 ‍MFC是专注于用户界面的,而Windows SDK专注于UI, console,Windows服务,嵌入式,驱动多种类型的程序
    MFC是一套类库,适应范围窄,可以搞ERP软件,但效率不如其他语言高,而且类库并没有对DDK,openGL,D3D等专项领导的函数库进行封装。而Windows SDK提供了专题开发的平台。
    MFC中对所有的句柄,对象,消息都进行了严格的检测,如果你不知道它的内部机制,随便调用函数很容易出错,而SDK提供的是一种宽松的开发环境,你可以用面向对象的思想定义自己的类,对界面控件进行封装。
    在一些专题开发项目,你可以不懂MFC,但是在一些常规的软件开发,你必须熟悉MFC,同时还要懂SDK.‍ win32是windows下的最基本的编程方式,使用它得到的代码最干净最有效率,也是最底层,它是其它所有方式实现的基础。一般指只使用API和SDK。
    MFC是对win32的封装,使用win32编程方法,写了一个又一个类,让我们不用再重复大量劳动。但毕竟是封装,所以不可能完全实现win32所有功能。用着虽然方便,但距离细节毕竟远了,在个性个、特殊化方面还有差距。

    两者相比,win32更本质,MFC更抽像。从软件工程来看,MFC更符合要求,更人性化。我们在正常使用中,优先使用MFC
    1.MFC的功能正常情况下可以满足绝大部分的需要,特殊需要,也可以直接用API和SDK实现。但反过来,win32下想用MFC的东西,却是非常困难的。MFC下开发,是包融了win32.
    2.MFC和vc融合,拥有大量人性化的东西,会极大增加开发效率。如界面、通用对话框等。而且它的代码是微软写的,比你自己用win32实现更值得让公司信赖。而且代码量会降低很多,更容易调试和维护。
    3.很多功能你自己实现起来非常麻烦,甚至你的技术没达到那标准,而使用MFC很简单,这会迫使你使用它。
    有些场合下不要使用MFC:
    1.三维游戏等,这些东东MFC并没有包含,这时需要使用其它库。使用MFC反而不好,会造成臃肿和拖累。
    2.特殊程序,如病毒等后台工具。它们根本不需要什么界面,需要的就是效率,而且要求体积小。这些无疑Win32比MFC强,甚至连win32都可以不用。
    3.简单的实现,win32上简陋的东西就够用了,或者就算不够用,但有STL等C++自带的,那么MFC就可以不需要了。win32更符合老编程员的习惯。而且如STL,同样功能下,事实上比MFC更优秀。mfc在d3d,opengl,ddk开发的弊端:
    1.MFC是一种封装类,是个宠然大物。当你使用d3d,opengl等它没有封装的进行开发时,使用它完全是种浪费,不需要它为何要挂上它呢?如编d3d时,它本身已经实现了几乎所有的需求,别再拖个油瓶。
    2.MFC不仅是一种封装类,更是封装了一种MFC编程思想。它具有特有的文档视图结构和消息影射。我们在做普通程序时,这些会给我们带来方便。但做d3d时,编程思想又回归win32,那样更直接和有效。这时MFC的编程思想和方式就不合适了。特别是DDK,那是跟底层打交道,要短小高效,跟MFC是两种不同追求风格。
    3.事无绝对,选择合适的也就是最好的,如果你在进行D3D开发时,还要使用MFC的东西也是可以的。如果不是大量使用,可以把MFC中你需要的部份扒开单独使用。‍ win32指系统环境,MFC是微软的一个开发平台。
    楼主应该不是想了解win32与MFC的区别吧?因为MFC以前主要就是在win32环境中进行开发的,二者不是一个层面的啊。
    可能楼主说的是SDK与MFC吧。一句话,MFC是对SDK的包装。就像一瓶酒,它就是SDK,然后给这瓶酒加上一个盒子,它就成了MFC。
  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/batman425/p/3227294.html
Copyright © 2011-2022 走看看