Поделиться через


Использование функциональных возможностей контейнера

В предыдущих разделах описана некоторая необходимая поддержка вызывающего элемента управления ActiveX для доступа к определенным функциям контейнера. В следующей таблице описывается использование интерфейсов на стороне контейнера элемента управления и когда это использование может происходить.

Интерфейс Объект контейнера Употребление
IOleClientSite
Место
Элементы управления, реализующие IOleObject и методы IOleClientSite в рамках стандартного протокола внедрения OLE, в частности, методы SaveObject, ShowObject, OnShowWindow (только если поддерживается состояние активации отдельного окна), RequestNewObjectLayoutи GetContainer (если требуется взаимодействие с другими элементами управления). Метод GetMoniker используется только в том случае, если элемент управления может быть связан с внешним, то есть элемент управления не помечен OLEMISC_CANTLINKINSIDE.
IOleInPlaceSite
Место
Элементы управления с активацией на месте и, возможно, активное состояние пользовательского интерфейса вызывают методы IOleInPlaceSite (как правило, все из них, за исключением ContextSensitiveHelp) в рамках стандартного протокола активации OLE на месте.
IAdviseSink
Место
Элемент управления вызывает OnDataChange, если он поддерживает IDataObject, вызывает OnViewChange, если поддерживается IViewObject2, и вызывает OnClose, OnSaveи OnRename, если поддерживается IOleObject.
IOleControlSite
Место
Если поддерживается, элемент управления вызывает OnControlInfoChanged при изменении мнемоник, LockInPlaceActive и TransformCoords, если события запускаются (последний метод используется только в том случае, если координаты передаются в качестве аргументов событий), OnFocus и TranslateAccelerator, если элемент управления находится в активном состоянии пользовательского интерфейса, и GetExtendedControl, если элемент управления хочет просмотреть свойства расширенного управления (принадлежащие контейнеру).
IDispatch (окружающие свойства)
Место
Используется для доступа к свойствам окружающей среды.
IPropertyNotifySink
Меняется
Элемент управления должен создать OnChanged и OnRequestEdit для всех свойств элемента управления, помеченных как [привязываемые] и [запроса], соответственно.
Другие интерфейсы приемника событий
Меняется
Элемент управления, имеющий исходящие интерфейсы, отличные от IPropertyNotifySink, будет получать другие указатели интерфейса с правильным IID для реализации IConnectionPoint::Advise (которые обычно находятся в подчиненных объектах элемента управления). Элемент управления всегда знает, как вызывать собственные интерфейсы событий, так как элемент управления определяет эти интерфейсы.
IOleInPlaceFrame
Рамка
Используется, когда элемент управления имеет активный встроенный пользовательский интерфейс, требующий инструментов на уровне фрейма или элементов меню.
IOleInPlaceUIWindow
Документ
Используется только в том случае, если элемент управления имеет активное состояние пользовательского интерфейса на месте, требующее инструментов пользовательского интерфейса на уровне документа или области. Это редко.

элементы управления