Podstawy obiektów COM ATL
Następująca ilustracja przedstawia relację między klas i interfejsów, które służą do definiowania obiektu ATL COM.
[!UWAGA]
Schemat ten pokazuje, że CComObject jest pochodną CYourClass należy CComAggObject i CComPolyObject obejmują CYourClass jako zmienną.
Aby zdefiniować obiekt ATL COM na trzy sposoby.Opcja Standardowy jest użycie CComObject klasy pochodzącej od CYourClass.Druga opcja jest utworzenie zagregowane obiektu za pomocą CComAggObject klasy.Trzecia opcja, jest użycie CComPolyObject klasy.CComPolyObjectdziała jako mieszańca: może działać jako CComObject klasy lub jako CComAggObject klasy, w zależności od sposobu najpierw jest tworzony.Aby uzyskać więcej informacji na temat używania CComPolyObject klasy, zobacz Klasa CComPolyObject.
Standardowe ATL COM, można używać dwóch obiektów: obiekt zewnętrzne i wewnętrzne obiektu.Zewnętrznych klientów dostępu funkcje wewnętrzne obiektu poprzez funkcje otoki, które są zdefiniowane w obiekcie zewnętrznym.Typem obiektu zewnętrznego jest CComObject.
Użycie zagregowane obiektu zewnętrznego obiektu nie przewidują otok funkcje wewnętrzne obiektu.Zamiast tego zewnętrznego obiektu zawiera wskaźnik, który jest bezpośrednio dostępny przez klientów zewnętrznych.W tym scenariuszu zewnętrznego obiektu jest typu CComAggObject.Obiekt wewnętrzny jest zmienną obiektu zewnętrznego i jest typu CYourClass.
Ponieważ klient nie ma przechodzić zewnętrznego obiektu do interakcji z wewnętrznego obiektu, obiekty zagregowane są zwykle bardziej efektywne.Również obiektu zewnętrznego nie znać funkcjonalność obiektu zagregowane, zważywszy, że interfejs zagregowane obiektu jest dostępna bezpośrednio do klienta.Jednak nie wszystkie obiekty można agregować.Obiektu agregowane musi być zaprojektowane z agregacją pamiętać.
Implementuje ATL IUnknown w dwóch etapach:
CComObject, CComAggObject, lub CComPolyObject implementuje IUnknown metody.
CComObjectRoot lub CComObjectRootEx zarządza licznika odwołań i zewnętrzne odnośniki z IUnknown.
Obiekt ATL COM inne aspekty są obsługiwane przez innych klas:
CComCoClass definiuje obiekt domyślnej klasy fabrycznej i agregacji modelu.
IDispatchImpl zawiera domyślną wykonania IDispatch Interface część dual interfejsami na obiekcie.
ISupportErrorInfoImpl implementuje ISupportErrorInfo interfejsu, który zapewnia informacje o błędach mogą być poprawnie propagowane łańcucha wywołania.
W tej sekcji
CComObjectRootEx wykonawcze
Pokaż przykład wpisów map COM wykonywania CComObjectRootEx.Realizacji CComObject, CComAggObject i CComPolyObject
W tym artykule omówiono sposób DECLARE_ * _AGGREGATABLE makr wpływ na wykorzystanie CComObject, CComAggObject, i CComPolyObject.Wspieranie IDispatch i IErrorInfo
Zawiera listę klas ATL implementacji dla wspierania IDispatch i IErrorInfo interfejsów.Obsługa IDispEventImpl
W tym artykule omówiono kroki w celu wdrożenia punktu połączenia dla swojej klasy.Zmienianie domyślnej klasy fabrycznej i modelu agregacji
Pokaż makra, jakie używane do zmiany domyślnego klasy modelu fabryki i agregacji.Tworzenie obiektu zagregowane
Wyświetla listę kroków tworzenia obiektu zagregowane.
Sekcje pokrewne
Tworzenie projektu ATL
Zawiera informacje dotyczące tworzenia obiektu ATL COM.ATL
Zawiera łącza do tematów koncepcyjne na temat programu przy użyciu biblioteki Active Template Library.