Macro COM_INTERFACE_ENTRY

Queste macro immettete le interfacce di un oggetto nella sua mappa COM in modo che può accedervi da QueryInterface. L'ordine delle voci della mappa COM è che le interfacce ordine verranno controllate per un corrispondente IID durante QueryInterface.

Ogni oggetto che vuole esporre le sue interfacce tramite QueryInterface deve avere la propria mappa COM. La mappa COM inizia con la macro BEGIN_COM_MAP. Con uno o più delle macro COM_INTERFACE_ENTRY vengono aggiunte voci di interfaccia e la mappa è completata con la macro END_COM_MAP . Ad esempio:

BEGI&N_COM_MAP(CmyObject)
 nbsp;  COM_INTERFACE_ENTRY(IDispatch)
    COM_INTERFACE_ENTRY(IMyObject)
END_COM_MAP)

Vedere ATL COMMAP del campione per esempi di utilizzo dei diversi tipi di COM mappa macro di entrata.

Notare che la prima voce nella mappa COM deve essere un'interfaccia sull'oggetto che contiene la mappa COM. Così, non può iniziare le voci della mappa COM con COM_INTERFACE_ENTRY_CHAIN, che provoca la mappa COM di un oggetto diverso da ricercare nel punto dove COM_INTERFACE_ENTRY_CHAIN (COtherObject) appare nella mappa COM dell'oggetto. Se si desidera ricercare la mappa COM di un altro oggetto in primo luogo, aggiungere una voce di interfaccia IUnknown per la tua mappa COM, quindi a catena mappa COM di altro oggetto. Ad esempio:

BEGI&N_COM_MAP(CThisObject)
 nbsp; COM_INTERFACE_ENTRY(IUnknown)
   COM_INTERFACE_ENTRY_CHAIN(COtherObject)
END_COM_MAP)

Cautela nbsp; Dalla versione 3.0, ATL utilizza la parola chiave del compilatore uuidof ( classe ) per ottenere l'IID corrispondente per una determinata classe. A causa di cambiamenti macro COM_I&NTERFACE_ENTRY efficace nella versione 3.0, ora sufficiente includere l'intestazione per l'interfaccia da utilizzare, anziché anche collegare a una libreria che definisce gli IID corrispondenti per quell'interfaccia. Questo cambiamento può causare problemi se l'intestazione in precedenza è stato generato da una versione precedente di MIDL, o se è stato codificato manualmente e non contrassegnato in modo appropriato. Se la dichiarazione per l'interfaccia nell'intestazione non è stata contrassegnata con un associato declspec ( uuid ), quindi qualsiasi tentativo di utilizzare la parola chiave uuidof per quell'interfaccia avrà esito negativo. È possibile ripristinare il più vecchio delle macro COM_INTERFACE_ENTRY (ATL 2. x) mediante la definizione di ATL_NO_UUIDOF nelle impostazioni di compilazione per risolvere qualsiasi problema con questo nuovo comportamento.

Di seguito sono riportate le macro entrata disponibile:

Mappa COM voce macro

COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
COM_INTERFACE_ENTRY_FUNC
COM_INTERFACE_ENTRY_FUNC_BLIND
COM_INTERFACE_ENTRY_TEAR_OFF
COM_INTERFACE_ENTRY_CACHED_TEAR_OFF
COM_INTERFACE_ENTRY_AGGREGATE
COM_INTERFACE_ENTRY_AGGREGATE_BLIND
COM_INTERFACE_ENTRY_AUTOAGGREGATE
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND
COM_INTERFACE_ENTRY_CHAIN
COM_INTERFACE_ENTRY_BREAK
COM_INTERFACE_ENTRY_NOINTERFACE

Macro ATL e funzioni globali

Index