#define PARENTTYPE_CIF 0 #define PARENTTYPE_GROUP 1 #define PARENTTYPE_MODE 2 // 0 = CCifCile, 1 = CCifGroup, 2 = CCifMode class CCifEntryEnum { public: CCifEntryEnum(UINT dwFilter, UINT dwParentType, LPSTR pszParentID); ~CCifEntryEnum(); protected: UINT _cRef; UINT _uIndex; char _szParentID[MAX_ID_LENGTH]; UINT _uFilter; UINT _uParentType; // 0 = CCifCile, 1 = CCifGroup, 2 = CCifMode }; class CCifComponentEnum : public CCifEntryEnum, public IEnumCifComponents { public: CCifComponentEnum(CCifComponent **pp, UINT dwFilter, UINT dwParentType, LPSTR pszParentID); ~CCifComponentEnum(); // *** IUnknown methods *** STDMETHOD(QueryInterface) (REFIID riid, LPVOID * ppvObj); STDMETHOD_(ULONG,AddRef) (); STDMETHOD_(ULONG,Release) (); // enum methods STDMETHOD(Next)(ICifComponent **); STDMETHOD(Reset)(); private: CCifComponent **_rpComp; }; class CCifGroupEnum : public CCifEntryEnum, public IEnumCifGroups { public: CCifGroupEnum(CCifGroup **pp, UINT dwFilter); ~CCifGroupEnum(); // *** IUnknown methods *** STDMETHOD(QueryInterface) (REFIID riid, LPVOID * ppvObj); STDMETHOD_(ULONG,AddRef) (); STDMETHOD_(ULONG,Release) (); // enum methods STDMETHOD(Next)(ICifGroup **); STDMETHOD(Reset)(); private: CCifGroup **_rpGroup; }; class CCifModeEnum : public CCifEntryEnum, public IEnumCifModes { public: CCifModeEnum(CCifMode **pp, UINT dwFilter); ~CCifModeEnum(); // *** IUnknown methods *** STDMETHOD(QueryInterface) (REFIID riid, LPVOID * ppvObj); STDMETHOD_(ULONG,AddRef) (); STDMETHOD_(ULONG,Release) (); // enum methods STDMETHOD(Next)(ICifMode **); STDMETHOD(Reset)(); private: CCifMode **_rpMode; };