我觉得 纯的CallByName是不可能实现的
不过你可以学学MFC里面的方法
自己弄一套宏出来
在定义每个函数时 套一下宏
然后在CallByName里用个switch
哇!麻烦!!对于控件 是标准的还是ActiveX的
看看MFC的代码吧!
???不懂你的意思.

解决方案 »

  1.   

    先调IDispatch::GetIDsOfNames,再调IDispatch::Invoke. 
      

  2.   

    CallbyName 是vb6。0新添加的一个函数 可以给定控件名、属性名、属性值 直接给控件付属性值。vc里是没有的(好像!因为我找不到)。Un1的回答应该是一跳思路但我不太熟悉怎么用,请指教,最好能给一些代码。
      

  3.   

    看来你得好好看看ActiveX的游戏规则。
      

  4.   

    vc的做法:每个activex控件都有一个wrapper class, 而这个包装类就是把控件的IDispatch接口包装了一下,过程如下:如setX(int newX),调用IDispatch::GetIDsOfNames取得属性X所对应的id,在调用IDispatch::Invoke,设ID为前面取得的,并设好参数类型(一般可以是VARIANT *),详细的方法去看MSDN的IDispatch和COleDispatchDriver两个