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


События управления (COM)

Помимо предоставления свойств и методов, элемент управления также предоставляет исходящие интерфейсы для уведомления своего клиента о событиях. Клиент должен поддерживать обработку этих событий. Дополнительные сведения о том, как работают подключенные объекты, см. в событиях в COM и подключенных объектах.

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

Контейнер может поддерживать один или несколько исходящих интерфейсов, определенных элементом управления. Элемент управления должен быть подготовлен для работы с контейнерами, которые обеспечивают поддержку только некоторых исходящих интерфейсов.

Элементы управления поддерживают четыре типа событий:

  • Запрос событий. Элемент управления запрашивает разрешение от своего клиента на выполнение чего-то, вызывая метод в исходящем интерфейсе, что приводит к активации события запроса. Клиент сигнализирует элементу управления с помощью логического параметра вне метода, вызываемого элементом управления. Таким образом, клиент может предотвратить выполнение действия элементом управления.
  • Перед событиями. Элемент управления уведомляет о своей клиентской шляпе, что он собирается сделать, вызвав метод в исходящем интерфейсе, таким образом, активируя событие перед событием. Клиент не имеет возможности предотвратить действие, но он может предпринять любые необходимые шаги, учитывая действие, которое будет происходить.
  • После событий. Элемент управления уведомляет своего клиента о том, что он только что сделал что-то, вызвав метод в исходящем интерфейсе, таким образом, активируя событие после. Опять же, клиент не может отменить это действие, но он может предпринять необходимые шаги, учитывая действие, которое произошло.
  • Делайте события. Элемент управления активирует событие do, чтобы разрешить клиенту переопределить действие элемента управления и предоставить некоторые альтернативные или дополнительные действия. Обычно метод, вызывающий элемент управления для события do, имеет ряд параметров для переговоров с клиентом о действиях, которые будут выполняться.

Для стандартных событий, которые могут поддерживаться, определяются следующие диспида: Click, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp и Error. Все эти стандартные события имеют отрицательные значения DISPID, указывающие на их стандартное состояние.

Метод IOleControl::FreezeEvents при вызове с TRUEуказывает, будет ли контейнер беспокоить события обработки из элемента управления, пока FreezeEvents снова вызывается с FALSE. В течение этого времени управление не может зависеть от контейнера, который фактически обрабатывает события. Если событие должно быть обработано, элемент управления должен очередью события, чтобы он был вызван при вызове FreezeEvents с FALSE.

элементов ActiveX