MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于C++开发的库不止这3个,不过这3个是微软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. ============================== WIN32 winAPI MFC MFC类库 CLR .net库 ============================== 1. WIN32常规就是不用MFC,使用API函数编的程序。 2. MFC库有很多年的历史了,MFC是基于Windows API 的简单封装。其核心架构基于"Document/View"架构(20年前被认为很潮流的一种概念)和消息流动机制。这个库自从VC6开始到现在都没有多大改动。MFC封装的范围包括GUI,IO,数据库,网络编程等等方面。但是很多系统开发必须的api都没有封装,这样开发者一般都在MFC的基础上自己处理与业务相关的任务。事实上很多人用MFC只是利用其GUI部分的封装。这个库GUI处理的效率也并不是很高,有时候与UI处理相关的代码会占到整个项目的一半甚至更多。总的来说,这是一个垂老的库,微软在10年以来,除了对MFC进行修修补补以外,没有进行大的改进或者更新。如果你问MFC还会活多久?恩,这是个问题。如果有一天MFC不在了,微软在这个级别上并没有其他产品能够代替它。 3. CLR库是随着.Net Framework 2 和VS2005一起发布的库,其核心的实现和C#,VB.net 一样。都是基于公共语言运行库。.Net Framework封装了大量系统的api,以类库的形式提供给开发者。C++中的CLR库可以使用其中和本机代码有关的部分,目前C++还不能涉及到asp.net部分。CLR库中的C++颠覆了很多标准C++的传统,甚至可以说,这里的C++不是C++,只是披着C++的皮干其他的事。这里的C++更像是C#或者类似的语言。所以这里不叫C++,而叫做C++/CLI,值得一提的是,有关C++/CLI的部分目前还没有被标准C++接受,最近微软有关C++/CLI标准化的提案被C++标准化委员会拒绝了。所以C++/CLI目前还是微软的一家之言。 4. ATL用于编写COM程序。ATL库貌似也年纪很大了,至少在我接触到VC的时候就有它的存在了。这个库可以追溯到COM组件,因为ATL的目的就是帮助开发者更好的与COM交互。到底什么时候有COM这个东西的 ?我也不知道,我只知道COM是有16位版本的,在Windows升级到32位的时候COM也随着升级到了32位。COM就像一些封装好的类对象一样,通过封装系统的api,提供一些标准的方法来给你使用。所以系统中有什么组件,就可以在ATL中用什么方法 。所以ATL不止可以写ActiveX,也可以有window,也可以有其它。有时候有些微软发布的功能是只以COM组件的形式发布的,例如MSXML,这时候MFC就不适合,是要ATL来处理的。但是ATL在处理UI这方面并不是很强,所以微软工程师有一个开源的UI 框架,叫做WTL,专门用来处理UI的。ATL库的缺点是,作为模板库,在出现错误的时候会比较麻烦,出错提示会驴头不对马尾!

转载于:https://www.cnblogs.com/xmxu/archive/2012/08/20/2647377.html

ATL CLR MFC Win32的区别相关推荐

  1. ATL CLR MFC Win32 常规 的区别

    ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用 MFC,使用API函数编的程序. MFC.ATL和CLR是V ...

  2. ATL与MFC消息分发机制的对比---由金山开源代码引出的思考(一)

    博客已迁移至:http://kulv.sinaapp.com/,这里不再使用 ATL与MFC消息分发机制的对比---由金山开源代码引出的思考 (一) 前几天刚看金山开源代码时写了一篇博客分析了一下其消 ...

  3. ATL 和 MFC 字符转换宏

    ATL 和 MFC 字符转换宏  ATL3.0 Ø     ATL3.0中的W2T ,T2W等一系列宏很方便,但一定要小心,它们从栈上分配内存,直到调用它的函数返回前,该内存不会被释放,如果在一个循环 ...

  4. MFC win32 API串口异步模式代码示范 vs2015

    MFC win32 API串口异步模式代码示范   vs2015 本程序为单步接收,即点击接收按钮,才能收到消息. 实时循环接收需要添加线程 参考实例: https://blog.csdn.net/t ...

  5. Visual Stutio中win32控制台应用程序、win32项目、MFC项目的区别:

    我的理解,我首先把这几个货分为两大类:第一类包括win32控制台应用程序,第二类就是剩下那俩货.而剩下那俩货又有一个包含关系,即win32项目包含mfc.(我个人是这个区分的.) 一. 区别: (1) ...

  6. CRT、ATL、MFC 三者介绍和关系

    CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行.后来在此基础上开发了C++ Runtime Library,所以现在CRT是指Microsoft开发 ...

  7. SDK,API,MFC 三者的区别

    SDK - Software development kit API - Application programming interface MFC - Microsoft Foundation Cl ...

  8. ATL编程 MFC应用

    一.生成动态库 1.用ATL创建动态库 打开VS2010->文件->新建->项目->Visual C++,ATL,ATL项目,名称:AtlDll->确定->下一步- ...

  9. MFC win32 API串口同步模式代码示范

    win32 API串口同步模式代码示范 源文件下载: vs2015打开 文件名: MFC_Win32API_同步串口.rar 在OnInitDialog()位置初始化串口: handleFile1 = ...

  10. MFC/WIN32程序美化之使用skinH更换皮肤

    官网 https://www.skinsharp.com/htdocs/index.htm 使用比较简单 使用到skinH.dll,这是程序运行的动态支撑库,还有skinH.lib文件,编译时用到的. ...

最新文章

  1. css 网格布局_我从CSS网格布局中学到的东西
  2. Android中setLayoutParams要用父控件的LayoutParams
  3. 学习笔记Hadoop(一)—— Hadoop介绍(1)——认识大数据
  4. 有趣、好玩、有料的网站收藏
  5. 查看systemctl或service启动服务日志
  6. .net WebApi开发
  7. 二级菜单打开一个时其他关闭_简介——菜单和工具栏
  8. 轻松scrum之旅 思维导图读书笔记
  9. 地统计学之变异函数深入理解与分析
  10. AUTOCAD Study
  11. java 开根号_Java实现开根号运算(不使用数组和String)
  12. m2增长率曲线_中国通胀率(中国m2历年数据曲线图)
  13. 流量分析 seo alexa 排名
  14. # 搜狗输入法~快捷键总结
  15. [矩阵论] 谱半径小于1,则I-A可逆
  16. Chinaz:谈谈近期的安全事件
  17. 同相放大器、反相放大器的区别与优劣
  18. 【计算机组成原理】IEEE 754
  19. 数据流和数据报的理解(转载)
  20. nextcloud应用_4个Nextcloud必备编写应用程序

热门文章

  1. 【学术杂谈】施一公:论文和科技实力是两回事,大家千万要分开
  2. 【主成分分析法】NLPer的断舍离(上篇)
  3. 《逆袭进大厂》第二弹之C++进阶篇59问59答(超硬核干货)
  4. 【每日算法Day 108】一道简单的二叉树题目,写法还是挺多的。
  5. [EMNLP18]针对自顶向下和中序移进归约成分句法分析的Dynamic Oracles
  6. 软件技术架构:通过限流与熔断,打造一个“靠谱”的系统
  7. 头衔的权威暗示影响力
  8. QTP自动化测试进阶
  9. 《Java程序员全攻略:从小工到专家》连载二:IT行情分布
  10. 优化理论18----Fritz John条件