Implementazione di un'interfaccia duale
È possibile implementare un'interfaccia doppia usando la classe IDispatchImpl , che fornisce un'implementazione predefinita dei IDispatch
metodi in un'interfaccia doppia. Per altre informazioni, vedere Implementing the IDispatch Interface.
Per usare questa classe:
Definire l'interfaccia duale in una libreria dei tipi.
Derivare la classe da una specializzazione di
IDispatchImpl
(passare informazioni sull'interfaccia e sulla libreria dei tipi come argomenti del modello).Aggiungere una voce (o voci) alla mappa COM per esporre l'interfaccia doppia tramite
QueryInterface
.Implementare la parte vtable dell'interfaccia nella classe .
Assicurarsi che la libreria dei tipi contenente la definizione dell'interfaccia sia disponibile per gli oggetti in fase di esecuzione.
Creazione guidata oggetto semplice ATL
Se si desidera creare una nuova interfaccia e una nuova classe per implementarla, è possibile usare la finestra di dialogo Aggiungi classe ATL e quindi la Creazione guidata oggetto semplice ATL.
Implementazione guidata interfaccia
Se si dispone di un'interfaccia esistente, è possibile usare l'Implementazione guidata interfaccia per aggiungere la classe base necessaria, le voci della mappa COM e le implementazioni dello scheletro del metodo a una classe esistente.
Nota
Potrebbe essere necessario modificare la classe di base generata in modo che i numeri di versione principale e secondaria della libreria dei tipi vengano passati come argomenti modello alla IDispatchImpl
classe base. L'Implementazione guidata interfaccia non controlla il numero di versione della libreria dei tipi.
Implementazione di IDispatch
È possibile usare una IDispatchImpl
classe di base per fornire un'implementazione di una dispinterface specificando solo la voce appropriata nella mappa COM (utilizzando la macro COM_INTERFACE_ENTRY2 o COM_INTERFACE_ENTRY_IID ) purché si disponga di una libreria dei tipi che descrive un'interfaccia duale corrispondente. È piuttosto comune implementare l'interfaccia IDispatch
in questo modo, ad esempio. Creazione guidata oggetto semplice ATL e Implementazione guidata interfaccia presuppongono che si intenda implementare IDispatch
in questo modo, in modo da aggiungere la voce appropriata alla mappa.
Nota
ATL offre le classi IDispEventImpl e IDispEventSimpleImpl che consentono di implementare interfacce dispinterfing senza richiedere una libreria dei tipi contenente la definizione di un'interfaccia duale compatibile.