#include "StdAfx.h" tstring ComException2Msg(_com_error& e,const tstring& rsAdditionalInfo) { HRESULT hError = e.Error(); tostringstream o; if(false == rsAdditionalInfo.empty()) { o << rsAdditionalInfo << "\n"; } o << e.ErrorMessage() << _T(" (") << std::hex << hError << _T(")"); IErrorInfo* p = e.ErrorInfo(); CComPtr pErrorInfo(p); if(NULL != p) { p->Release(); } if(pErrorInfo) { o << _T("\n") << e.Description(); } return o.str(); } void ShowComError(_com_error& e,const tstring& rsAdditionalInfo) { tstring sErrorMsg = ComException2Msg(e,rsAdditionalInfo); LogIt(Error,sErrorMsg); Quotes_MessageBox(NULL,sErrorMsg.c_str(),MB_OK|MB_ICONERROR); }