当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>自动化底子概念之"COM组件与接口"</b>[VC/C++编程]

赞助商链接



  本文“<b>自动化底子概念之"COM组件与接口"</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在前文,我预告了我将开始介绍WINX对自动化(Automation)的支持.首先我打算注释一下自动化(Automation)相关的概念.

我们会分为3个篇幅介绍:

·COM底子:COM组件(Component)与接口(Interface)

·变体(Variant)与IDispatch(Dispatch调用)

·自动化(Automation)、OA(Office Automation)、二次开辟接口(利用程序开辟接口,API)与范例库(TypeLib)

这是第一篇.

COM组件(Component)直观理解就是一个类,但这不是严谨的定义.缘由有二:

有的语言(比方C语言)没有类,但是它可以实现COM组件.

COM组件(Component)普通是一个类,但是它也大概是用多个类来实现.但是关于组件的客户而言,它是一个类,还是多个类举行实现,它不知道,也不关心.关于用多个类实现COM组件的具体内容,您可以理解一下COM组件中的“嵌套类实现COM接口(如MFC喜好的,ATL则偏向于用多重担当)”、“聚合(AGGREGATION)”方面的内容.

COM组件(Component)是一种基于二进制对象协议的概念.也可以理解为,这是一个二进制意义上的“类”.一个COM组件,对外表露的不是一组办法(Method),而是一组接口(Interface).

接口(Interface)这个概念被遍及用运,普通意义上说是指“类的规格(契约)”.从COM意义上理解接口(Interface),是一种和目前vtbl机制相容的二进制协议,并且vtbl的前三项与IUnknown接口相容(从担当角度上来说,可以理解为要求从IUnknown担当,但只是这样理解罢了).比方,你可以定义以下接口:

以下是引用片段:
interfaceIFoo:IUnknown
{
virtualvoid__stdcallfooA()=0;
virtualint__stdcallfooB(intarg1,intarg2)=0;
};

但是你也可以不这样写,而是这样纯C气势的:

以下是引用片段:
structIFooVtbl
{
HRESULT(__stdcall*QueryInterface)(void*pThis,constGUID*iid,void**ppv);
ULONG(__stdcall*AddRef)(void*pThis);
ULONG(__stdcall*Release)(void*pThis);
void(__stdcall*fooA)(void*pThis);
int(__stdcall*fooB)(void*pThis,intarg1,intarg2);
};
structIFoo
{
structIFooVtbl*vptr;
};


  以上是“<b>自动化底子概念之"COM组件与接口"</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .