LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 296|回复: 0

CComQIPt

[复制链接]
发表于 2024-2-4 23:35:28 | 显示全部楼层 |阅读模式
ATL 还提供了 CComQIPtr,它具有用于查询 COM 对象以检索额外接口的更简单的语法。 但是,建议采用 CComPtr ,因为它能够执行 CComQIPtr 执行的所有操作,并且在语义上与原始 COM 接口指针更一致。 如果您可以使用 CComPtr 来查询接口,新接口指针将被放在输出参数中。 如果调用失败,则会返回 HRESULT,它是典型的 COM 模式。 如果使用 CComQIPtr,返回值将为指针本身,并且当调用失败时,内部 HRESULT 返回值将无法访问。 以下两行显示了 CComPtr 和 CComQIPtr 中的错误处理机制的差异。

// CComPtr with error handling:
CComPtr<IMediaControl> pControl;
hr = pGraph->QueryInterface(IID_PPV_ARGS(&pControl));
if(FAILED(hr)){ /*... handle hr error*/ }

// CComQIPtr with error handling
CComQIPtr<IMediaEvent> pEvent = pControl;
if(!pEvent){ /*... handle NULL pointer error*/ }

// Use the second interface.
hr = pControl->Run();
if(FAILED(hr)){ /*... handle hr error*/ }

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表