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