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