VS中解决方案、项目、类及ATL的理解

VS中解决方案、项目、类及ATL的理解


解决方案,是对所有要完成工作的统称,一般叫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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值