ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用 MFC,使用API函数编的程序。 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库的缺点是,作为模板库,在出现错误的时候会比较麻烦

ATL CLR MFC Win32 常规 的区别的更多相关文章

  1. VS2008中 ATL CLR MFC Win32 区别

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

  2. VC学习笔记---ATL MFC CLR三个库的区别

    MFC.ATL和CLR是VC2005内置的三大库,涵盖了Windows的各种开发方法和开发应用.当然关于C++开发的库不止这三个,不过这三个是微软推荐. 从编程所处层次而言,WIN32为最底层,其次是 ...

  3. 用ATL和MFC来创建ActiveX控件

    摘要:目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发.MFC代表了创建独立的Windows应用的一种简单.一致的方法:ATL提供了一种框架来实现创建COM客户机和服务器所 ...

  4. MFC和GTK的区别

    关键技术 http://blog.csdn.net/master_max/article/details/1540204 MFC和GTK的区别?? 1. 两者都是基于面向对象设计的.尽管MFC是用C+ ...

  5. ATL、MFC、WTL CString 的今生前世(转载)

    转载:https://www.cnblogs.com/tekkaman/archive/2011/04/20/2022650.html 上文分析了ATL.MFC CString的设计和实现,我们不禁会 ...

  6. [转]用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口

    原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题

  7. VC 中的ATL ActiveX 和 MFC ActiveX 有什么区别

    原文转自 https://www.cnblogs.com/zhwl/archive/2012/11/29/2794509.html ATL是ActiveXTemplateLibrary的缩写,它是一套 ...

  8. mfc和qt的区别

    注:引用来源 http://wenda.chinabaike.com/b/30934/2013/1208/707410.html QT使用的编译器是MinGW,即Linux下的GCC移植到window ...

  9. 深入浅出MFC——Win32程序基本概念(一)

    1. Windows程序分为“程序代码”和“UI资源”,下图所示: 2. Windows支持动态链接(应用程序所调用的Windows API函数是在“执行时期”才链接上的).Windows程序调用的函 ...

随机推荐

  1. 英特尔CEO科再奇:尚未发现通过漏洞获取用户数据的行为

    1月9日消息,英特尔CEO科再奇在美国西部时间1月8日举行的2018年CES中发表主题演讲,他在开场时面向产业界谈到了最近报道的安全研究发现.科再奇表示:“在我们开始之前,我想借此机会感谢整个行业,为 ...

  2. HTTP 知新

    REST 先从 REST 的角度来看看 HTTP 协议规范, URL:需要操作的对象,也就是资源 HTTP method:我要对该对象做什么(POST 增.DELETE 删.GET 查.PUT 和 P ...

  3. 通过 systemctl 设置自定义 Service

    如果要在Linux 上设置一个开机自启,出现问题自动重启,并且有良好日志的程序,比较流行的方法有 supervisord.systemd,除此之外,还有 upstart.runit 等类似的工具. 但 ...

  4. php中数据类型的强制转换

    1.在PHP开发种在很多的地方要涉及到数据类型的转换,尤其是涉及到金额的数据类型,一定要转换成float类型,否则在入库的时候可能会因为数据类型的不同覆盖掉之前的金额.(字符串和float类型相加) ...

  5. 一个简单的NetCore项目:1 - 搭建框架,生成数据库

    1- 启动项目 安装.NETCORE SDK,教程在网上可以搜索的到,这里就不讲述了.简单粗暴的方式就是安装最新的VS2015. 2-搭建框架 2.1 打开VS新建一个项目,在弹出的新建项目对话框中, ...

  6. springMVC前后台数据交互

    假设项目需求是在springMVC框架下,后台要传送一个list到前台,那我们就要做以下几个步骤: 1 在web.xml文件中进行springMVC的配置: <?xml version=&quo ...

  7. C#中async和await用法

    .net 4.5中新增了async和await这一对用于异步编程的关键字. async放在方法中存在await代码的方法中,await放在调用返回Task的方法前. class Class1 { pr ...

  8. css如何选择相同class下的第一个class元素和最后一个元素?

    如图,如果像选择类名为  class="exerciseInfo"  中的第一个和最后一个div,做法如下: 选择第一个类名: .exerciseInfo: nth-of-type ...

  9. 算法(3)Rotate Array

    题目:将一个n个元素的数组右移k位,比如n=7,k=3,对数组[1,2,3,4,5,6,7]作如下旋转[5,6,7,1,2,3,4] 思路:[5,6,7,1,2,3,4],不知大家看出来了没有呢,两次 ...

  10. 【BZOJ3674】可持久化并查集加强版

    可持久化并查集我觉得就是可持久化数组的一种应用.可持久化数组,顾名思义,就是有历史版本的数组,那么如果我们暴力修改储存的话,修改O(n)查询O(1),空间O(n*m),这样肯定不可行,那么我们发现主席 ...