CComEnumImpl::Init
È necessario chiamare questo metodo prima di passare un puntatore a un'interfaccia di enumeratori di nuovo a tutti i client.
HRESULT Init(
T* begin,
T* end,
IUnknown* pUnk,
CComEnumFlags flags = AtlFlagNoCopy
);
Parametri
begin
Un puntatore al primo elemento della matrice contenente gli elementi da enumerare.end
Un puntatore alla posizione immediatamente oltre l'ultimo elemento della matrice contenente gli elementi da enumerare.punk
[in] il puntatore IUnknown di un oggetto che deve essere mantenuto per la durata dell'enumeratore. Passare NULL se tale oggetto.flags
Contrassegna specificare se un enumeratore deve avere la proprietà della matrice o eseguire una copia di. I valori possibili sono descritti di seguito.
Valore restituito
Un valore standard HRESULT.
Note
Solo chiamare questo metodo una volta inizializzano l'enumeratore, viene utilizzato, quindi lo genera via.
Se si passano puntatori agli elementi di una matrice utilizzata in un altro oggetto (e non richiedere all'enumeratore di copiare i dati, è possibile utilizzare il parametro punk per assicurarsi che l'oggetto e la matrice che utilizza è disponibile fino a quando l'enumeratore è necessaria. L'enumeratore utilizza semplicemente un riferimento COM sull'oggetto per continuare attivo. Il riferimento COM viene rilasciato automaticamente quando l'enumeratore verrà eliminato.
Il parametro flags consente di specificare come l'enumeratore deve trattare gli elementi della matrice passati. flags può assumere uno dei valori dall'enumerazione CComEnumFlags indicata di seguito:
enum CComEnumFlags
{
AtlFlagNoCopy = 0,
AtlFlagTakeOwnership = 2, // BitOwn
AtlFlagCopy = 3 // BitOwn | BitCopy
};
AtlFlagNoCopy significa che la durata della matrice non viene controllata dall'enumeratore. In questo caso contrario, la matrice verrà statica o l'oggetto identificato dal punk è responsabile della versione della matrice quando non è più necessario.
AtlFlagTakeOwnership significa che la distruzione della matrice deve essere controllata da enumeratore. In questo caso, la matrice deve essere assegnata in modo dinamico utilizzando new. L'enumeratore eliminata la matrice nel distruttore. In genere, si passano NULL per il punk, benché sia ancora passare un puntatore valido se è necessario essere notificati distruzione dell'enumeratore per qualche motivo.
AtlFlagCopy significa che una nuova matrice deve essere creata copia della matrice passata a Init. La durata della nuova matrice deve essere controllata da enumeratore. L'enumeratore eliminata la matrice nel distruttore. In genere, si passano NULL per il punk, benché sia ancora passare un puntatore valido se è necessario essere notificati distruzione dell'enumeratore per qualche motivo.
Nota
Il prototipo del metodo specifica gli elementi di matrice come è di tipo T, in cui T è stato definito come parametro di modello alla classe.Si tratta dello stesso tipo esposto tramite il metodo CComEnumImpl::Nextdell'interfaccia COM.L'implicazione di questa è che, a differenza IEnumOnSTLImpl, questa classe non supporta l'operazione di archiviazione diversa e i tipi di dati esposti.Il tipo di dati degli elementi nella matrice corrisponda al tipo di dati esposto dall'utilizzo dell'interfaccia COM.
Requisiti
Header: atlcom.h