诸位大师,小弟想在C里面实现对COM组件的调用(这应该是可能的吧?)。我在坛子里面深入查找了很久,也没有发现大师们关于这件事情(或与之类似的)丝毫论述(原来查找也需要高明的技术,哎....)。
大师们能给个用C调用COM组件的Hello World程序吗?
(当然如果能够看到大师们的精彩程序在C里面就启动了EXCEL之类的庞大程序的话,那,怎么说呢?只能是敬仰之情如滔滔江水、绵绵不绝了.....)

解决方案 »

  1.   

    在所有方法的参数表开头都必须添加一个附加的参数,这个参数必须被设为接口指针。
    你必须显式地引用对象的vtable。
      每一个COM对象都有一个vtable,它包含了一个对象所有方法的指针列表。一个接口指针会指向vtable中的合适位置,这个轮到的位置中包含的就是指向你调用的特定方法的指针。vtable在本文档的其它地方都不会被提及,因为对于C++来说vtable是完全不可见的。然而,如果你希望用C调用COM方法就必须涉及到这个更为不直观的概念,你得显式地引用vtable。
      下面这句代码演示了怎样在C++约定下调用IDirectPlay8Peer::Initialize方法。  g_pDP->Initialize(NULL,DirectPlayMessageHandler,0);  为了用C调用同样这个方法,则要使用如下的语法。约定vtable指针名为lpVtbl。  g_pDP->lpVtbl->Initialize(g_pDP,NULL,DirectPlayMessageHandler,0);