CPEVENT.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // cpevent.h : proxy for circ events
  2. //
  3. // This is a part of the Active Template Library.
  4. // Copyright (C) 1996-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Active Template Library Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Active Template Library product.
  12. //////////////////////////////////////////////////////////////////////////////
  13. // CProxy_CircEvents
  14. template <class T>
  15. class CProxy_CircEvents : public IConnectionPointImpl<T, &DIID__CircEvents, CComDynamicUnkArray>
  16. {
  17. public:
  18. void Fire_Click()
  19. {
  20. // Dispatch ID : 0x1
  21. T* pT = static_cast<T*>(this);
  22. int i;
  23. int nConnections = m_vec.GetSize();
  24. for (i = 0; i < nConnections; i++)
  25. {
  26. pT->Lock();
  27. CComPtr<IUnknown> sp = m_vec.GetAt(i);
  28. pT->Unlock();
  29. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
  30. if (pDispatch != NULL)
  31. {
  32. DISPPARAMS disp = { NULL, NULL, 0, 0 };
  33. pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  34. }
  35. }
  36. }
  37. void Fire_KeyPress(short KeyAscii)
  38. {
  39. // Dispatch ID : 0x2
  40. T* pT = static_cast<T*>(this);
  41. int i;
  42. CComVariant* pvars = new CComVariant[1];
  43. int nConnections = m_vec.GetSize();
  44. for (i = 0; i < nConnections; i++)
  45. {
  46. pT->Lock();
  47. CComPtr<IUnknown> sp = m_vec.GetAt(i);
  48. pT->Unlock();
  49. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
  50. if (pDispatch != NULL)
  51. {
  52. pvars[0].vt = VT_I2;
  53. pvars[0].iVal= KeyAscii;
  54. DISPPARAMS disp = { pvars, NULL, 1, 0 };
  55. pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  56. }
  57. }
  58. delete[] pvars;
  59. }
  60. };