Udostępnij przez


Wymagane interfejsy (COM)

W poniższej tabeli wymieniono interfejsy kontenera kontrolek ActiveX i wskazuje, które interfejsy są opcjonalne i które są obowiązkowe i muszą być implementowane przez kontenery kontrolek.

Interfejs Wymagane? Komentarze
IOleClientSite
Tak
IAdviseSink
Nie
Tylko wtedy, gdy kontener chce (a) powiadomienia o zmianie danych (kontrolki z IDataObject), (b) powiadomienie o zmianie widoku (kontrolki, które nie są aktywne i mają IViewObject lub IViewObject2), i (c) inne powiadomienia z kontrolek działających jako standardowe obiekty osadzone.
IOleInPlaceSite
Tak
IOleControlSite
Tak
IOleInPlaceFrame
Tak
I IOleContainer
Tak
Zobacz notatkę 1
IDispatch dla właściwości otoczenia
Tak
Zobacz uwagi 2 i właściwości otoczenia , aby kontrolować
Kontrolowanie zestawów zdarzeń
Tak
Zobacz notatkę 2
ISimpleFrameSite
Nie
ISimpleFrameSite i obsługa zagnieżdżonych prostych ramek jest opcjonalna.
IPropertyNotifySink
Nie
Wymagane tylko dla kontenerów, które (a) mają własny interfejs użytkownika do edycji właściwości, co wymaga aktualizacji za każdym razem, gdy kontrolka zmieniła samą właściwość lub (b) chce kontrolować [zażądać] zmiany właściwości i inne takie funkcje powiązania danych.
IErrorInfo
Tak
Obowiązkowe, jeśli kontener obsługuje dwa interfejsy. Zobacz notatkę 2.
IClassFactory2
Nie
Zdecydowanie zaleca się obsługę.
  1. IOleContainer jest implementowany na dokumencie lub obiekcie formularza (lub odpowiednim analogiem), który przechowuje witryny kontenerów. Kontrolki używają IOleContainer, aby przejść do innych kontrolek w tym samym dokumencie lub formularzu.
  2. Obsługa podwójnych interfejsów nie jest obowiązkowa, ale jest zdecydowanie zalecana. Pisanie kontenerów kontrolek ActiveX w celu korzystania z podwójnych interfejsów zapewni lepszą wydajność za pomocą kontrolek, które oferują obsługę dwóch interfejsów.

Kontenery kontrolek ActiveX muszą obsługiwać wyjątki automatyzacji OLE. Jeśli kontener sterowania obsługuje podwójne interfejsy, musi przechwytywać wyjątki automatyzacji za pomocą IErrorInfo.

Containers