Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Debe llamar a este método antes de pasar un puntero a la interfaz del enumerador a cualquier cliente.
HRESULT Init(
T* begin,
T* end,
IUnknown* pUnk,
CComEnumFlags flags = AtlFlagNoCopy
);
Parámetros
begin
Un puntero al primer elemento de la matriz que contiene los elementos que se van a mostrar.end
Un puntero a la ubicación simplemente más allá del último elemento de la matriz que contiene los elementos que se van a mostrar.punky
[in] El puntero de IUnknown de un objeto que se debe mantener activo durante la duración del enumerador.Paso NULL si no existe ningún objeto.flags
Marca especificar si el enumerador debe asumir la propiedad de matriz o hacer una copia.Los valores posibles son descritos a continuación.
Valor devuelto
un valor estándar de HRESULT .
Comentarios
Llame a este método una vez — inicializa el enumerador, lo utiliza, lo desecha.
Si se pasan punteros a los elementos de una matriz almacenado en otro objeto (y no pida al enumerador copie los datos), puede utilizar el parámetro punky para asegurarse de que el objeto y la matriz que contiene está disponible para mientras el enumerador los necesite.El enumerador simplemente mantiene una referencia COM en el objeto para mantenerlo activo.La referencia COM automáticamente se libera cuando se destruye el enumerador.
El parámetro de flags permite especificar cómo el enumerador debe tratar los elementos de matriz pasados al.flags puede tomar uno de los valores de enumeración de CComEnumFlags mostrada a continuación:
enum CComEnumFlags
{
AtlFlagNoCopy = 0,
AtlFlagTakeOwnership = 2, // BitOwn
AtlFlagCopy = 3 // BitOwn | BitCopy
};
AtlFlagNoCopy significa que la duración de la matriz no está controlado por el enumerador.En este caso, matriz o se estático o el objeto identificado por punky será responsable de liberar la matriz cuando ya no se necesita.
AtlFlagTakeOwnership significa que la destrucción de matriz debe ser controlada por el enumerador.En este caso, se debe haber asignado dinámicamente mediante nuevo.El enumerador eliminará la matriz en su destructor.Normalmente, pasaría NULL para el punky, aunque es posible pasar un puntero válido si necesita recibir una notificación de destrucción de enumerador por algún motivo.
AtlFlagCopy significa que una nueva matriz debe crear copiando la matriz pasado a Init.Duración de nueva matriz debe ser controlada por el enumerador.El enumerador eliminará la matriz en su destructor.Normalmente, pasaría NULL para el punky, aunque es posible pasar un puntero válido si necesita recibir una notificación de destrucción de enumerador por algún motivo.
[!NOTA]
El prototipo de este método especifica los elementos de matriz como capaces de Tescrito, donde estaba definido T como parámetro de plantilla a la clase.Es el mismo tipo que se expone mediante el método CComEnumImpl:: Siguientede interfaz COM.La implicación de esto es que, a diferencia de IEnumOnSTLImpl, esta clase no admite diferente almacenamiento y tipos de datos expuestos.El tipo de datos de elementos de la matriz debe ser el mismo que el tipo de datos expuesto por medio de la interfaz COM.
Requisitos
encabezado: atlcom.h