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

  1. ///////////////////////////////////////////////////////////////////////////////////
  2. // IDrawServ : IDispatch (Dual)
  3. //
  4. // This is a part of the Active Template Library.
  5. // Copyright (C) 1996-1998 Microsoft Corporation
  6. // All rights reserved.
  7. //
  8. // This source code is only intended as a supplement to the
  9. // Active Template Library Reference and related
  10. // electronic documentation provided with the library.
  11. // See these sources for detailed information regarding the
  12. // Active Template Library product.
  13.  
  14. template <class T>
  15. class CProxyIDrawServ :
  16.     public IConnectionPointImpl<T, &IID_IDrawServ, CComDynamicUnkArray>
  17. {
  18. public:
  19. //  CProxyIDrawServ(IConnectionPointContainer* pCont) :
  20. //      CComConnectionPoint< CComDynamicArrayCONNECTDATA >(pCont, &IID_IDrawServ)
  21. //  {
  22. //  }
  23.  
  24. public:
  25.     HRESULT Draw(
  26.         long x1, long y1,
  27.         long x2, long y2,
  28.         unsigned long col)
  29.     {
  30.         T* pT = (T*)this;
  31.         pT->Lock();
  32.         HRESULT hr = S_OK;
  33.         IUnknown** pp = m_vec.begin();
  34.         IUnknown** ppEnd = m_vec.end();
  35.         while (pp < ppEnd && hr == S_OK)
  36.         {
  37.             if (*pp != NULL)
  38.             {
  39.                 IDrawServ* pIDrawServ = (IDrawServ*)*pp;
  40.                 hr = pIDrawServ->Draw(x1, y1, x2, y2, col);
  41.             }
  42.             pp++;
  43.         }
  44.         pT->Unlock();
  45.         return hr;
  46.     }
  47. };
  48.