Enumerators provide a consistent way to iterate through a collection of objects. For example, you can define a simple enumerator to access strings in a collection. A complex enumerator can access records from a database.
This article describes:
ATL does not define any standard objects for enumerators. However, it does provide you with the infrastructure for building them easily using the CComEnum and _Copy templates.
COM implements enumerators as separate objects that usually support a single interface, IEnumxxxx, where xxxx is the type that is being enumerated. Standard enumerator types defined by COM include: IEnumUnknown, IEnumMoniker, IEnumString, IEnumVARIANT, IEnumFORMATETC, IEnumSTATSTG, IEnumSTATDATA, and IEnumOLEVERB.