Compartir a través de


Clase IDispEventImpl

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, wMajory wMinor.

plibid
Puntero a la biblioteca de tipos que define la interfaz de distribución a pdiidla que apunta . Si &GUID_NULLes , la biblioteca de tipos se cargará desde el objeto que obtiene 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 que se usa 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 enteros DISPID.
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 SINK_ENTRY macro o SINK_ENTRY_EX al mapa del receptor de eventos para cada evento de cada objeto que quiera controlar. Al usar IDispEventImpl como clase base de un control compuesto, puede llamar AtlAdviseSinkMap a para establecer y interrumpir la conexión con los orígenes de eventos para todas las entradas del mapa del receptor de eventos. En otros casos, o para un mayor control, llame DispEventAdvise a para establecer la conexión entre el objeto de origen y la clase base. Llame DispEventUnadvise a para interrumpir la conexión.

Debe derivar de IDispEventImpl (mediante un valor único para ) para nIDcada objeto para el 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, excepto que obtiene información de tipo sobre la interfaz de una biblioteca de tipos en lugar de proporcionarla como puntero a una _ATL_FUNC_INFO estructura. 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 DE 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; cualquier otro valor devuelto no es compatible y su comportamiento no está definido.

Para obtener 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 estándar HRESULT .

IDispEventImpl::GetIDsOfNames

Asigna un único miembro y un conjunto opcional de nombres de argumento a un conjunto correspondiente de enteros DISPID, que se puede 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);

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 ITypeInfo interfaz 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

Consulte ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

Constructor . Almacena los valores de los parámetros plibidde plantilla de clase , pdiid, wMajory wMinor.

IDispEventImpl();

IDispEventImpl::_tihclass

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

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