diff options
Diffstat (limited to 'plugins/CurrencyRates/src/ComHelper.cpp')
-rw-r--r-- | plugins/CurrencyRates/src/ComHelper.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/plugins/CurrencyRates/src/ComHelper.cpp b/plugins/CurrencyRates/src/ComHelper.cpp new file mode 100644 index 0000000000..9c77e6d7ad --- /dev/null +++ b/plugins/CurrencyRates/src/ComHelper.cpp @@ -0,0 +1,28 @@ +#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() << L" (" << std::hex << hError << L")"; + + IErrorInfo* p = e.ErrorInfo(); + CComPtr<IErrorInfo> pErrorInfo(p); + if (nullptr != p) + p->Release(); + + if (pErrorInfo) + o << L"\n" << e.Description(); + + return o.str(); +} + +void ShowComError(_com_error& e, const tstring& rsAdditionalInfo) +{ + tstring sErrorMsg = ComException2Msg(e, rsAdditionalInfo); + LogIt(sErrorMsg); + Quotes_MessageBox(nullptr, sErrorMsg.c_str(), MB_OK | MB_ICONERROR); +} |