Share via


Classe IDispEventImpl

Questa classe fornisce implementazioni dei IDispatch metodi.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

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>

Parametri

nID
Identificatore univoco per l'oggetto di origine. Quando IDispEventImpl è la classe di base per un controllo composito, usare l'ID risorsa del controllo contenuto desiderato per questo parametro. In altri casi, usare un numero intero positivo arbitrario.

T
Classe dell'utente, derivata da IDispEventImpl.

pdiid
Puntatore all'IID della dispinterface dell'evento implementata da questa classe. Questa interfaccia deve essere definita nella libreria dei tipi indicata da plibid, wMajor e wMinor.

plibid
Puntatore alla libreria dei tipi che definisce l'interfaccia dispatch a cui punta pdiid. Se &GUID_NULL, la libreria dei tipi verrà caricata dall'origine degli eventi.

wMajor
Versione principale della libreria dei tipi. Il valore predefinito è 0.

wMinor
Versione secondaria della libreria dei tipi. Il valore predefinito è 0.

tihclass
Classe utilizzata per gestire le informazioni sul tipo per T. Il valore predefinito è una classe di tipo CComTypeInfoHolder. Tuttavia, è possibile eseguire l'override di questo parametro di modello specificando una classe di un tipo diverso da CComTypeInfoHolder.

Membri

Typedef pubblici

Nome Descrizione
IDispEventImpl::_tihclass Classe utilizzata per gestire le informazioni sul tipo. Per impostazione predefinita, CComTypeInfoHolder.

Costruttori pubblici

Nome Descrizione
IDispEventImpl::IDispEventImpl Costruttore.

Metodi pubblici

Nome Descrizione
IDispEventImpl::GetFuncInfoFromId Individua l'indice della funzione per l'identificatore di invio specificato.
IDispEventImpl::GetIDsOfNames Mappe un singolo membro e un set facoltativo di nomi di argomenti a un set corrispondente di DISPID integer.
IDispEventImpl::GetTypeInfo Recupera le informazioni sul tipo per un oggetto .
IDispEventImpl::GetTypeInfoCount Recupera il numero di interfacce di informazioni sul tipo.
IDispEventImpl::GetUserDefinedType Recupera il tipo di base di un tipo definito dall'utente.

Osservazioni:

IDispEventImpl fornisce un modo per implementare una dispinterface di eventi senza che sia necessario specificare il codice di implementazione per ogni metodo/evento in tale interfaccia. IDispEventImpl fornisce implementazioni dei IDispatch metodi. È sufficiente fornire implementazioni per gli eventi di cui si è interessati alla gestione.

IDispEventImpl funziona insieme alla mappa del sink di eventi nella classe per instradare gli eventi alla funzione del gestore appropriata. Per usare questa classe:

Aggiungere una macro SINK_ENTRY o SINK_ENTRY_EX alla mappa sink eventi per ogni evento in ogni oggetto che si desidera gestire. Quando si usa IDispEventImpl come classe base di un controllo composito, è possibile chiamare AtlAdviseSinkMap per stabilire e interrompere la connessione con le origini eventi per tutte le voci della mappa sink eventi. In altri casi, o per un controllo maggiore, chiamare DispEventAdvise per stabilire la connessione tra l'oggetto di origine e la classe di base. Chiamare DispEventUnadvise per interrompere la connessione.

È necessario derivare da IDispEventImpl (usando un valore univoco per nID) per ogni oggetto per cui è necessario gestire gli eventi. È possibile riutilizzare la classe di base annullando la visualizzazione di un avviso su un oggetto di origine e quindi consigliando un oggetto di origine diverso, ma il numero massimo di oggetti di origine che possono essere gestiti da un singolo oggetto alla volta è limitato dal numero di IDispEventImpl classi di base.

IDispEventImpl fornisce la stessa funzionalità di IDispEventSimpleImpl, ad eccezione del fatto che ottiene informazioni sul tipo sull'interfaccia da una libreria dei tipi anziché la specifica come puntatore a una struttura _ATL_FUNC_INFO . Usare IDispEventSimpleImpl quando non si dispone di una libreria dei tipi che descrive l'interfaccia evento o si vuole evitare l'overhead associato all'uso della libreria dei tipi.

Nota

IDispEventImpl e IDispEventSimpleImpl forniscono la propria implementazione di IUnknown::QueryInterface consentire a ogni IDispEventImpl classe di IDispEventSimpleImpl base di fungere da identità COM separata, consentendo comunque l'accesso diretto ai membri della classe nell'oggetto COM principale.

L'implementazione CE ATL dei sink di eventi ActiveX supporta solo valori restituiti di tipo HRESULT o void dai metodi del gestore eventi; qualsiasi altro valore restituito non è supportato e il relativo comportamento non è definito.

Per altre informazioni, vedere Supporto di IDispEventImpl.

Gerarchia di ereditarietà

_IDispEvent

_IDispEventLocator

Idispeventsimpleimpl

IDispEventImpl

Requisiti

Intestazione: atlcom.h

IDispEventImpl::GetFuncInfoFromId

Individua l'indice della funzione per l'identificatore di invio specificato.

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

Parametri

Iid
[in] Riferimento all'ID della funzione.

dispidMember
[in] ID dispatch della funzione.

lcid
[in] Contesto delle impostazioni locali dell'ID funzione.

info
[in] Struttura che indica come viene chiamata la funzione.

Valore restituito

Valore HRESULT standard.

IDispEventImpl::GetIDsOfNames

Mappe un singolo membro e un set facoltativo di nomi di argomenti a un set corrispondente di DISPID integer, che può essere usato nelle chiamate successive a IDispatch::Invoke.

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

Osservazioni:

Vedere IDispatch::GetIDsOfNames in Windows SDK.

IDispEventImpl::GetTypeInfo

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.

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

Osservazioni:

IDispEventImpl::GetTypeInfoCount

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Osservazioni:

Vedere IDispatch::GetTypeInfoCount in Windows SDK.

IDispEventImpl::GetUserDefinedType

Recupera il tipo di base di un tipo definito dall'utente.

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

Parametri

Pti
[in] Puntatore all'interfaccia ITypeInfo contenente il tipo definito dall'utente.

Hrt
[in] Handle della descrizione del tipo da recuperare.

Valore restituito

Tipo di variante.

Osservazioni:

Vedere ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

Costruttore. Archivia i valori dei parametri del modello di classe plibid, pdiid, wMajor e wMinor.

IDispEventImpl();

IDispEventImpl::tihclass

Questo typedef è un'istanza del parametro del modello di classe tihclass.

typedef tihclass _tihclass;

Osservazioni:

Per impostazione predefinita, la classe è CComTypeInfoHolder. CComTypeInfoHolder gestisce le informazioni sul tipo per la classe .

Vedi anche

Struttura _ATL_FUNC_INFO
Classe IDispatchImpl
Classe IDispEventSimpleImpl
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Cenni preliminari sulla classe