首页 > 其他分享 >COM组件 学习笔记

COM组件 学习笔记

时间:2022-09-24 18:34:22浏览次数:50  
标签:STL ATL C++ 笔记 组件 COM 模板

 

 

 

  • COM组件是 以Win32动态链接库dll或可执行文件exe的形式发布的可执行代码组成的;
  • COM组件是动态链接的,COM使用dll将组件动态链接起来;
  • COM组件是语言无关的;
  • COM组件可以以二进制的形式发布;
  • COM组件可以在不妨碍老客户的情况下升级;
  • COM组件可以透明的在网络上重新分配;

 

  • COM组件提供了一个所有组件都应遵守的标准;
  • 允许使用组件的多个不同版本;
  • 可以按照相同的方式处理类似的组件;
  • 定义了一个语言无关的架构;
  • 支持对远程组件的透明链接;

 

组件必须满足两个条件:

  • 组件必须动态链接;
  • 组件必须隐藏/封装内部实现细节;

 

COM,也就是组件对象模型Component Object Model,是关于如何建立组件以及如何通过组件建构应用程序的一个规范;

在COM中,对一个组件的访问只能通过函数完成,而绝不能直接通过变量;

纯抽象基类只有虚拟函数,而没有任何实例数据;

定义一个纯抽象基类也就是定义了对应的内存结构,但是,内存只有在派生类中实现此抽象基类时才会被分配;

当派生类继承一个抽象基类时,它将继承此内存结构;

一个纯抽象基类所定义的内存结构可以分为两部分

  • 右边是虚拟函数表vtbl,其中包含一组指向虚拟函数实现的指针;
  • 左侧为一个指向vtbl的指针,称为vtbl指针;

指向抽象基类的指针就指向vtbl指针;

STL,ATL,WTL之间的联系和区别

STL

STL即 Standard Template Library (标准模板库)

STL是惠普实验室开发的一系列软件的统称。

STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。

 

ATL

ATL: Active Template Library (活动模板库)

ATL是一个产生C++/COM代码的框架,就如同C语言是一个产生汇编代码的框架。

ATL又不同于MFC,它完全面向COM组件,其技术路线也不同于MFC,MFC使用的是C++中的继承、封装、嵌套等常规技术,而ATL使用了C++中模板、多继承等高级技术,甚至还用到了STL。

WTL

WTL:Windows Templat Library (Windows 模板库)

WTL构架于ATL之上,采用C++模板技术来包装大部窗口控制,并给出一个与MFC相似的应用框架。

在Microsoft的PlatFormSDK中就有WTL是ATL的扩展,也是由ATL小组开发;

COM组件注册的意义:

  • 注册信息记录了组件的CLSID、组件的路径、组件的PropID等;
  • COM组件是跨应用的,各种应用程序需要识别并创建我们的组件;
  • 需要得到组件的路径,而路径是可能改变的;
  • 我们采用CLSID或者PropID去创建组件,不管COM组件的dll在哪个位置,都跟我们创建代码无关;

基本概念

ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。

ActiveX 控件是用于互联网的很小的程序,有时称为插件程序。它们会允许播放动画,或帮助执行任务,如在 Microsoft Update 安装安全更新,因此可以增强您的浏览体验。 [1]

在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(Windows,Mac,Linux)中任意运行的程序。这个组件就是ActiveX控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和java applet功能类似。

OCX 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension);是可执行的文件的一种,但不可直接被执行; 是 ocx 控件的扩展名,与 .exe、.dll 同属于PE文件。

COM组件对象模型(Component Object Model,COM) 是基于Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。

DCOM(Microsoft Distributed Component Object Model分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95或者其后的版本上)。

中文名分布式组件对象模型外文名Microsoft Distributed Component Object Model简    称DCOM释    义是一系列微软的概念和程序接口

STL标准模板库(Standard Template Library,STL)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。虽说它主要出现到C++中,但在被引入C++之前该技术就已经存在了很长时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。

Boost 库是一个经过千锤百炼、可移植、提供源代码的 C++ 库,作为标准库的后备,是 C++ 标准化进程的发动机之一。 Boost 库由 C++ 标准委员会库工作组成员发起,在 C++ 社区中影响甚大,其成员已近 2000 人。

Boost 库为我们带来了最新、最酷、最实用的技术,是不折不扣的 “准” 标准库。

MFC(Microsoft Foundation Classes),是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

中文名微软基础类库外文名Microsoft Foundation Classes开发公司微软公司编译平台C++ SDK编程语言C++适用平台Windows

 

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等控件。

 

标签:STL,ATL,C++,笔记,组件,COM,模板
From: https://www.cnblogs.com/zhangdezhang/p/16726197.html

相关文章

  • docker-compose up -d启动镜像报错端口被占用
    Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointxxx:Bindfor0.0.0.0:9005failed:portisalreadyallocated报错显示端......
  • C++自学笔记
    在C++中定义Definition一个类的时候要用分别的.h和.cpp文件去定义这个类.h和.cpp成对出现类的声明declaration和函数原型放在头文件里(.h)定义这些函数的结构主体就要放......
  • [Jetpack Compose] popUpTo 的一些理解
    开发应用时遇到一个需求:无论处于哪个页面,按返回键时都弹出退出应用的提示。我用了BackHandler处理返回事件,发现只有处于主页时才可触发回调,于是思考应该是导航相关的问......
  • [Jetpack Compose] 记录一下实现状态栏导航栏透明、应用界面可覆盖两栏、深色浅色模式
    valcolorScheme=when{dynamicColor&&Build.VERSION.SDK_INT>=Build.VERSION_CODES.S->{valcontext=LocalContext.currentif(darkThe......
  • vue 使用百度地图JavaScript API GL 组件
    <template><divclass="component"><el-cardclass="cardStyle"><!--ready,地图组件渲染完毕时触发,返回一个百度地图的核心类和地图实例--><baidu-map......
  • maven 学习笔记
    maven介绍1、是一个依赖管理工具2、自定义本地仓库例如:d:\javaStudy\maven20203、当项目使用时会首先检查本地是否存在,减少每次拉取远程仓库依赖包4、配置文件pom.xml......
  • 《计算机网络》第一章 笔记
    第一章概述互联网的两大特点:连通性与共享。1.互联网的概述1.1网络的网络计算机网络有若干节点(node)与连接这些节点的链路(link)组成。  其中,节点可以是计算机......
  • C++自学笔记 面向对象程序设计OOP(Object Oriented Programming)
    什么是对象?Objects=Attributes+ServicesData:ThepropertiesorstatusOperations:thefuctionsC语言中定义的变量用来存储数据,所以它可以理解为是“对象”“......
  • 【code基础】Comparator的使用
    sort(T[]a,Comparator<?supreT>c):根据指定比较器产生的顺序对指定对象数组进行排序。sort(T[]a,intformIndex,inttoIndex,Comparator<?supreT>c):根据......
  • 平衡树学习笔记
    平衡树平衡树是一类二叉查找树,因为普通的二叉查找树可能会因为特殊的数据的构造变成链,导致原本应该是\(\mathcalO(\logn)\)的查找速度退化成为\(\mathcalO(n)\),损失......