AtlReportError

设置 IErrorInfo 接口提供错误信息对对象的客户端。

HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCOLESTR lpszDesc,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCOLESTR lpszDesc,
   DWORD dwHelpID,
   LPCOLESTR lpszHelpFile,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCSTR lpszDesc,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   LPCSTR lpszDesc,
   DWORD dwHelpID,
   LPCSTR lpszHelpFile,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0 
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   UINT nID,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0,
   HINSTANCE hInst = _AtlBaseModule.GetResourceInstance( )
);
HRESULT WINAPI AtlReportError(
   const CLSID& clsid,
   UINT nID,
   DWORD dwHelpID,
   LPCOLESTR lpszHelpFile,
   const IID& iid = GUID_NULL,
   HRESULT hRes = 0,
   HINSTANCE hInst = _AtlBaseModule.GetResourceInstance( )
);

参数

  • clsid
    [in]报告的对象的CLSID错误。

  • lpszDesc
    [in]描述错误的字符串。 Unicode版本指定 lpszDesc 是类型 LPCOLESTR;ANSI版本指定 LPCSTR的类型。

  • iid
    [in]定义错误或 GUID_NULL 的接口的IID,如果错误由操作系统定义的。

  • hRes
    [in]要返回到调用方的 HRESULT

  • nID
    [in]存储错误说明字符串的资源标识符。 此值应放在0x0200和0xFFFF之间,包含。 如果 nID 不索引有效的字符串,在调试版本中,ASSERT 将发生。 在发布版本中,错误说明的字符串将设置为“未知错误”。

  • dwHelpID
    [in]错误的帮助上下文标识符。

  • lpszHelpFile
    [in]描述错误的帮助文件的路径和名称。

  • hInst
    [out]一个指向资源的句柄。 默认情况下,此参数是 __AtlBaseModuleModule::GetResourceInstance__AtlBaseModuleModule 是从该类派生的 CAtlBaseModule 或选件类全局实例。

返回值

如果 hRes 参数不为零,返回 hRes的值。 如果 hRes 为零,则 AtlReportError 的前四个版本返回 DISP_E_EXCEPTION。 前两个版本返回宏 MAKE_HRESULT( 1, FACILITY_ITF, nID **)**的结果。

备注

字符串 lpszDesc 用作该错误的文本说明。 在客户端收到有关错误的详细信息,请从 AtlReportError返回的 hRes 时,客户端可以访问 IErrorInfo 结构。

示例

STDMETHODIMP CMyControl::MyErrorProneMethod()
{
   BOOL bSucceeded = ErrorProneFunc();
   if (bSucceeded)
      return S_OK;
   else
      // hRes is set to DISP_E_EXCEPTION
      return AtlReportError(GetObjectCLSID(), L"My error message");
}

警告

不要使用 AtlReportError 在C++ catch处理程序。某些重写这些函数在内部使用ATL字符串翻译宏,或在内部使用 _alloca 功能。使用在c. C++ catch处理程序的 AtlReportError 在C++ catch处理程序可以导致异常。

要求

Header: atlcom.h

请参见

参考

MAKE_HRESULT

其他资源

调试和错误报告全局函数