Aracılığıyla paylaş


CComEnumOnSTL sınıfı

Bu sınıfı, com, stl toplama göre bir enumerator nesnesi tanımlar.

template <
   class Base,
   const IID* piid,
   class T,
   class Copy,
   class CollType,
   class ThreadModel = CComObjectThreadModel
>
class ATL_NO_VTABLE CComEnumOnSTL :
   public IEnumOnSTLImpl<Base, piid, T, Copy, CollType>,
   public CComObjectRootEx< ThreadModel >

Parametreler

  • Base
    com numaralayıcı (IEnumXXXX) arabirimi.

  • piid
    Numaralayıcı arabirimin arabirim kimliği için bir işaretçi.

  • T
    Numaralayıcı arabirimi tarafından sergilenen öğe türü.

  • Copy
    A kopya ilke sınıfı.

  • CollType
    stl container sınıfı.

Notlar

CComEnumOnSTLstl toplama göre com enumerator nesnesi tanımlar.Bu sınıfın kendi başına veya birlikte kullanılabilen ICollectionOnSTLImpl.Bu sınıf kullanmak için normal adımlar aşağıda özetlenmiştir.Daha fazla bilgi için bkz: atl koleksiyonları ve numaralandırıcıları.

Bu sınıf ICollectionOnSTLImpl ile kullanmak için:

  • typedefBu sınıfın uzmanlığı.

  • Use typedef 'ın uzmanlığı son şablon bağımsız değişken olarak ICollectionOnSTLImpl.

Bkz: atl koleksiyonları ve numaralandırıcıları ilgili bir örnek.

Bu sınıf ICollectionOnSTLImpl bağımsız olarak kullanmak için:

  • typedefBu sınıfın uzmanlığı.

  • Use typedef uzmanlığı şablon bağımsız değişken olarak CComObject.

  • Örneğini CComObject uzmanlığı.

  • Çağırarak enumerator nesnesi başlatılamıyor IEnumOnSTLImpl::Init.

  • Numaralayıcı arabirimini istemciye döndürür.

Devralma hiyerarşisi

CComObjectRootBase

Base

CComObjectRootEx

IEnumOnSTLImpl

CComEnumOnSTL

Gereksinimler

Başlık: atlcom.h

Örnek

Aşağıda gösterilen kod oluşturma ve bir enumerator nesnesi başlatma işlemek için soysal bir işlev sağlar:

template <class EnumType, class CollType>
HRESULT CreateSTLEnumerator(IUnknown** ppUnk, IUnknown* pUnkForRelease, 
   CollType& collection)
{
   if (ppUnk == NULL)
      return E_POINTER;
   *ppUnk = NULL;

   CComObject<EnumType>* pEnum = NULL;
   HRESULT hr = CComObject<EnumType>::CreateInstance(&pEnum);

   if (FAILED(hr))
      return hr;

   hr = pEnum->Init(pUnkForRelease, collection);

   if (SUCCEEDED(hr))
      hr = pEnum->QueryInterface(ppUnk);

   if (FAILED(hr))
      delete pEnum;

   return hr;
} // CreateSTLEnumerator

Bu şablon işlevi uygulamak için kullanılan _NewEnum aşağıda gösterildiği gibi bir koleksiyon arabirimi özelliği:

typedef CComEnumOnSTL<IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _Copy<VARIANT>,
   std::vector<CComVariant> > VarVarEnum;

class ATL_NO_VTABLE CVariantCollection :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CVariantCollection, &CLSID_VariantCollection>,
   public IDispatchImpl<IVariantCollection, &IID_IVariantCollection, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   std::vector<CComVariant> m_vec;

   STDMETHOD(get__NewEnum)(IUnknown** ppUnk)
   {
      return CreateSTLEnumerator<VarVarEnum>(ppUnk, this, m_vec);
   }

   // Remainder of class declaration omitted.

Bu kod oluşturur bir typedef için CComEnumOnSTL bir vektör sergiler CComVariant, s IEnumVariant arabirimi.CVariantCollection class basitçe uzmanlaşmış CreateSTLEnumerator bu tür numaralayıcı nesneleriyle çalışmak için.

Ayrıca bkz.

Başvuru

IEnumOnSTLImpl

CComObjectRootEx sınıfı

CComObjectThreadModel

IEnumOnSTLImpl sınıfı

Kavramlar

ATLCollections örnek: ICollectionOnSTLImpl, CComEnumOnSTL ve özel kopya ilke sınıflarını gösteren

Diğer Kaynaklar

atl sınıfına genel bakış