COM_INTERFACE_ENTRY makra
Tato makra zadejte rozhraní objektu do jeho rozvržení COM, takže je přístupný, QueryInterface .Pořadí položek na mapě COM je pořadí rozhraní bude sloužit k odpovídající IID při QueryInterface .
Každý objekt, který chce vystavit jeho rozhraní, prostřednictvím QueryInterface musí mít vlastní COM mapy.Mapa COM začíná makro BEGIN_COM_MAP.Přidány položky rozhraní s jedním nebo více COM_INTERFACE_ENTRY makra a mapy se vyplňuje END_COM_MAP makro.Příklad:
BEGIN_COM_MAP(CMyObject)
COM_INTERFACE_ENTRY(IMyObject)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
Všimněte si, že první položka v mapě COM musí být objekt mapy COM obsahující rozhraní.Proto nelze spustit položky mapy COM s COM_INTERFACE_ENTRY_CHAIN , což způsobuje, že mapu COM jiný objekt je vyhledán v místě, kde COM_INTERFACE_ENTRY_CHAIN (COtherObject) se zobrazí v mapě vašeho objektu COM.Pokud chcete nejprve hledat mapy jiného objektu COM, přidejte položku pro rozhraní IUnknown na mapu COM pak zřetězení daného objektu COM mapy.Příklad:
BEGIN_COM_MAP(CThisObject)
COM_INTERFACE_ENTRY(IUnknown)
COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
Upozornění |
---|
Od verze 3.0 ATL používá klíčové slovo kompilátoru __uuidof ( class ) získat odpovídající IID pro danou třídu.Z důvodu změn COM_INTERFACE_ENTRY makra účinné ve verzi 3.0 nyní jednoduše zahrnout záhlaví použít namísto také knihovny, která definuje odpovídající IID tohoto rozhraní pro rozhraní.Tato změna může způsobit problémy, starší verze jazyk MIDL byl dříve vygenerován záhlaví nebo pokud kódované rukou a není řádně označena.Pokud nebyla označena prohlášení pro rozhraní v záhlaví spojen s __declspec ( uuid ), pak jakéhokoli pokusu použít __uuidof selže klíčové slovo pro toto rozhraní.Můžete se vrátit k starší (ATL 2.x) COM_INTERFACE_ENTRY makra definováním _ATL_NO_UUIDOF v nastavení sestavení vyřešit jakékoli problémy s toto nové chování. |
Makra položky mapy COM
Makra položky k dispozici jsou následující:
Požadavky
Záhlaví: atlcom.h