Macro COM_INTERFACE_ENTRY
Queste macro forniscono interfacce di un oggetto nella mappa COM in modo che possano accedere a da QueryInterface.L'ordine delle voci nella mappa COM è le interfacce di ordini verrà controllato per verificare IID corrispondente durante QueryInterface.
Ogni oggetto che desidera esporre le interfacce tramite QueryInterface deve disporre di un COM viene eseguito il mapping.COM esegue il mapping di inizio con macro BEGIN_COM_MAP.Le voci dell'interfaccia vengono aggiunti a uno o più delle macro COM_INTERFACE_ENTRY e il mapping viene completato con la macro END_COM_MAP.Di seguito è riportato un esempio:
BEGIN_COM_MAP(CMyObject)
COM_INTERFACE_ENTRY(IMyObject)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
Si noti che la prima voce nella mappa COM deve essere un'interfaccia l'oggetto che contiene la mappa COM.Pertanto, non è possibile avviare le voci della mappa COM con COM_INTERFACE_ENTRY_CHAIN, che consente alla mappa COM di un oggetto diverso a trova nel punto in cui COM_INTERFACE_ENTRY_CHAIN(COtherObject) visualizzato nella mappa COM dell'oggetto.Se si desidera trovare la mappa COM di un altro oggetto innanzitutto, aggiungere una voce dell'interfaccia per IUnknown alla mappa COM, quindi per concatenare il COM di un altro oggetto eseguire il mapping.Di seguito è riportato un esempio:
BEGIN_COM_MAP(CThisObject)
COM_INTERFACE_ENTRY(IUnknown)
COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
Attenzione |
---|
A partire dalla versione 3,0, ATL utilizza la parola chiave __uuidof( class ) del compilatore per ottenere l'iid corrispondente per una determinata classe.A causa di modifiche in macro COM_INTERFACE_ENTRY efficaci nella versione 3,0, è sufficiente includere l'intestazione per l'interfaccia per utilizzare, ma anche di accedere a una libreria che definisce la corrispondenza IID per tale interfaccia.Questa modifica può causare problemi se l'intestazione in precedenza è stata generata da una versione precedente di MIDL, o se a mano è codificata e non è stata contrassegnata in modo appropriato.Se la dichiarazione per l'interfaccia nell'intestazione non è stata contrassegnata conun uuidcollegato )di __declspec( , il utilizzare la parola chiave __uuidof per tale interfaccia non riuscirà.È possibile tornare a più obsoleto macro ATL 2.x) COM_INTERFACE_ENTRY definendo _ATL_NO_UUIDOF nelle impostazioni di compilazione da utilizzare per racchiudere i problemi con il nuovo comportamento. |
Macro di voci della mappa COM
Di seguito sono elencate le macro disponibili voce:
Requisiti
Header: atlcom.h