Схемы приемников событий
Когда внедренный элемент управления 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