Základy objektů COM ATL
Následující obrázek znázorňuje vztah mezi třídy a rozhraní, které slouží k definování objektu ATL COM.
[!POZNÁMKA]
Tento diagram ukazuje, že CComObject je odvozen od CYourClass že CComAggObject a CComPolyObject zahrnují CYourClass jako členské proměnné.
Objekt ATL COM definovat třemi způsoby.Standardní možností je použití CComObject třídy odvozené od CYourClass .Druhou možností je vytvořit pomocí agregovaný objekt CComAggObject třídy.Třetí možností je použít CComPolyObject třídy.CComPolyObjectfunguje jako hybrid: může pracovat jako CComObject třídy nebo jako CComAggObject třídy podle toho, jak je poprvé vytvořena.Další informace o použití CComPolyObject třídy naleznete v tématu Třída CComPolyObject.
Při použití standardních ATL COM použít dva objekty: objekt vnější a vnitřní objekt.Externí klienti přístup pomocí funkce souhrnného seznamu stop, které jsou definovány v objektu vnější funkce vnitřní objekt.Vnější objekt je typu CComObject .
Při použití objektu agregované neposkytuje vnější objekt obálky pro funkce vnitřní objekt.Místo toho vnější objekt obsahuje ukazatel, který je externím klientům přistupovat přímo.V tomto scénáři je vnější objekt typu CComAggObject .Vnitřní objekt je členské proměnné vnější objektu a je typu CYourClass .
Agregované objekty jsou obvykle efektivnější, protože klient nemá vnější objekt s vnitřní objekt projít.Také vnější objekt nemá vědět funkce agregovaný objekt vzhledem k tomu, že je rozhraní agregovaný objekt přímo klientovi k dispozici.Všechny objekty však lze agregovat.Objektu sečtou musí být navrženy s agregací nezapomeňte.
Implementuje ATL IUnknown ve dvou fázích:
CComObject, CComAggObject, nebo CComPolyObject implementuje IUnknown metod.
CComObjectRoot nebo CComObjectRootEx spravuje počet odkazů a vnější ukazatele z IUnknown.
Další aspekty objekt ATL COM zpracovávány jiných tříd:
CComCoClass definuje model objektu výchozí třídu factory a agregace.
IDispatchImpl poskytuje výchozí provádění IDispatch Interface část jakékoliv duální rozhraní objektu.
ISupportErrorInfoImpl implementuje ISupportErrorInfo rozhraní, které zajišťuje informace o chybě můžete nahoru v řetězu volání správně šířeny.
V tomto oddíle
Provádění CComObjectRootEx
Zobrazit příklad položek mapování modelu COM pro provádění CComObjectRootEx .CComObject, CComAggObject a CComPolyObject
Popisuje, jak se DECLARE_ * _AGGREGATABLE makra mají vliv na používání CComObject , CComAggObject , a CComPolyObject .Podpora rozhraní IDispatch a IErrorInfo
Uvádí pro podporu implementace třídy ATL IDispatch a IErrorInfo rozhraní.Podpora IDispEventImpl
Popisuje kroky k provedení spojovací bod pro svou třídu.Změna výchozí třída a agregace modelu
Zobrazte co maker můžete změnit výchozí třídu factory a agregace model.Vytváření souhrnných objektu
Je uveden postup pro vytvoření agregovaný objekt.
Související oddíly
Vytvoření projektu ATL
Obsahuje informace o vytvoření objektu ATL COM.ATL
Obsahuje odkazy na pojmy program pomocí knihovny aktivní šablony.