• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请问大家如何理解这段代码COM接口IUnkown

请问大家如何理解这段代码COM接口IUnkown

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了iunkown,com接口,com接口是什么,com接口图片,主板com接口等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请问大家如何理解这段代码 COM 接口 IUnkown
描述:

#else  /* C style interface */
    typedef struct IUnknownVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IUnknown * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IUnknown * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IUnknown * This);
        
        END_INTERFACE
    } IUnknownVtbl;
    interface IUnknown
    {
        CONST_VTBL struct IUnknownVtbl *lpVtbl;
    };
以上代码见 ATL 头文件  Unkwn.h  第 180 行
ATL 使用 C 语言方式定义了 接口 IUnknown,我有点想不通,  不知道大家注意了没有 ,定义 IUnknownVtbl 的时候使用了 IUnknown, 而 IUnknown 是在后面定义的. 这和 C 语言类型定义显然矛盾,  还有 为什么 2次定义  interface IUnknown  呢,分别出现在  unkwn.h  unkwn.idl. 有没有高手能够解答?  
 
问题得到解决后及时结帖给分。


解决方案1:

typedef interface IUnknown IUnknown;
这样定义就是提前声明一下。
和aspnetwuxueyou说的是一回事

解决方案2:

com是定义在二进制基础上的规范,所以只要保证二进制层面上相同就可以了,用什么语言是无关紧要的

解决方案3:

1. .idl文件是接口定义文件,可以生成接口头文件,用midl编译


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 不解啊!关于IUnkown
  • 请问大家如何理解这段代码COM接口IUnkown

相关文章

  • 2017-06-04 如何在运行exe文件时将ActiveX插件装入系统
  • 2017-06-05 一个关于拦截API的动态库
  • 2017-06-05 _beginthreadex与CreateThread有什么区别?
  • 2017-06-04 为什么IE中的ActiveX正确下载、注册和签名后仍然不能使用???
  • 2017-06-05 紧急求助:vc调用delphi写的dll问题"救人一命胜造七级浮屠"
  • 2017-06-05 JS调用MFC生成的activeX(OCX)控件
  • 2017-06-04 用ATL自动生成了一段代码但不清楚是什么意思
  • 2017-06-04 COM与动态库哪个好些?
  • 2017-06-04 ATLOELDB的编程问题(较少人涉及的)
  • 2017-06-04 VC++2005中,往串口发数据的问题,数据量一大,串口就收到部分数据,为什么?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • (高难度问题求解)如何在一个显示器中显示四个桌面呢?
    • VS2008创建的MFCActiveX控件,当在工程引入后看不到自定义的事件?
    • 高份求助DLL!!!
    • 求助:activeX使用directshow在ie上播放的问题
    • Activexdll
    • 在调用组件过程中,时常会出现--"服务器正在运行中"的提示。
    • 关于activex控件的属性命名规则的问题
    • 当关闭IE浏览器时,IE浏览器里的activex控件最先收到什么消息?
    • 关于AfxBeginThread建立线程的参数问题,请帮助,谢谢!
    • 用CoCreateInstance产生对象时,出现如下错误,请高手指点

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有