Principi fondamentali di oggetti COM ATL

Nella figura seguente vengono illustrate la relazione tra le classi e le interfacce utilizzate per definire un oggetto COM ATL.

Struttura ATL

[!NOTA]

Questo diagramma mostra che CComObject è derivato da CYourClass mentre CComAggObject e CComPolyObject includono CYourClass come variabile membro.

Esistono tre modi per definire un oggetto COM ATL.L'opzione standard è di utilizzare la classe CComObject derivata da CYourClass.La seconda opzione consiste nel creare un oggetto aggregato utilizzando la classe CComAggObject.La terza opzione consiste di utilizzare la classe CComPolyObject.CComPolyObject funge da ibrido: può essere utilizzata come classe CComObject o come classe CComAggObject, a seconda di come viene innanzitutto creato.Per ulteriori informazioni sull'utilizzo della classe CComPolyObject, vedere Classe di CComPolyObject.

Quando si utilizza COM ATL standard, utilizzare due oggetti: un oggetto esterno e un oggetto interno.I client esterni accedono alla funzionalità dell'oggetto interno delle funzioni wrapper definite nell'oggetto esterno.l'oggetto esterno è di tipo CComObject.

Quando si utilizza un oggetto aggregato, l'oggetto esterno non fornisce wrapper per la funzionalità dell'oggetto interno.Invece, l'oggetto esterno fornisce un puntatore cui si accede direttamente dai client esterni.In questo scenario, l'oggetto esterno è di tipo CComAggObject.L'oggetto interno è una variabile membro dell'oggetto esterno ed è di tipo CYourClass.

Poiché il client non deve passare l'oggetto esterno interagire con l'oggetto interno, gli oggetti vengono aggregati in genere più efficienti.Inoltre, l'oggetto esterno non deve conoscere la funzionalità dell'oggetto aggregato, dato che l'interfaccia dell'oggetto aggregato è disponibile direttamente il client.Tuttavia, non tutti gli oggetti possono essere aggregati.Perché un oggetto sia aggregato, deve essere progettato con aggregazione in base.

ATL implementa IUnknown in due fasi:

Altri aspetti dell'oggetto COM ATL vengono gestiti da altre classi:

  • CComCoClass definisce la factory della classe predefinita dell'oggetto e il modello di aggregazione.

  • IDispatchImpl fornisce un'implementazione predefinita della parte IDispatch Interface di tutte le interfacce duali l'oggetto.

  • ISupportErrorInfoImpl implementa l'interfaccia ISupportErrorInfo che fornisce informazioni sugli errori può essere propagata nella catena di chiamate correttamente.

Argomenti della sezione

Sezioni correlate

  • Creare un progetto ATL
    Vengono fornite informazioni sulla creazione di un oggetto COM ATL.

  • ATL
    Vengono forniti collegamenti ad argomenti concettuali sulla programmazione mediante Active Template Library.

Vedere anche

Altre risorse

Concetti ATL