解决方案,是对所有要完成工作的统称,一般叫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区别

版权声明:本文为zhuluqing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhuluqing/p/8574395.html