1 目的
按照COM规范,一个COM对象可以实现多个接口。从一个接口到另一个接口的访问途径
2 QueryInterface实现

class CDictionary : public IDictionary , public ISpellCheck{public :CDictionary();~CDictionary();public :// IUnknown member functionvirtual HRESULT QueryInterface(const IID& iid, void **ppv) ;virtual ULONG AddRef() ;virtual ULONG Release() ;// ......private :int m_Ref ;// ......};
3 接口查询用法示例
函数QueryInterface(iid, ppv)
用法:初始得到了一个接口指针之后,调用它的QueryInterface函数,获得另一个接口指针
返回值: 说明了对象对接口的支持情况, S_OK、E_NOINTERFACE、E_UNEXPECTED
retValue = pIDictionary->LoadLibrary("eng_ch.dict");if (retValue == FALSE) {pIDictionary->Release();return;}// ...ISpellCheck *pISpellCheck;HRESULT result = pIDictionary->QueryInterface(IID_SpellCheck, (void **) &pISpellCheck);if (result != S_OK) {pIDictionary->Release();return;}// ...... use interface pISpellCheck// finally, release dictionary objectpIDictionary->Release();pISpellCheck->Release();// ...
