关于QueryInterface的一个小理解

QueryInterface按照字面上的意思是查询获得接口,用时我们可以把他当做C#中的as 或 C++中的dynamic_cast这样用即可(不知道正不正确,请指教)。

我们可以为QueryInterface写一个辅助函数:

	template
	static CComPtr As(IDispatch* pDisp)
	{
		CComPtr pAs = NULL;
		pDisp->QueryInterface(&pAs);
		return pAs;
	}

使用时:

IDispatch* pDisp = ...;

CComPtr b = As(pDisp);//IB为目标类型
if (b)//像dynamic_cast那样要检查指针是否为空
{
    //这里就可以使用IB对象了
}

你可能感兴趣的:(C/C++,mfc,radio,经验,QueryInterface,Com)