summaryrefslogtreecommitdiff
path: root/plugins/CurrencyRates/src/ComHelper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CurrencyRates/src/ComHelper.cpp')
-rw-r--r--plugins/CurrencyRates/src/ComHelper.cpp28
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);
+}