佚名通过本文主要向大家介绍了createinstance,createinstance失败,c createinstance,array.createinstance,clrcreateinstance等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 是不是可聚合COM对象的类厂CreateInstance只能返回IUnknown接口?
描述:
描述:
为什么呢?
我在看<<COM技术内幕>>聚合章节的时候,有些地方不是很明白。比如CB实现了INondelegatingUnknown和IY,其中IY继承IUnknown,CA是CB的外部组件,我的理解是CB里面有一个m_pUnknownOuter指针,当CB通过构造函数构造的时候,如果带入的pUnknownOuter不为空(说明有组件要聚合)那么让m_pUnknownOuter=pUnknownOuter,这样对CB进行查询的时候,全部转发给了CA。当pUnknownOuter=NULL的时候,说明没有组件要聚合它,所以令m_pUnknownOuter指向INondelegatingUnknown接口,这样CB就可以当一般的组件一样使用,不知道我的理解对不对?
如果是这样,那么为什么在CB的类厂里面CreateInstance的时候,只允许返回IUnknown(实际为INondelegatingUnknown)的接口呢?那如果我要通过CB的类厂得到其它接口怎么办?先得到IUnknown,然后再Query?何必多此一举呢?
您可能想查找下面的文章:
- CoCreateInstance和CoCreateInstanceEx的区别??
- 抓狂!看了几天了,CoCreateInstance总是出错!!!!救命啊!
- 请教CoCreateInstanceEx产生E_ACCESSDENIED的原因
- CoCreateInstance的内部实现问题??
- 在DEV-CPP中编译建立快捷方式代码出现incompatibletypeforargument1of`CoCreateInstance'
- 用dll的COM除了cocreateinstance能不能就当普通DLL用loadlibrary调用。
- CoCreateInstanceEx问题
- 请大哥大姐指教CreateInstance的问题
- CoCreateInstance调用成功,CoGetClassObject调用失败,为什么?
- CoCreateInstance调用出错,帮看看!