home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / atl / polygon / polygoncp.h < prev    next >
C/C++ Source or Header  |  1998-03-26  |  2KB  |  63 lines

  1. #ifndef _POLYGONCP_H_
  2. #define _POLYGONCP_H_
  3.  
  4. template <class T>
  5. class CProxy_IPolyCtlEvents : public IConnectionPointImpl<T, &DIID__IPolyCtlEvents, CComDynamicUnkArray>
  6. {
  7.     //Warning this class may be recreated by the wizard.
  8. public:
  9.     VOID Fire_ClickIn(LONG x, LONG y)
  10.     {
  11.         T* pT = static_cast<T*>(this);
  12.         int nConnectionIndex;
  13.         CComVariant* pvars = new CComVariant[2];
  14.         int nConnections = m_vec.GetSize();
  15.  
  16.         for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
  17.         {
  18.             pT->Lock();
  19.             CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
  20.             pT->Unlock();
  21.             IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
  22.             if (pDispatch != NULL)
  23.             {
  24.                 pvars[1].vt = VT_I4;
  25.                 pvars[1].lVal= x;
  26.                 pvars[0].vt = VT_I4;
  27.                 pvars[0].lVal= y;
  28.                 DISPPARAMS disp = { pvars, NULL, 2, 0 };
  29.                 pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  30.             }
  31.         }
  32.         delete[] pvars;
  33.  
  34.     }
  35.     VOID Fire_ClickOut(LONG x, LONG y)
  36.     {
  37.         T* pT = static_cast<T*>(this);
  38.         int nConnectionIndex;
  39.         CComVariant* pvars = new CComVariant[2];
  40.         int nConnections = m_vec.GetSize();
  41.  
  42.         for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
  43.         {
  44.             pT->Lock();
  45.             CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
  46.             pT->Unlock();
  47.             IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
  48.             if (pDispatch != NULL)
  49.             {
  50.                 pvars[1].vt = VT_I4;
  51.                 pvars[1].lVal= x;
  52.                 pvars[0].vt = VT_I4;
  53.                 pvars[0].lVal= y;
  54.                 DISPPARAMS disp = { pvars, NULL, 2, 0 };
  55.                 pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  56.             }
  57.         }
  58.         delete[] pvars;
  59.  
  60.     }
  61. };
  62. #endif
  63.