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

  1. // OBJECTS.H : declarations for CMyCircle, CMyCircleCollection
  2. //          and CMyCircleCollectionContainer
  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. #ifndef __OBJECTS_H__
  15. #define __OBJECTS_H__
  16.  
  17. #include "circcres.h"
  18.  
  19. /////////////////////////////////////////////////////////////////////////////
  20. // class CMyCircle : user defined object for enumeration
  21.  
  22. class CMyCircle :
  23.     public IDispatchImpl<IMyCircle, &IID_IMyCircle, &LIBID_CIRCCOLLLib>,
  24.     public ISupportErrorInfo,
  25.     public CComObjectRoot
  26. {
  27. public:
  28.     CMyCircle();
  29. BEGIN_COM_MAP(CMyCircle)
  30.     COM_INTERFACE_ENTRY(IDispatch)
  31.     COM_INTERFACE_ENTRY(IMyCircle)
  32.     COM_INTERFACE_ENTRY(ISupportErrorInfo)
  33. END_COM_MAP()
  34. DECLARE_NOT_AGGREGATABLE(CMyCircle)
  35.  
  36. // IMyCircle
  37.     STDMETHOD(get_XCenter)(double* pXCenter);
  38.     STDMETHOD(put_XCenter)(double xCenter);
  39.     STDMETHOD(get_YCenter)(double* pYCenter);
  40.     STDMETHOD(put_YCenter)(double yCenter);
  41.     STDMETHOD(get_Radius)(double* pRadius);
  42.     STDMETHOD(put_Radius)(double Radius);
  43.     STDMETHOD(get_Label)(BSTR* bstrLabel);
  44.     STDMETHOD(put_Label)(BSTR bstrLAbel);
  45. //ISupportErrorInfo
  46.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
  47.     {
  48.         return (InlineIsEqualGUID(IID_IMyCircle,riid)) ? S_OK : S_FALSE;
  49.     }
  50.  
  51. // Attributes
  52. protected:
  53.     double          m_xCenter;
  54.     double          m_yCenter;
  55.     double          m_Radius;
  56.     CComBSTR        m_bstrLabel;
  57.  
  58.     friend class CMyCircleCollection;
  59. };
  60.  
  61. ///////////////////////////////////////////////////////////////////////////
  62. // class CMyCircleCollectionCreator
  63.  
  64. class CMyCircleCollectionCreator :
  65.     public IDispatchImpl<IMyCircleCollectionCreator, &IID_IMyCircleCollectionCreator, &LIBID_CIRCCOLLLib>,
  66.     public ISupportErrorInfo,
  67.     public CComObjectRoot,
  68.     public CComCoClass<CMyCircleCollectionCreator,&CLSID_MyCircleCollectionCreator>
  69. {
  70. public:
  71.     BEGIN_COM_MAP(CMyCircleCollectionCreator)
  72.         COM_INTERFACE_ENTRY(IDispatch)
  73.         COM_INTERFACE_ENTRY(IMyCircleCollectionCreator)
  74.         COM_INTERFACE_ENTRY(ISupportErrorInfo)
  75.     END_COM_MAP()
  76.     DECLARE_NOT_AGGREGATABLE(CMyCircleCollectionCreator)
  77.     DECLARE_REGISTRY(CMyCircleCollectionCreator, _T("CircColl.MyCircleCollection.1"), _T("CircColl.MyCircleCollection.1"), IDS_CIRCLECOLL_DESC, THREADFLAGS_BOTH)
  78.  
  79. // IMyCircleCollectionCreator
  80.     STDMETHOD(GetCircles)(short n, VARIANT* retval);
  81. //ISupportErrorInfo
  82.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
  83.     {
  84.         return (InlineIsEqualGUID(IID_IMyCircleCollectionCreator,riid)) ? S_OK : S_FALSE;
  85.     }
  86. };
  87.  
  88.  
  89. ///////////////////////////////////////////////////////////////////////////
  90. // class CMyCircleCollection
  91.  
  92. class CMyCircleCollection :
  93.     public IDispatchImpl<IMyCircleCollection, &IID_IMyCircleCollection, &LIBID_CIRCCOLLLib>,
  94.     public ISupportErrorInfo,
  95.     public CComObjectRoot
  96. {
  97. public:
  98.     BEGIN_COM_MAP(CMyCircleCollection)
  99.         COM_INTERFACE_ENTRY(IDispatch)
  100.         COM_INTERFACE_ENTRY(IMyCircleCollection)
  101.         COM_INTERFACE_ENTRY(ISupportErrorInfo)
  102.     END_COM_MAP()
  103.     DECLARE_NOT_AGGREGATABLE(CMyCircleCollection)
  104.     CMyCircleCollection()
  105.     {
  106.         m_VarVect = NULL;
  107.         m_nSize = 0;
  108.     }
  109.     ~CMyCircleCollection()
  110.     {
  111.         delete [] m_VarVect;
  112.     }
  113.  
  114. // IMyCircleCollection methods
  115.     STDMETHOD(get_Count)(long* retval);
  116.     STDMETHOD(get_Item)(long Index, VARIANT* retval);
  117.     STDMETHOD(get__NewEnum)(IUnknown** retval);
  118. //ISupportErrorInfo
  119.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
  120.     {
  121.         return (InlineIsEqualGUID(IID_IMyCircleCollection,riid)) ? S_OK : S_FALSE;
  122.     }
  123.  
  124. // helpers
  125. public:
  126.     void Init(short n);
  127. protected:
  128. // internal data
  129.     CComVariant* m_VarVect;
  130.     int m_nSize;
  131. };
  132.  
  133. ///////////////////////////////////////////////////////////////////////////
  134.  
  135. #endif // __OBJECTS_H__
  136.