我使用MFC ActiveX ControlWizard 生成的OCX控件,对外暴露若干个接口方法,每个接口方法的dispid类似如下,
[id(3)] boolean FunSendMsg(long MsgType, BSTR MsgData);我想修改这个id(3),改成一个类似[id(funsendmsg)]这样的字符串描述信息,不知道是否可行。(我试过直接修改,VC编译器报错)请各位指教。

解决方案 »

  1.   

    不可以
    这样增加字符串描述
    [id(3), helpstring("method FunSendMsg")]boolean FunSendMsg(long MsgType, BSTR MsgData);
    你的接口有问题,方法只能返回HRESULT类型的东西.
      

  2.   

    To akirya:问题的来源其实是这样的,我在一个程序中引入了OCX控件,VC自动生成该控件的包装类,我调用该控件提供的接口方法,实际上最后是调用了InvokeHelper(0x5,................);这个函数,其中第一个入参就是我欲调用的控件接口方法的dispid.这个时候如果该控件修改或者新增了接口方法,该dispid可能会错位,导致我想调用fun1,结果使用的dispid由于控件修改后的错位,指向了fun2.而实际上也的确出现了这个问题。所以我想是否有方法,能够使我的程序在调用控件接口方法时,根据名称调用,而不使用dispid.不知道我是否描述清楚了,欢迎继续讨论。
      

  3.   

    idl中不用dispinterface 修饰接口,改为IMyinterface:IDispatch{},或许是你想要得