在VB中 定义了一个自定义接口 ,
(工程DogLib下建立了一个PublicNotCreate的抽象类IDog)在vb中可以这样引用他:
DogLib.IDog在VC中怎么获得他的IID,
提供一个函数更好
如:
HRESULT GetIIDFromStr("DogLib.IDog");系统有一个函数 为IIDFromString( LPOLESTR lpsz, LPIID lpiid)好像没有用啊。
这个函数里的lpsz 指的是什么?

解决方案 »

  1.   

    我请教的是如何根据一个字符串 "Doglib.Idog"获得IID
    谢谢
      

  2.   

    HRESULT CLSIDFromProgID(LPCOLESTR lpszProgID,LPCLSID pclsid); 是这个
      

  3.   

    楼上取得的是clsid,我要得是iid啊,
    取得接口的id也用clsidfromprogid吗?
      

  4.   

    createinstance 是clsid. :: CLSIDFromProgID
    QueryInterface 是iid :: __uuidof( Ixxxx)
      

  5.   

    http://www.codeproject.com/com/vbeventswithvc.asp
      

  6.   

    谢谢楼上两位.
    终于实现了.不过要使用import用vb创建一个接口有一个很大的缺点,
    使用publicnocreated创建出来得接口是隐藏的,而且会带一个没有用的共同类
    而且如果没有一个课创建的类的话,还不能编译。所以还得加一个没有用的实现。所以最后我采用了另一种办法直接写一个IDL文件,用midl 编译 在添加生成选项,让他输出 tlb,h,iid,
    在vc中我直接引用.h,包含iid的头文件
    在vb中实现他的时候,我引用这个tlb,用implements 库.接口这样就不用使用import了。
    就像用directx一样,用上头和库就行了。总之谢谢各位。