/Visual Studio 2008/ATLCOMService/_ISimpleObjectEvents_CP.h
C Header | 36 lines | 31 code | 5 blank | 0 comment | 2 complexity | 572d94eac9c2ac3a86bed8b20930f521 MD5 | raw file
1#pragma once 2 3template<class T> 4class CProxy_ISimpleObjectEvents : 5 public IConnectionPointImpl<T, &__uuidof(_ISimpleObjectEvents)> 6{ 7public: 8 HRESULT Fire_FloatPropertyChanging( FLOAT NewValue, VARIANT_BOOL * Cancel) 9 { 10 HRESULT hr = S_OK; 11 T * pThis = static_cast<T *>(this); 12 int cConnections = m_vec.GetSize(); 13 14 for (int iConnection = 0; iConnection < cConnections; iConnection++) 15 { 16 pThis->Lock(); 17 CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection); 18 pThis->Unlock(); 19 20 IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p); 21 22 if (pConnection) 23 { 24 CComVariant avarParams[2]; 25 avarParams[1] = NewValue; 26 avarParams[1].vt = VT_R4; 27 avarParams[0].byref = Cancel; 28 avarParams[0].vt = VT_BOOL|VT_BYREF; 29 DISPPARAMS params = { avarParams, NULL, 2, 0 }; 30 hr = pConnection->Invoke(1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, ¶ms, NULL, NULL, NULL); 31 } 32 } 33 return hr; 34 } 35}; 36