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

Windows编程

开发平台:

Visual C++

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