summaryrefslogtreecommitdiff
path: root/protocols/CurrencyRates/src/ComHelper.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2019-03-02 12:32:44 +0300
committerGeorge Hazan <ghazan@miranda.im>2019-03-02 12:32:55 +0300
commit931a7dc1ac0dbc7e6c1083583ced915e572f5b47 (patch)
tree9fe9a6448d44030e26aa7107ce16044ed413e0d0 /protocols/CurrencyRates/src/ComHelper.cpp
parentdd7d9954042254e66e3bbbec7195c6be8b1a0663 (diff)
all protocols (even virtual ones) moved to the Protocols folder
Diffstat (limited to 'protocols/CurrencyRates/src/ComHelper.cpp')
-rw-r--r--protocols/CurrencyRates/src/ComHelper.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/protocols/CurrencyRates/src/ComHelper.cpp b/protocols/CurrencyRates/src/ComHelper.cpp
new file mode 100644
index 0000000000..c4715892b5
--- /dev/null
+++ b/protocols/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);
+ CurrencyRates_MessageBox(nullptr, sErrorMsg.c_str(), MB_OK | MB_ICONERROR);
+}