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


Схемы приемников событий

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

Схемы приемников событий

Имя Описание
BEGIN_EVENTSINK_MAP Запускает определение карты приемника событий.
DECLARE_EVENTSINK_MAP Объявляет карту приемника событий.
END_EVENTSINK_MAP Заканчивает определение карты приемника событий.
ON_EVENT Определяет обработчик событий для определенного события.
ON_EVENT_RANGE Определяет обработчик событий для определенного события, запущенного из набора элементов управления OLE.
ON_EVENT_REFLECT Получает события, запущенные элементом управления, прежде чем они обрабатываются контейнером элемента управления.
ON_PROPNOTIFY Определяет обработчик для обработки уведомлений свойств из элемента управления OLE.
ON_PROPNOTIFY_RANGE Определяет обработчик для обработки уведомлений свойств из набора элементов управления OLE.
ON_PROPNOTIFY_REFLECT Получает уведомления о свойствах, отправленные элементом управления перед их обработкой контейнером элемента управления.

BEGIN_EVENTSINK_MAP

Начинает определение карты приемника событий.

BEGIN_EVENTSINK_MAP(theClass, baseClass)

Параметры

TheClass
Указывает имя класса элемента управления, для которого сопоставляется приемник событий.

baseClass
Указывает имя базового класса класса Класса.

Замечания

В файле реализации (.cpp), который определяет функции-члены для класса, запустите карту приемника событий с помощью макроса BEGIN_EVENTSINK_MAP, а затем добавьте записи макросов для каждого события, чтобы получать уведомления, и завершить карту приемника событий с помощью макроса END_EVENTSINK_MAP.

Дополнительные сведения о картах приемника событий и контейнерах элементов управления OLE см. в статье Контейнеры элементов управления ActiveX.

Требования

Заголовок afxdisp.h

DECLARE_EVENTSINK_MAP

Контейнер OLE может предоставить карту приемника событий, чтобы указать события, о которые контейнер будет уведомлен.

DECLARE_EVENTSINK_MAP()

Замечания

Используйте макрос DECLARE_EVENTSINK_MAP в конце объявления класса. Затем в . CPP-файл, определяющий функции-члены для класса, используйте макрос BEGIN_EVENTSINK_MAP, записи макросов для каждого события, о которых нужно получать уведомления, и макрос END_EVENTSINK_MAP, чтобы объявить конец списка приемников событий.

Дополнительные сведения о картах приемника событий см. в статье "Контейнеры элементов управления ActiveX".

Требования

Заголовок afxwin.h

END_EVENTSINK_MAP

Заканчивает определение карты приемника событий.

END_EVENTSINK_MAP()

Требования

Заголовок afxdisp.h

ON_EVENT

Используйте макрос ON_EVENT для определения функции обработчика событий для события, запущенного элементом управления OLE.

ON_EVENT(theClass, id, dispid, pfnHandler,  vtsParams)

Параметры

TheClass
Класс, к которому принадлежит карта приемника событий.

id
Идентификатор элемента управления OLE.

dispid
Идентификатор диспетчера события, запущенного элементом управления.

pfnHandler
Указатель на функцию-член, которая обрабатывает событие. Эта функция должна иметь тип возвращаемого значения BOOL и типы параметров, соответствующие параметрам события (см . vtsParams). Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что событие было обработано; в противном случае ЗНАЧЕНИЕ FALSE.

vtsParams
Последовательность констант VTS_ , указывающая типы параметров события. Это те же константы, которые используются в записях карты отправки, таких как DISP_FUNCTION.

Замечания

Аргумент vtsParams — это разделенный пробелом список значений из констант VTS_ . Одно или несколько этих значений, разделенных пробелами (а не запятыми), указывает список параметров функции. Например:

VTS_I2 VTS_BOOL

указывает список, содержащий короткое целое число, за которым следует boOL.

Список констант VTS_ см. в EVENT_CUSTOM.

Требования

Заголовок afxdisp.h

ON_EVENT_RANGE

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

ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler,  vtsParams)

Параметры

TheClass
Класс, к которому принадлежит карта приемника событий.

idFirst
Идентификатор элемента управления первого элемента управления OLE в диапазоне.

idLast
Идентификатор элемента управления последнего элемента управления OLE в диапазоне.

dispid
Идентификатор диспетчера события, запущенного элементом управления.

pfnHandler
Указатель на функцию-член, которая обрабатывает событие. Эта функция должна иметь тип возвращаемого значения BOOL, первый параметр типа UINT (для идентификатора элемента управления) и дополнительные типы параметров, соответствующие параметрам события (см . vtsParams). Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что событие было обработано; в противном случае ЗНАЧЕНИЕ FALSE.

vtsParams
Последовательность констант VTS_ , указывающая типы параметров события. Первая константа должна быть типом VTS_I4 для идентификатора элемента управления. Это те же константы, которые используются в записях карты отправки, таких как DISP_FUNCTION.

Замечания

Аргумент vtsParams — это разделенный пробелом список значений из констант VTS_ . Одно или несколько этих значений, разделенных пробелами (а не запятыми), указывает список параметров функции. Например:

VTS_I2 VTS_BOOL

указывает список, содержащий короткое целое число, за которым следует boOL.

Список констант VTS_ см. в EVENT_CUSTOM.

Пример

В следующем примере показан обработчик событий для события MouseDown, реализованный для трех элементов управления (IDC_MYCTRL1 через IDC_MYCTRL3). Функция OnRangeMouseDownобработчика событий объявляется в файле заголовка класса диалогового окна ( CMyDlg) как:

BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
   long x, long y);

Приведенный ниже код определен в файле реализации класса диалогового окна.

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
   ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
      VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Требования

Заголовок afxdisp.h

ON_EVENT_REFLECT

Макрос ON_EVENT_REFLECT при использовании на карте приемника событий класса оболочки OLE элемента управления получает события, запускаемые элементом управления перед их обработкой контейнером элемента управления.

ON_EVENT_REFLECT(theClass,  dispid, pfnHandler,  vtsParams)

Параметры

TheClass
Класс, к которому принадлежит карта приемника событий.

dispid
Идентификатор диспетчера события, запущенного элементом управления.

pfnHandler
Указатель на функцию-член, которая обрабатывает событие. Эта функция должна иметь тип возврата boOL и типы параметров, соответствующие параметрам события (см . vtsParams). Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что событие было обработано; в противном случае ЗНАЧЕНИЕ FALSE.

vtsParams
Последовательность констант VTS_ , указывающая типы параметров события. Это те же константы, которые используются в записях карты отправки, таких как DISP_FUNCTION.

Замечания

Аргумент vtsParams — это разделенный пробелом список значений из констант VTS_ .

Одно или несколько этих значений, разделенных пробелами (а не запятыми), указывает список параметров функции. Например:

VTS_I2 VTS_BOOL

указывает список, содержащий короткое целое число, за которым следует boOL.

Список констант VTS_ см. в EVENT_CUSTOM.

Требования

Заголовок afxdisp.h

ON_PROPNOTIFY

Используйте макрос ON_PROPNOTIFY для определения записи карты приемника событий для обработки уведомлений свойств из элемента управления OLE.

ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)

Параметры

TheClass
Класс, к которому принадлежит карта приемника событий.

id
Идентификатор элемента управления OLE.

dispid
Идентификатор диспетчера свойства, связанного с уведомлением.

pfnRequest
Указатель на функцию-член, которая обрабатывает OnRequestEdit уведомление для этого свойства. Эта функция должна иметь тип возвращаемого значения BOOL и параметр BOOL* . Эта функция должна задать для параметра значение TRUE, чтобы разрешить свойству изменяться, а значение FALSE запрещено. Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что уведомление было обработано; в противном случае ЗНАЧЕНИЕ FALSE.

pfnChanged
Указатель на функцию-член, которая обрабатывает OnChanged уведомление для этого свойства. Функция должна иметь тип возвращаемого значения BOOL и параметр UINT. Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что уведомление обработано; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Аргумент vtsParams — это разделенный пробелом список значений из констант VTS_ . Одно или несколько этих значений, разделенных пробелами (а не запятыми), указывает список параметров функции. Например:

VTS_I2 VTS_BOOL

указывает список, содержащий короткое целое число, за которым следует boOL.

Список констант VTS_ см. в EVENT_CUSTOM.

ON_PROPNOTIFY_RANGE

Используйте макрос ON_PROPNOTIFY_RANGE для определения записи карты приемника событий для обработки уведомлений свойств от любого элемента управления OLE с идентификатором элемента управления в пределах непрерывного диапазона идентификаторов идентификаторов.

ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)

Параметры

TheClass
Класс, к которому принадлежит карта приемника событий.

idFirst
Идентификатор элемента управления первого элемента управления OLE в диапазоне.

idLast
Идентификатор элемента управления последнего элемента управления OLE в диапазоне.

dispid
Идентификатор диспетчера свойства, связанного с уведомлением.

pfnRequest
Указатель на функцию-член, которая обрабатывает OnRequestEdit уведомление для этого свойства. Эта функция должна иметь возвращаемый BOOL тип и UINT BOOL* параметры. Функция должна задать для параметра значение TRUE, чтобы разрешить свойству изменяться, а значение FALSE запрещено. Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что уведомление обработано; в противном случае ЗНАЧЕНИЕ FALSE.

pfnChanged
Указатель на функцию-член, которая обрабатывает OnChanged уведомление для этого свойства. Функция должна иметь тип возвращаемого BOOL UINT значения и параметр. Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что уведомление обработано; в противном случае ЗНАЧЕНИЕ FALSE.

Требования

Заголовок afxdisp.h

ON_PROPNOTIFY_REFLECT

Макрос ON_PROPNOTIFY_REFLECT при использовании на карте приемника событий класса оболочки OLE элемента управления получает уведомления о свойствах, отправленные элементом управления, прежде чем они обрабатываются контейнером элемента управления.

ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)

Параметры

TheClass
Класс, к которому принадлежит карта приемника событий.

dispid
Идентификатор диспетчера свойства, связанного с уведомлением.

pfnRequest
Указатель на функцию-член, которая обрабатывает OnRequestEdit уведомление для этого свойства. Эта функция должна иметь тип возвращаемого значения BOOL и параметр BOOL* . Эта функция должна задать для параметра значение TRUE, чтобы разрешить свойству изменяться, а значение FALSE запрещено. Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что уведомление было обработано; в противном случае ЗНАЧЕНИЕ FALSE.

pfnChanged
Указатель на функцию-член, которая обрабатывает OnChanged уведомление для этого свойства. Функция должна иметь тип возвращаемого значения BOOL и нет параметров. Функция должна возвращать ЗНАЧЕНИЕ TRUE, чтобы указать, что уведомление было обработано; в противном случае ЗНАЧЕНИЕ FALSE.

Требования

Заголовок afxdisp.h

См. также

Макросы и глобальные