CComEnumOnSTL 類別
這個類別會根據 C++ 標準程式庫集合定義 COM 列舉值物件。
語法
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>
參數
基地
COM 列舉值。 如需範例,請參閱 IEnumString 。
piid
列舉值介面之介面識別碼的指標。
T
列舉值介面所公開的專案類型。
複製
複製 原則 類別。
CollType
C++ 標準程式庫容器類別。
備註
CComEnumOnSTL
根據 C++ 標準程式庫集合定義 COM 列舉值物件。 這個類別可以單獨使用,也可以搭配 ICollectionOnSTLImpl 使用。 使用這個類別的一般步驟如下所述。 如需詳細資訊,請參閱 ATL 集合和列舉值 。
若要搭配 ICollectionOnSTLImpl 使用此類別:
typedef
這個類別的特製化。typedef
在 特製化ICollectionOnSTLImpl
中使用 作為最後一個樣板引數。
如需範例,請參閱 ATL 集合和列舉值 。
若要獨立于 ICollectionOnSTLImpl 使用這個類別:
typedef
這個類別的特製化。typedef
使用 做為 特製化的CComObject
樣板引數。建立特製化的實例
CComObject
。呼叫 IEnumOnSTLImpl::Init ,初始化列舉值物件。
將列舉值介面傳回用戶端。
繼承階層架構
CComObjectRootBase
Base
CComEnumOnSTL
需求
標頭: atlcom.h
範例
下列程式碼提供泛型函式來處理列舉值物件的建立和初始化:
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
此函式範本可用來實 _NewEnum
作集合介面的 屬性,如下所示:
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.
此程式碼會 typedef
建立 , CComEnumOnSTL
其會透過 IEnumVariant
介面公開 的 CComVariant
向量。 類別 CVariantCollection
只會專門 CreateSTLEnumerator
處理此類型的列舉值物件。
另請參閱
IEnumOnSTLImpl
ATLCollections 範例:示範 ICollectionOnSTLImpl、CComEnumOnSTL 和自訂複製原則類別
類別概觀
CComObjectRootEx 類別
CComObjectThreadModel
IEnumOnSTLImpl 類別
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應