解决方案,是对所有要完成工作的统称,一般叫Solution。

项目,也叫工程,是将解决方案分成若干个模块进行处理,一般叫做Project。添加项目就是添加工程。解决方案是所有项目的总和。

一个项目里面有各种文件,如图片资源、音频资源、视频资源、ICO、MENU、SCROLLBAR等等。是一个独立的包罗各种资源的集合,基本算是功能齐全完备,自给自足的小团体了。因为每个项目里面都有一个CWinApp类的全局变量theApp,这就注定项目是可以独立启动运行的。

它唯一的缺点是小,是解决方案的一部分,能够独立完成特定工作的部件。相当于拖拉机上的发动机或者轮胎。形态完整,功能单一。

类,是完成项目的具体途径,一个项目可以由若干类组成,一般叫做Class。

在ATL项目中:

解决方案还是解决方案。

项目就是所谓的类型库,在IDL文件中有自己的GUID值。

类型库是idl文件、COM类文件,.h文件,.cpp文件,.def文件的综合体。也就是说类型库里面包含了我们所要用的COM组件(COM类)。

而我们经常使用的word、excel的COM组件,都是通过他们的类型库导入客户程序的,然后我们才能通过CoCreateInstance()来构建组件对象。

所有简单理解,类型库是所有相关联的COM组件生成的一个集合。

类就是COM类,也称为COM组件。CoCreateInstance()函数第一个参数就是COM类的GUID。

而且,ATL生成的DLL文件是以项目为单位的,生成的DLL文件名称就是项目名+.dll。因此和MFC类似,ATL的类型库也是一个独立的能被客户程序导入的dll文件,是对COM组件的打包。

导入类型库的意义:

我们要使用某个COM组件,首先导入包含它的类型库。这是让客户程序知道我们要使用的COM组件在计算机中的哪个位置。

知道了类型库的位置,通过组件类的CLSID值,就可以知道组件类的位置,通过接口的IID就可以找到这个接口了。

类型库的意义:

简单点讲,类型库就是COM类的容器,里面包含了若干COM类。

ProgID:

ProgID是在定义COM类时为类起的别名,方便程序员记住。命名规则为:ProjectName.ClassName.VersionNumber,即:

工程名(类型库名称).类名(COM类名称).(版本号)

ProgID是个字符串,能够与其映射的CLSID相互转化:

CLSIDFromProgID()、CLSIDFromProgIDEx()
由 ProgID 得到
CLSID。没什么好说的,你自己都可以写,查注册表贝

ProgIDFromCLSID()
由 CLSID 得到 ProgID,调用者使用完成后要释放 ProgID
的内存

ATL作用:

ATL专门用来生成COM组件的,编译后生成dll文件或者exe文件。

com组件和普通的dll文件有什么区别呢?

com组件优点:1.语言无关性;2.便于升级扩展;3.有很好的继承封装多态特性,即面向对象能力强;4.完成进程间,分布式功能;5.接口调用,便于组织。

com与普通dll区别

最新文章

  1. Python中的条件判断和循环
  2. iOS之 开发常用到的宏定义
  3. Oracle数据库语句大全
  4. poj1753枚举
  5. Linux上部署Tomcat(包括JAVA环境的配置)
  6. *[codility]CartesianSequence
  7. JSP 中 JSTL 页面标签的笔记
  8. IIS Express中如何配置支持json
  9. USACO 4.2 Drainage Ditches(网络流模板题)
  10. imagebutton、imageview的属性
  11. 2017-4-18 ADO.NET
  12. 前端UI组件复用工具
  13. C++11 static_assert
  14. asp.net core 一 Centos 环境部署
  15. Python中使用MongoEngine1
  16. C++—模板(1)模板与函数模板
  17. 使用keytool自建证书及应用
  18. Linux小技巧之:两种方法统计访问web网站的前10个IP
  19. perf 安装到分析
  20. sparkR介绍及安装

热门文章

  1. css样式控制元素固定在底部
  2. Cardboard虚拟现实开发初步(一)
  3. Robot Framework ---Selenium API
  4. yosemite开启HAXM硬件加速执行安卓虚拟机
  5. iPhone换电池是原装电池好还是换第三方大容量电池好?
  6. 字符串转化成十六进制输出StrToHex(Delphi版、C#版)
  7. C语言内存分配函数malloc——————【Badboy】
  8. Nginx性能测试
  9. PowerBuilder -- 日期
  10. 远程服务器上的weblogic项目管理(一)项目部署与更新流程