错误信息接口

来源:互联网 发布:大数据需要学java吗 编辑:程序博客网 时间:2024/06/05 22:41

三、错误信息接口
  既然 COM 是靠各种各样的接口来提供服务的,于是很自然地就会想到,是否有一个接口能够提供更丰富的错误信息报告那?答案是:ISupportErrorInfo。下面这段代码是使用 ISupportErrorInfo 的一般方法:

STDMETHODIMP Cxxx::fun(){... ... ... ...CComQIPtr< ICreateErrorInfo> spCEI;::CreateErrorInfo( &spCEI );spCEI->SetGUID( IID_Ixxx );// 发生错误的接口IIDspCEI->SetSource( L"xxx.xxx" );// ProgID// 如果你的组件同时提供了帮助文件,那么就可以:spCEI->SetHelpContext( 0 );// 设置帮助文件的主题号spCEI->SetHelpFile( L"xxx.hlp" );// 设置帮助文件的文件名spCEI->SetDescription( L"错误描述信息" );CComQIPtr < IErrorInfo > spErrInfo = spCEI;if( spErrInfo )  ::SetErrorInfo( 0, spErrInfo );// 这时调用者就可以得到错误信息了return E_FAIL;}
  上面是原理性代码,在我们写的程序中,不用这么麻烦。因为 ATL 已经把上述的代码给我们包装成 CComCoClass::Error() 的6个重载函数了。如此,我们可以非常简单的改写为:
STDMETHODIMP Cxxx::fun(){... ... ... ...return Error( L"错误描述信息" );}
原创粉丝点击