Compartir a través de


IDispEventImpl (clase)

Esta clase proporciona implementaciones de los métodos IDispatch.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

template <UINT nID, class T,
    const IID* pdiid = &IID_NULL,
    const GUID* plibid = &GUID_NULL,
    WORD wMajor = 0,
    WORD wMinor = 0,
    class tihclass = CcomTypeInfoHolder>
class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>

Parámetros

Nid
Un identificador único para el objeto de origen. Cuando IDispEventImpl es la clase base de un control compuesto, use el id. de recurso del control contenido que quiera para este parámetro. En otros casos, use un número entero positivo arbitrario.

T
La clase del usuario, que se deriva de IDispEventImpl.

pdiid
El puntero al IID del evento dispinterface implementado por esta clase. Esta interfaz debe definirse en la biblioteca de tipos indicada por plibid, wMajor y wMinor.

plibid
Puntero a la biblioteca de tipos que define la interfaz de envío a la que apunta pdiid. Si &GUID_NULL, la biblioteca de tipos se cargará desde el objeto que aprovisionamiento de los eventos.

wMajor
La versión principal de la biblioteca de tipos. El valor predeterminado es 0.

wMinor
La versión secundaria de la biblioteca de tipos. El valor predeterminado es 0.

tihclass
Clase usada para administrar la información de tipo para T. El valor predeterminado es una clase de tipo CComTypeInfoHolder; sin embargo, puede invalidar este parámetro de plantilla proporcionando una clase de un tipo distinto de CComTypeInfoHolder.

Miembros

Definiciones de tipos públicas

Nombre Descripción
IDispEventImpl::_tihclass Clase usada para administrar la información de tipo. De forma predeterminada, CComTypeInfoHolder.

Constructores públicos

Nombre Descripción
IDispEventImpl::IDispEventImpl Constructor .

Métodos públicos

Nombre Descripción
IDispEventImpl::GetFuncInfoFromId Busca el índice de función para el identificador de envío especificado.
IDispEventImpl::GetIDsOfNames Asigna un único miembro y un conjunto opcional de nombres de argumento a un conjunto correspondiente de DISPID enteros.
IDispEventImpl::GetTypeInfo Recupera la información de tipo de un objeto.
IDispEventImpl::GetTypeInfoCount Recupera el número de interfaces de información de tipo.
IDispEventImpl::GetUserDefinedType Recupera el tipo básico de un tipo definido por el usuario.

Comentarios

IDispEventImpl proporciona una manera de implementar un evento dispinterface sin necesidad de proporcionar un código de implementación para cada método o evento en esa interfaz. IDispEventImpl proporciona implementaciones de los métodos IDispatch. Solo tiene que proporcionar implementaciones para los eventos que le interesa controlar.

IDispEventImpl funciona junto con el mapa de receptor de eventos en la clase para enrutar los eventos a la función de controlador adecuada. Para usar esta clase:

Agregue una macro SINK_ENTRY o SINK_ENTRY_EX al mapa de receptor de eventos para cada evento de cada objeto que quiera controlar. Cuando se usa IDispEventImpl como clase base de un control compuesto, puede llamar a AtlAdviseSinkMap para establecer e interrumpir la conexión con los orígenes de eventos para todas las entradas del mapa de receptor de eventos. En otros casos, o bien para tener un mayor control, llame a DispEventAdvise para establecer la conexión entre el objeto de origen y la clase base. Llame a DispEventUnadvise para interrumpir la conexión.

Debe derivar de IDispEventImpl (mediante un valor único para nID) para cada objeto del que necesite controlar los eventos. Puede volver a usar la clase base si quita un objeto de origen y, a continuación, avisa a otro objeto de origen diferente. Sin embargo, el número máximo de objetos de origen que puede controlar un solo objeto a la vez está limitado por el número de clases base IDispEventImpl.

IDispEventImpl proporciona la misma funcionalidad que IDispEventSimpleImpl, salvo por el hecho de que obtiene información de tipo sobre la interfaz de una biblioteca de tipos en lugar de proporcionarla como puntero a una estructura _ATL_FUNC_INFO. Use IDispEventSimpleImpl cuando no tenga una biblioteca de tipos que describa la interfaz de eventos o quiera evitar la sobrecarga derivada del uso de la biblioteca de tipos.

Nota:

IDispEventImpl y IDispEventSimpleImpl proporcionan su propia implementación de IUnknown::QueryInterface que permite que cada clase base IDispEventImpl y IDispEventSimpleImpl actúe como una identidad COM independiente, a la vez que permite el acceso directo a los miembros de clase en el objeto COM principal.

La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos; no se admite ningún otro valor devuelto y su comportamiento no está definido.

Para más información, vea Compatibilidad con IDispEventImpl.

Jerarquía de herencia

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

IDispEventImpl

Requisitos

Encabezado: atlcom.h

IDispEventImpl::GetFuncInfoFromId

Busca el índice de función para el identificador de envío especificado.

HRESULT GetFuncInfoFromId(
    const IID& iid,
    DISPID dispidMember,
    LCID lcid,
    _ATL_FUNC_INFO& info);

Parámetros

iid
[in] Referencia al identificador de la función.

dispidMember
[in] Identificador de envío de la función.

lcid
[in] Contexto de configuración regional del identificador de función.

info
[in] Estructura que indica cómo se llama a la función.

Valor devuelto

Valor HRESULT estándar.

IDispEventImpl::GetIDsOfNames

Asigna un único miembro y un conjunto opcional de nombres de argumento a un conjunto correspondiente de DISPID enteros, que se pueden usar en llamadas posteriores a IDispatch::Invoke.

STDMETHOD(GetIDsOfNames)(
    REFIID riid,
    LPOLESTR* rgszNames,
    UINT cNames,
    LCID lcid,
    DISPID* rgdispid);

Comentarios

Consulte IDispatch::GetIDsOfNames en Windows SDK.

IDispEventImpl::GetTypeInfo

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

STDMETHOD(GetTypeInfo)(
    UINT itinfo,
    LCID lcid,
    ITypeInfo** pptinfo);

Comentarios

IDispEventImpl::GetTypeInfoCount

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Comentarios

Consulte IDispatch::GetTypeInfoCount en Windows SDK.

IDispEventImpl::GetUserDefinedType

Recupera el tipo básico de un tipo definido por el usuario.

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

Parámetros

pTI
[in] Puntero a la interfaz ITypeInfo que contiene el tipo definido por el usuario.

hrt
[in] Identificador de la descripción de tipo que se va a recuperar.

Valor devuelto

Tipo de variante.

Comentarios

See ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

Constructor . Almacena los valores de los parámetros de plantilla de clase plibid, pdiid, wMajor y wMinor.

IDispEventImpl();

IDispEventImpl::tihclass

Esta definición de tipo es una instancia del parámetro de plantilla de clase tihclass.

typedef tihclass _tihclass;

Comentarios

De forma predeterminada, la clase es CComTypeInfoHolder. CComTypeInfoHolder administra la información de tipo de la clase.

Consulte también

_ATL_FUNC_INFO (estructura)
IDispatchImpl (clase)
IDispEventSimpleImpl (clase)
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Información general sobre la clase