Udostępnij za pośrednictwem


Implementacja podwójnego interfejsu

Można zaimplementować podwójny interfejs przy użyciu klasy IDispatchImpl , która zapewnia domyślną implementację IDispatch metod w podwójnym interfejsie. Aby uzyskać więcej informacji, zobacz Implementowanie interfejsu IDispatch.

Aby użyć tej klasy:

  • Zdefiniuj podwójny interfejs w bibliotece typów.

  • Utwórz klasę na podstawie specjalizacji IDispatchImpl (przekaż informacje o interfejsie i bibliotece typów jako argumenty szablonu).

  • Dodaj wpis (lub wpisy) do mapy COM, aby uwidocznić podwójny interfejs za pomocą polecenia QueryInterface.

  • Zaimplementuj część vtable interfejsu w klasie.

  • Upewnij się, że biblioteka typów zawierająca definicję interfejsu jest dostępna dla obiektów w czasie wykonywania.

Kreator prostych obiektów ATL

Jeśli chcesz utworzyć nowy interfejs i nową klasę w celu jej zaimplementowania, możesz użyć okna dialogowego Dodawanie klasy ATL, a następnie Kreatora prostego obiektu ATL.

Kreator implementacji interfejsu

Jeśli masz istniejący interfejs, możesz użyć Kreatora implementowania interfejsu, aby dodać niezbędną klasę bazową, wpisy mapy COM i implementacje metod szkieletowych do istniejącej klasy.

Uwaga

Może być konieczne dostosowanie wygenerowanej klasy bazowej, aby główne i pomocnicze numery wersji biblioteki typów zostały przekazane jako argumenty szablonu do IDispatchImpl klasy bazowej. Kreator implementowania interfejsu nie sprawdza numeru wersji biblioteki typów.

Implementowanie interfejsu IDispatch

Możesz użyć IDispatchImpl klasy bazowej, aby zapewnić implementację dispinterface tylko poprzez określenie odpowiedniego wpisu na mapie COM (przy użyciu makra COM_INTERFACE_ENTRY2 lub COM_INTERFACE_ENTRY_IID ), o ile masz bibliotekę typów opisującą odpowiedni interfejs podwójny. Jest to dość powszechne implementowanie interfejsu IDispatch w ten sposób, na przykład. Kreator prostych obiektów ATL i Kreator implementowania interfejsu zakładają, że zamierzasz zaimplementować IDispatch w ten sposób, aby dodać odpowiedni wpis do mapy.

Uwaga

Usługa ATL oferuje klasy IDispEventImpl i IDispEventSimpleImpl , które ułatwiają implementowanie dispinterfaces bez konieczności używania biblioteki typów zawierającej definicję zgodnego podwójnego interfejsu.

Zobacz też

Podwójne interfejsy i ATL