Classe IDispEventSimpleImpl
Questa classe fornisce implementazioni dei IDispatch
metodi, senza ottenere informazioni sul tipo da una libreria dei tipi.
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>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
Parametri
nID
Identificatore univoco per l'oggetto di origine. Quando IDispEventSimpleImpl
è 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 IDispEventSimpleImpl
.
pdiid
Puntatore all'IID della dispinterface dell'evento implementata da questa classe.
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
IDispEventSimpleImpl::Advise | Stabilisce una connessione con l'origine evento predefinita. |
IDispEventSimpleImpl::D ispEventAdvise | Stabilisce una connessione con l'origine evento. |
IDispEventSimpleImpl::D ispEventUnadvise | Interrompe la connessione con l'origine evento. |
IDispEventSimpleImpl::GetIDsOfNames | Restituisce E_NOTIMPL. |
IDispEventSimpleImpl::GetTypeInfo | Restituisce E_NOTIMPL. |
IDispEventSimpleImpl::GetTypeInfoCount | Restituisce E_NOTIMPL. |
IDispEventSimpleImpl::Invoke | Chiama i gestori eventi elencati nella mappa del sink eventi. |
IDispEventSimpleImpl::Unadvise | Interrompe la connessione con l'origine evento predefinita. |
Osservazioni:
IDispEventSimpleImpl
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. IDispEventSimpleImpl
fornisce implementazioni dei IDispatch
metodi. È sufficiente fornire implementazioni per gli eventi di cui si è interessati alla gestione.
IDispEventSimpleImpl
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_INFO alla mappa sink eventi per ogni evento in ogni oggetto che si desidera gestire.
Fornire informazioni sul tipo per ogni evento passando un puntatore a una struttura _ATL_FUNC_INFO come parametro a ogni voce. Nella piattaforma x86 il
_ATL_FUNC_INFO.cc
valore deve essere CC_CDECL con il metodo di chiamata della funzione di callback di __stdcall.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 IDispEventSimpleImpl
(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 IDispEventSimpleImpl
classi di base.
IDispEventSimplImpl
fornisce la stessa funzionalità di IDispEventImpl, ad eccezione del fatto che non ottiene informazioni sul tipo sull'interfaccia da una libreria dei tipi. Le procedure guidate generano codice basato solo su IDispEventImpl
, ma è possibile usare IDispEventSimpleImpl
aggiungendo il codice a mano. Usare IDispEventSimpleImpl
quando non si dispone di una libreria dei tipi che descrive l'interfaccia evento o si vuole evitare il sovraccarico associato all'uso della libreria dei tipi.
Nota
IDispEventImpl
e IDispEventSimpleImpl
forniscono la propria implementazione dell'abilitazione di IUnknown::QueryInterface
ogni IDispEventImpl
classe di base come IDispEventSimpleImpl
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
Requisiti
Intestazione: atlcom.h
IDispEventSimpleImpl::Advise
Chiamare questo metodo per stabilire una connessione con l'origine evento rappresentata da pUnk.
HRESULT Advise(IUnknown* pUnk);
Parametri
Punk
[in] Puntatore all'interfaccia IUnknown
dell'oggetto origine evento.
Valore restituito
S_OK o qualsiasi valore HRESULT non riuscito.
Osservazioni:
Dopo aver stabilito la connessione, gli eventi generati da pUnk verranno instradati ai gestori nella classe tramite la mappa del sink di eventi.
Nota
Se la classe deriva da più IDispEventSimpleImpl
classi, sarà necessario disambiguare le chiamate a questo metodo definendo l'ambito della chiamata con la classe base specifica a cui si è interessati.
Advise
stabilisce una connessione con l'origine evento predefinita, ottiene l'IID dell'origine evento predefinita dell'oggetto come determinato da AtlGetObjectSourceInterface.
IDispEventSimpleImpl::D ispEventAdvise
Chiamare questo metodo per stabilire una connessione con l'origine evento rappresentata da pUnk.
HRESULT DispEventAdvise(IUnknown* pUnk const IID* piid);
Parametri
Punk
[in] Puntatore all'interfaccia IUnknown
dell'oggetto origine evento.
piid
Puntatore all'IID dell'oggetto origine evento.
Valore restituito
S_OK o qualsiasi valore HRESULT non riuscito.
Osservazioni:
Successivamente, gli eventi generati da pUnk verranno instradati ai gestori nella classe tramite la mappa del sink di eventi.
Nota
Se la classe deriva da più IDispEventSimpleImpl
classi, sarà necessario disambiguare le chiamate a questo metodo definendo l'ambito della chiamata con la classe base specifica a cui si è interessati.
DispEventAdvise
stabilisce una connessione con l'origine evento specificata in pdiid
.
IDispEventSimpleImpl::D ispEventUnadvise
Interrompe la connessione con l'origine evento rappresentata da pUnk.
HRESULT DispEventUnadvise(IUnknown* pUnk const IID* piid);
Parametri
Punk
[in] Puntatore all'interfaccia IUnknown
dell'oggetto origine evento.
piid
Puntatore all'IID dell'oggetto origine evento.
Valore restituito
S_OK o qualsiasi valore HRESULT non riuscito.
Osservazioni:
Una volta interrotta la connessione, gli eventi non verranno più indirizzati alle funzioni del gestore elencate nella mappa sink eventi.
Nota
Se la classe deriva da più IDispEventSimpleImpl
classi, sarà necessario disambiguare le chiamate a questo metodo definendo l'ambito della chiamata con la classe base specifica a cui si è interessati.
DispEventAdvise
interrompe una connessione stabilita con l'origine evento specificata in pdiid
.
IDispEventSimpleImpl::GetIDsOfNames
Questa implementazione di IDispatch::GetIDsOfNames
restituisce E_NOTIMPL.
STDMETHOD(GetIDsOfNames)(
REFIID /* riid */,
LPOLESTR* /* rgszNames */,
UINT /* cNames */,
LCID /* lcid */,
DISPID* /* rgdispid */);
Osservazioni:
Vedere IDispatch::GetIDsOfNames in Windows SDK.
IDispEventSimpleImpl::GetTypeInfo
Questa implementazione di IDispatch::GetTypeInfo
restituisce E_NOTIMPL.
STDMETHOD(GetTypeInfo)(
UINT /* itinfo */,
LCID /* lcid */,
ITypeInfo** /* pptinfo */);
Osservazioni:
Vedere IDispatch::GetTypeInfo in Windows SDK.
IDispEventSimpleImpl::GetTypeInfoCount
Questa implementazione di IDispatch::GetTypeInfoCount
restituisce E_NOTIMPL.
STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);
Osservazioni:
Vedere IDispatch::GetTypeInfoCount in Windows SDK.
IDispEventSimpleImpl::Invoke
Questa implementazione di IDispatch::Invoke
chiama i gestori eventi elencati nella mappa del sink eventi.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID /* riid */,
LCID lcid,
WORD /* wFlags */,
DISPPARMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* /* pexcepinfo */,
UINT* /* puArgErr */);
Osservazioni:
Vedere IDispatch::Invoke.
IDispEventSimpleImpl::Unadvise
Interrompe la connessione con l'origine evento rappresentata da pUnk.
HRESULT Unadvise(IUnknown* pUnk);
Parametri
Punk
[in] Puntatore all'interfaccia IUnknown
dell'oggetto origine evento.
Valore restituito
S_OK o qualsiasi valore HRESULT non riuscito.
Osservazioni:
Una volta interrotta la connessione, gli eventi non verranno più indirizzati alle funzioni del gestore elencate nella mappa sink eventi.
Nota
Se la classe deriva da più IDispEventSimpleImpl
classi, sarà necessario disambiguare le chiamate a questo metodo definendo l'ambito della chiamata con la classe base specifica a cui si è interessati.
Unadvise
interrompe una connessione stabilita con l'origine evento predefinita specificata in pdiid
.
Unavise
interrompe una connessione con l'origine evento predefinita, ottiene l'IID dell'origine evento predefinita dell'oggetto come determinato da AtlGetObjectSourceInterface.
Vedi anche
Struttura _ATL_FUNC_INFO
Classe IDispatchImpl
Classe IDispEventImpl
SINK_ENTRY_INFO
Cenni preliminari sulla classe