zoukankan      html  css  js  c++  java
  • 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区别

  • 相关阅读:
    linux TCP数据包重传过程----小结
    linux TCP头部的构造的简单分析
    CentOS 7镜像下载
    JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能
    JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建
    JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
    Maven02——回顾、整合ssh框架、分模块开发、私服
    巧妙取法——最小公倍数
    深度优先搜索——地宫取宝
    Maven01——简介、安装配置、入门程序、项目构建和依赖管理
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8574395.html
Copyright © 2011-2022 走看看