• 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区别

  • 相关阅读:
    CSS_2
    二柱子与他的计算题
    第一章 类与对象
    深入理解计算机系统之一--整数运算
    指针数组的应用
    对象个数以及构造函数次序
    范式介绍
    内连接与外连接
    TCP三次握手四次分手
    进程间的通信方式
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8574395.html
Copyright © 2020-2023  润新知