c++ - Microsoft ATL 等同于 Borland OleCheck 函数

标签 c++ com atl c++builder

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

OleCheck is used to wrap many COM routines, so that if that routine fails, users will have an opportunity to handle it in the resulting exception that is raised.

If ECode is a value less than zero, OleCheck raises an EOleSysError exception that specifies the error code.

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

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

最佳答案

ATL 中没有这样现成的东西。最接近的是 AtlThrow()它会抛出异常(无条件地),但检查仍然取决于您 - 您可以查看 ATL 本身如何使用 AtlThrow()

所以 IMO 你最好的选择是制作你自己的函数 - 它将接受 HRESULT 并调用 AtlThrow()HRESULT 的一些其他异常抛出构造通过 FAILED 宏评估为 false

关于c++ - Microsoft ATL 等同于 Borland OleCheck 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3682982/

相关文章:

c++ - MacOS 共享库 : Undefined symbols for architecture x86_64

C++ 这是微优化的一种形式吗

c++ - 为什么左折叠表达式不反转右折叠表达式的输出?

c++ - 使 excel 在单个打印作业中打印多个工作表

c++ - 运算符 TYPE () 并获取对象的地址

c++ - constexpr 数组成员是否编译时间常数?

c# - 以编程方式解析 COM 引用

c# - 如何从 C++ 向 COM 公开带有 IHTMLDocument* 类型参数的方法?

c++ - ATL 服务中的 COM 对象生命周期管理

c++ - 在遗留 Win32 应用程序中实现 COM 事件接收器