atl 中错误支持的使用

本文介绍如何在ATL创建的组件中实现错误处理,并详细解释了如何通过检查HRESULT来判断并获取具体的错误信息,包括使用ISupportErrorInfo和IErrorInfo接口来提供更友好的错误反馈。

在atl 创建的组件中 增加错误处理  。

Error(L"heelo ");

......

在客户程序中

HRESULT hr=pxxx->Add(10,9,&result);
 if( FAILED( hr ) ) // 如果发生了错误
{
 CComQIPtr < ISupportErrorInfo > spSEI = pxxx; // 组件是否提供了 ISupportErrorInfo 接口?
 if( spSEI ) // 如果支持,那么
 {
  hr = spSEI->InterfaceSupportsErrorInfo( IID_Ixxx ); // 是否支持 Ixxx 接口的错误处理?
  if( SUCCEEDED( hr ) )
  { // 支持,太好了。取出错误信息
   
   CComQIPtr < IErrorInfo > spErrInfo;  // 声明 IErrorInfo 接口
   hr = ::GetErrorInfo( 0, &spErrInfo ); // 取得接口
   if( SUCCEEDED( hr ) )
   {
    CComBSTR bstrDes;
    spErrInfo->GetDescription( &bstrDes ); // 取得错误描述


    USES_CONVERSION;
    

    LPTSTR lp = OLE2T( bstrDes.m_str) ;

    cout<<lp<<endl;
    //...... // 还可以取得其它的信息
   }
  }
 //pMath->Release();
 //CoUninitialize();
 return ;
 }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡在床板下_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值