diff options
author | Stef Walter <stef@thewalter.net> | 2003-09-17 19:07:23 +0000 |
---|---|---|
committer | Stef Walter <stef@thewalter.net> | 2003-09-17 19:07:23 +0000 |
commit | 3f95d417d9e623ac0c74df8ef11d7a01846392dd (patch) | |
tree | 45ec73f2dc07eafd7f41a6f62a8cdfbaa279469f /Shutdown/ShutdownCP.h |
Diffstat (limited to 'Shutdown/ShutdownCP.h')
-rw-r--r-- | Shutdown/ShutdownCP.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Shutdown/ShutdownCP.h b/Shutdown/ShutdownCP.h new file mode 100644 index 0000000..cbccd51 --- /dev/null +++ b/Shutdown/ShutdownCP.h @@ -0,0 +1,36 @@ +#ifndef _SITEIFACESCP_H_ +#define _SITEIFACESCP_H_ + +#include "../common/events.h" + +template <class T> +class CProxyDShutdownEvents : public IConnectionPointImpl<T, &DIID_DShutdownEvents, CComDynamicUnkArray> +{ + //Warning this class may be recreated by the wizard. +public: + HRESULT Fire_Cancel() + { + CComVariant varResult; + T* pT = static_cast<T*>(this); + int nConnectionIndex; + int nConnections = m_vec.GetSize(); + + for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++) + { + pT->Lock(); + CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex); + pT->Unlock(); + IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p); + if (pDispatch != NULL) + { + VariantClear(&varResult); + DISPPARAMS disp = { NULL, NULL, 0, 0 }; + pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL); + } + } + + return varResult.scode; + } +}; + +#endif
\ No newline at end of file |