Udostępnij przez


Korzystanie z funkcji kontenera

W poprzednich sekcjach opisano niektóre niezbędne wsparcie po stronie klienta, które musi mieć kontrolka ActiveX, aby uzyskać dostęp do niektórych funkcji kontenera. W poniższej tabeli opisano użycie interfejsów po stronie kontenera przez kontrolki oraz momenty, kiedy takie użycie wystąpi.

Interfejs Obiekt kontenerowy Użytkowanie
IOleClientSite
Miejsce
Kontrolki implementujące metody IOleObject wywołania metody IOleClientSite w ramach standardowego protokołu osadzania OLE, w szczególności metody SaveObject, ShowObject, OnShowWindow (tylko wtedy, gdy jest obsługiwany stan aktywacji oddzielnego okna), RequestNewObjectLayouti GetContainer (jeśli pożądana jest komunikacja z innymi kontrolkami). Metoda GetMoniker jest używana tylko wtedy, gdy kontrolka może być połączona zewnętrznie, czyli kontrolka nie jest oznaczona OLEMISC_CANTLINKINSIDE.
IOleInPlaceSite
Miejsce
Kontrolki, które mają aktywację w miejscu i prawdopodobnie aktywny stan interfejsu użytkownika, będą wywoływać metody IOleInPlaceSite (zazwyczaj wszystkie oprócz ContextSensitiveHelp) w ramach standardowego protokołu aktywacji OLE w miejscu.
IAdviseSink
Miejsce
Kontrolka wywołuje OnDataChange, jeśli kontrolka obsługuje IDataObject, OnViewChange, jeśli kontrolka obsługuje IViewObject2, a także OnClose, OnSavei OnRename, jeśli kontrolka obsługuje IOleObject.
IOleControlSite
Miejsce
Jeśli jest to obsługiwane, kontrolka wywołuje OnControlInfoChanged, gdy zmieniają się mnemoniki. Wywołuje także LockInPlaceActive i TransformCoords, jeśli wyzwalane są zdarzenia (przy czym ta ostatnia metoda jest używana tylko wtedy, gdy współrzędne są przekazywane jako argumenty zdarzenia). Ponadto, wywoływane są OnFocus i TranslateAccelerator przy aktywnym stanie interfejsu użytkownika kontrolki oraz GetExtendedControl, gdy kontrolka chce odwołać się do właściwości rozszerzonej kontroli (należącej do kontenera).
IDispatch (właściwości otoczenia)
Miejsce
Służy do uzyskiwania dostępu do właściwości otoczenia.
IPropertyNotifySink
Różni się
Kontrolka musi generować OnChanged i OnRequestEdit dla wszystkich właściwości kontrolek oznaczonych jako [wiążące] i [żądanie], odpowiednio.
Inne interfejsy odbiorników zdarzeń
Różni się
Kontrolka, która ma interfejsy wychodzące inne niż IPropertyNotifySink, zostanie przekazana innym wskaźnikom interfejsu poprawnego identyfikatora IID do kontrolki IConnectionPoint::Doradca implementacji (które są zwykle znajdowane w podrzędnych obiektach kontrolki). Kontrolka zawsze wie, jak wywoływać własne interfejsy zdarzeń, ponieważ kontrolka definiuje te interfejsy.
IOleInPlaceFrame
Ramka
Używany, gdy kontrolka ma stan aktywnego interfejsu użytkownika w miejscu, który wymaga narzędzi lub elementów menu na poziomie ramki.
IOleInPlaceUIWindow
Dokument
Używane tylko wtedy, gdy kontrolka ma bezpośredni aktywny stan interfejsu użytkownika, który wymaga narzędzi interfejsu użytkownika na poziomie dokumentu lub okienka. Jest to rzadkie.

Sterowanie