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