Microsoft ATL相当于Borland OleCheck功能

时间:2010-09-10 07:46:11

标签: c++ com atl c++builder

Borland C ++ Builder提供函数OleCheck(HRESULT Result);。它在文档中的描述如下:

  

OleCheck用于包装许多COM例程,因此如果该例程失败,用户将有机会在引发的异常中处理它。

     

如果ECode值小于零,则OleCheck会引发EOleSysError异常,指定错误代码。

如果函数返回失败的状态值,使用Microsoft ATL抛出异常的推荐函数或习惯用法是什么?我想避免在这样的代码中混合使用Borland和Microsoft库:

CComPtr<Outlook::Explorers> spExplorers;
OleCheck(m_spApp->get_Explorers(&spExplorers));

1 个答案:

答案 0 :(得分:2)

在ATL中没有这样的准备。最接近的是AtlThrow(),它会抛出一个异常(无条件),但检查仍由你自己决定 - 你可以看一下ATL本身如何使用AtlThrow()

所以IMO最好的办法就是制作你自己的功能 - 它会接受HRESULT并调用AtlThrow()或其他一些异常翻译构造的HRESULT s evalate to {{1通过false宏。

相关问题