exCP.h
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:1k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. #ifndef _EXCP_H_
  2. #define _EXCP_H_
  3. template <class T>
  4. class CProxy_IMyabcEvents : public IConnectionPointImpl<T, &DIID__IMyabcEvents, CComDynamicUnkArray>
  5. {
  6. //Warning this class may be recreated by the wizard.
  7. public:
  8. HRESULT Fire_add(BSTR msg)
  9. {
  10. CComVariant varResult;
  11. T* pT = static_cast<T*>(this);
  12. int nConnectionIndex;
  13. CComVariant* pvars = new CComVariant[1];
  14. int nConnections = m_vec.GetSize();
  15. for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
  16. {
  17. pT->Lock();
  18. CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
  19. pT->Unlock();
  20. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
  21. if (pDispatch != NULL)
  22. {
  23. VariantClear(&varResult);
  24. pvars[0] = msg;
  25. DISPPARAMS disp = { pvars, NULL, 1, 0 };
  26. pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
  27. }
  28. }
  29. delete[] pvars;
  30. return varResult.scode;
  31. }
  32. };
  33. #endif