用c访问COM对象(翻译)
2005-09-05 14:59
211 查看
用c访问COM对象
虽然c++一般用于COM程序中,但是你也可以使用C语言来访问COM对象。这样做比较直截了当,但是需要更复杂的语法。
●所有的方法都需要添加一个附加的参数添加到参数列表的开始位置。这个参数必须被设置程接口指针。
●你必须显示的引用对象的这个值。
每一个COM对象都包含一个指针列表,这些指针用来指向对象暴露的方法。接口指针指向这个指针列表中的一个适当的位置,反过来,你所调用的那个方法包含这个接口指针。这个指针列表在其他的地方没有被提及,因为用c++,这个指针列表实际上是不可见的。但是, 如果你想用C语言来访问COM对象,你必须包含这个附加的标记间接的引用这个值。
下面的代码段举例说明用c++方式来调用IDirectPlay8Peer::Initialize方法。
g_pDP->Initialize( NULL, DirectPalyMeddageHandler, 0 ) ;
如果用c方式调用相同的方法, 语法如下。列表指针的名字为lpVtbl.
g_pDP->lpVtbl->Initialize(g_pDP,NULL, DirectPlayMessageHandler, 0);
在一些组件的头文件中定义了一些宏可以改变这个呼叫约定。
注: 由于翻译水平有限,错误在所难免。如发现翻译的不对的地方还请路上的朋友指正,谢谢
可以任意转载。
译者: closeall
2005.09.045译
虽然c++一般用于COM程序中,但是你也可以使用C语言来访问COM对象。这样做比较直截了当,但是需要更复杂的语法。
●所有的方法都需要添加一个附加的参数添加到参数列表的开始位置。这个参数必须被设置程接口指针。
●你必须显示的引用对象的这个值。
每一个COM对象都包含一个指针列表,这些指针用来指向对象暴露的方法。接口指针指向这个指针列表中的一个适当的位置,反过来,你所调用的那个方法包含这个接口指针。这个指针列表在其他的地方没有被提及,因为用c++,这个指针列表实际上是不可见的。但是, 如果你想用C语言来访问COM对象,你必须包含这个附加的标记间接的引用这个值。
下面的代码段举例说明用c++方式来调用IDirectPlay8Peer::Initialize方法。
g_pDP->Initialize( NULL, DirectPalyMeddageHandler, 0 ) ;
如果用c方式调用相同的方法, 语法如下。列表指针的名字为lpVtbl.
g_pDP->lpVtbl->Initialize(g_pDP,NULL, DirectPlayMessageHandler, 0);
在一些组件的头文件中定义了一些宏可以改变这个呼叫约定。
注: 由于翻译水平有限,错误在所难免。如发现翻译的不对的地方还请路上的朋友指正,谢谢
可以任意转载。
译者: closeall
2005.09.045译
相关文章推荐
- Enterprise Library 2.0 Hands On Lab 翻译(2):数据访问程序块(二)
- Windows下的Java访问USB设备解决之道(翻译Java libusb / libusb-win32 wrapper)收
- 【翻译】Ext JS 6.2 早期访问版本发布
- 机器翻译还是大有前途的——访问比较好的自动翻译网站有感
- 什么是COM对象?(翻译)
- [翻译] Effective C++, 3rd Edition, Item 43: 了解如何访问 templatized base classes(模板化基类)中的名字(上)
- 【翻译自mos文章】访问Oracle Database的知名的ODBC 驱动列表
- 如何解决Asp.Net Ajax 1.0跨域名框架情况下javascript“访问拒绝”的问题[翻译]
- 【翻译】ASP.NET MVC4 入门(五)在Controller中访问Model的数据
- Enterprise Library 2.0 Hands On Lab 翻译(2):数据访问程序块(二)
- Windows下的Java访问USB设备解决之道(翻译Java libusb / libusb-win32 wrapper)收
- 用汇编语言访问com对象[三]
- 【翻译】Ext JS 6.2 早期访问版本发布
- Tomcat+ApacheSOAP部署访问COM对象的WebService
- CAS 代码访问安全性 (翻译)
- Vulkan编程指南翻译 第六章 着色器和管线 第5节 在着色器中访问资源
- Enterprise Library 2.0 Hands On Lab 翻译(3):数据访问程序块(三)
- 翻译:高级工具:使用Java本机访问
- JNI官方文档翻译4-属性和方法的访问
- 第一篇学习(翻译)笔记: C#,怎样用Foreach访问集合类