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