Makra COM_INTERFACE_ENTRY
Te makra wprowadź interfejsów obiektu do jego mapę COM, dzięki czemu jest możliwy przez QueryInterface.Kolejność wpisów w tablicy COM jest interfejsów zamówienia będzie sprawdzana pasującego IID podczas QueryInterface.
Każdy obiekt, który chce narazić interfejsy via QueryInterface musi mieć własną mapę COM.Mapa COM rozpoczyna makro BEGIN_COM_MAP.Dodaje się wpisy interfejsu z jedną lub więcej COM_INTERFACE_ENTRY wypełnione makr i mapy END_COM_MAP makro.Na przykład:
BEGIN_COM_MAP(CMyObject)
COM_INTERFACE_ENTRY(IMyObject)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
Należy zauważyć, że pierwszy wpis w tablicy COM musi być obiekt zawierający mapę COM na interfejsie.Zatem nie można uruchomić wpisy mapy COM z COM_INTERFACE_ENTRY_CHAIN, co powoduje, że mapa COM inny obiekt ma zostać wyszukany w punkcie, gdzie COM_INTERFACE_ENTRY_CHAIN (COtherObject) pojawia się na mapie sieci obiektu COM.Wyszukiwania mapę COM innego obiektu, najpierw należy dodać wpis interfejsu dla IUnknown do mapy COM następnie łańcucha innych obiektów COM mapy.Na przykład:
BEGIN_COM_MAP(CThisObject)
COM_INTERFACE_ENTRY(IUnknown)
COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
Przestroga |
---|
Version 3.0 ATL wykorzystuje słowo kluczowe kompilatora __uuidof (class) do uzyskania odpowiedniego IID dla danej klasy.Z powodu zmian w COM_INTERFACE_ENTRY w wersji 3.0, teraz wystarczy dodać nagłówek dla interfejsu, aby zamiast również łączenia do biblioteki, która definiuje pasujące IID interfejsu tego makra.Ta zmiana może powodować problemy, jeśli nagłówek wcześniej został wygenerowany przez starszą wersję MIDL lub jeśli został ręcznie zakodowane i nie jest odpowiednio oznaczone.Jeśli nie została oznaczona deklaracji dla interfejsu w nagłówku ze skojarzonego __declspec ( uuid ), następnie próba użyć __uuidof kluczowe dla tego interfejsu nie powiedzie się.Można przywrócić starsze (2.x ATL) COM_INTERFACE_ENTRY makra, definiując _ATL_NO_UUIDOF w ustawieniach kompilacji w celu obejścia problemów z to nowe zachowanie. |
Makra wpisu mapy COM
Makra wejściowe dostępne są następujące:
Wymagania
Nagłówek: atlcom.h