代码之家  ›  专栏  ›  技术社区  ›  Rob

是否将IDispatch*转换为字符串?

  •  1
  • Rob  · 技术社区  · 14 年前

    我用ATL把一个旧的VB COM对象(我没有写)转换成C++。根据IDL,其中一种方法采用 IDispatch* 作为一个参数,此方法的文档和示例声明您可以传递字符串(它是控件将创建和使用的对象的progid)或 伊迪斯帕奇*

    [id(1)] HRESULT Test(IDispatch* obj);
    

    示例(均为JScript):

    obj.Test("foo.bar");
    

    var someObject = new ActiveXObject("foo.bar");
    obj.Test(someObject);
    

    甚至可以将字符串传递给接受 伊迪斯帕奇* ? 如果是,我能否确定 伊迪斯帕奇* IDispatch 它实现了一个特定的接口,我希望调用该接口上的方法,或者实例化一个对象(如果它是字符串)。

    欢迎有任何想法!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Alex Jasmin    14 年前

    声明该方法,使其接受变量参数,并在运行时检查实际类型。

        2
  •  0
  •   wqw    14 年前

    obj Class1

        Dim str As String
        str = obj
    

    ... 然后 第一类

    Function MyFunc(str As String)
       ...
    End Function
    
       MyFunc obj
    

    只有在以下情况下,最后一个方法调用才会成功 第一类 已定义默认属性,并且 obj 的默认属性值可以强制转换为 String