CreateInstance传入一个uuid的话,那么我觉得,显然只能是对应的接口的uuid,例如IXMLDOMDocumentPtr就应该是MSXML::DOMDocument,这个是不是多此一举?  难道类型A的CreateInstance可以传入类型B的uuid?或者说,CreateInstance可以传入其他的uuid? 这样有意义么?
谢谢。

解决方案 »

  1.   

    _uuidof是根据对象的名称返回它的CLSID,你也可以直接在CreateInstance里填IXMLDOMDocumentPtr的CLSID,不过没有_uuidof方便
      

  2.   


    我的问题是; 它难道还能传入其他接口类型的uuid不成? 如果只能传入本类型的uuid,那么这个CreateInstance不弄一个默认参数干什么,显示的指定参数显得多余啊。
      

  3.   

    可以传递其他接口类型的uuid,但是你CreateInstance就会失败...
      

  4.   


    _uuidof相当于是CLSID,这个CLSID在每个机器上都不一样,CreateInstance需要传入一个唯一的CLSID,你可以自己生成一个唯一的CLSID再传入CreateInstance,同时还得要先改注册表。显然没有_uuidof方便。IXMLDOMDocumentPtr它们的CLSID在本机已经定义好了,CreateInstance的时候只要_uuidof就直接拿过来用了。但是因为CreateInstance是一个统一的接口方法,CreateInstance很多情况下也要考虑自定义的CLSID,所以需要传入一个CLSID,而不是在函数内部自己去取。
      

  5.   

    我知道了,CreateInstance是个统一的接口方法,除非用个宏来扩展,包含__uuidof