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

被折叠的 条评论
为什么被折叠?



