用c访问COM对象(翻译)

用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译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值