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 | Esegue il mapping di un singolo membro e di 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
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
Esegue il mapping di un singolo membro e di 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