Condividi tramite


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