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


Обязательные интерфейсы (COM)

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

Интерфейс Обязательно? Комментарии
IOleClientSite
Да
IAdviseSink
Нет
Только если уведомления об изменении данных (а) контейнера (элементы управления с IDataObject), (b) просматривают уведомления об изменении (элементы управления, которые не активны и имеют IViewObject или IViewObject2), а также (c) другие уведомления элементов управления, действующие в качестве стандартных внедренных объектов.
IOleInPlaceSite
Да
IOleControlSite
Да
IOleInPlaceFrame
Да
IOleContainer
Да
См. примечание 1
IDispatch для свойств окружающей среды
Да
См. примечание 2 и свойства среды для элементов управления
Наборы событий управления
Да
См. примечание 2
ISimpleFrameSite
Нет
ISimpleFrameSite и поддержка вложенных простых кадров является необязательным.
IPropertyNotifySink
Нет
Только для контейнеров, которые (a) имеют собственный пользовательский интерфейс редактирования свойств, который требует обновления, когда элемент управления изменил само свойство или (b) хотите контролировать [запрошенный] изменения свойств и другие такие функции привязки данных.
IErrorInfo
Да
Обязательно, если контейнер поддерживает двойные интерфейсы. См. примечание 2.
IClassFactory2
Нет
Поддержка настоятельно рекомендуется.
  1. IOleContainer реализуется в документе или объекте формы (или соответствующем аналоге), в котором хранятся сайты контейнеров. Элементы управления используют IOleContainer для перехода к другим элементам управления в том же документе или форме.
  2. Поддержка двух интерфейсов не является обязательной, но настоятельно рекомендуется. Написание контейнеров элементов управления ActiveX для использования двух интерфейсов позволит повысить производительность с помощью элементов управления, которые предлагают поддержку двух интерфейсов.

Контейнеры элементов управления ActiveX должны поддерживать исключения OLE Automation. Если контейнер управления поддерживает двойные интерфейсы, он должен записывать исключения автоматизации с помощью IErrorInfo.

контейнеры