CString GetComError(const _com_error& e)
{
CString sMsg;
sMsg.Format(
_T("HRESULT: 0x%08lx; Error: %s"),
e.Error(),
e.ErrorMessage()
); if(e.ErrorInfo())
{
sMsg += TEXT("\nSource: ") + CString((LPCTSTR)e.Source()) +
TEXT("; Description: ") + CString((LPCTSTR)e.Description());
} return sMsg;
}
注意上面红色的地方,要进行数据类型转换,否则会出现乱码。
例如:VC2010 用ADO 连接数据库时,e.Description()前一定要加(LPCTSTR)
try
{
m_pConnection->Open((_bstr_t)lpszConnectString,"","",adModeUnknown);
}
catch (_com_error &e)
{
m_strErrorString.Format("%s:%s",e.ErrorMessage(),(LPCTSTR)e.Description());
AfxMessageBox(m_strErrorString);
return false;
}