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


Элементы управления ActiveX в MFC. Добавление событий хранения в элемент управления ActiveX

Стандартные события отличаются от пользовательских событий тем, что они автоматически запускаются классом COleControl. COleControl содержит стандартные функции-члены, которые инициируют события, возникшие в результате распространенных действий. Некоторые распространенные действия, реализуемые COleControl, включают в себя одинарные и двойные щелчки мышью, события клавиатуры и изменения в состоянии кнопок мыши. Записям схемы событий для стандартных событий всегда предшествует префикс EVENT_STOCK.

Стандартные события, поддерживаемые мастером добавления событий

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

Стандартные события

Событие Срабатывание функции Комментарии
Щелчок void FireClick( ) Возникает, когда элемент управления захватывает мышь, поступает любое сообщение BUTTONUP (левая, средняя или правая), а кнопка отпускается. Стандартные события MouseDown и MouseUp происходят перед этим событием.

Запись схемы событий: EVENT_STOCK_CLICK( )
DblClick void FireDblClick( ) Похоже на щелчок, но срабатывает при поступлении сообщения BUTTONDBLCLK.

Запись схемы событий: EVENT_STOCK_DBLCLICK( )
Ошибка void FireError( SCODEscode, LPCSTRlpszDescription, UINTnHelpID= 0 ) Возникает при возникновении ошибки в элементе управления ActiveX за пределами области вызова метода или доступа к свойству.

Запись схемы событий: EVENT_STOCK_ERROREVENT( )
KeyDown void FireKeyDown( shortnChar, shortnShiftState) Вызывается при получении сообщения WM_SYSKEYDOWN или WM_KEYDOWN.

Запись схемы событий: EVENT_STOCK_KEYDOWN( )
KeyPress void FireKeyPress( short*pnChar) Происходит при получении сообщения WM_CHAR.

Запись схемы событий: EVENT_STOCK_KEYPRESS( )
KeyUp void FireKeyUp( shortnChar, shortnShiftState) Вызывается при получении сообщения WM_SYSKEYUP или WM_KEYUP.

Запись схемы событий: EVENT_STOCK_KEYUP( )
MouseDown void FireMouseDown( shortnButton, shortnShiftState, floatx, floaty) Вызывается при получении BUTTONDOWN (левая, средняя или правая). Мышь записывается непосредственно перед срабатыванием этого события.

Запись схемы событий: EVENT_STOCK_MOUSEDOWN( )
MouseMove void FireMouseMove( shortnButton, shortnShiftState, floatx, floaty) Возникает при получении сообщения WM_MOUSEMOVE.

Запись схемы событий: EVENT_STOCK_MOUSEMOVE( )
MouseUp void FireMouseUp( shortnButton, shortnShiftState, floatx, floaty) Вызывается при получении BUTTONUP (левая, средняя или правая). Захват мыши освобождается перед срабатыванием этого события.

Запись схемы событий: EVENT_STOCK_MOUSEUP( )
ReadyStateChange void FireReadyStateChange( ) Вызывается, когда элемент управления переходит к следующему состоянию готовности из-за объема полученных данных.

Запись схемы событий: EVENT_STOCK_READYSTATECHANGE( )

Добавление стандартного события с помощью мастера добавления событий

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

Добавление стандартного события KeyPress с помощью мастера добавления событий

  1. Загрузите проект элемента управления.

  2. В представление классов щелкните правой кнопкой мыши класс элемента управления ActiveX, чтобы открыть контекстное меню.

  3. В контекстном меню выберите команду Добавить, а затем — Добавить событие.

    Откроется мастер добавления событий.

  4. В раскрывающемся списке Имя события выберите KeyPress.

  5. Нажмите кнопку Готово.

Изменения мастера добавления событий для стандартных событий

Поскольку стандартные события обрабатываются базовым классом элемента управления, мастер добавления событий не изменяет объявление класса. Он добавляет событие в схему событий элемента управления и создает запись в его IDL-файле. Следующая строка добавляется в схему событий элемента управления, расположенную в файле реализации класса элемента управления (CPP):

EVENT_STOCK_KEYPRESS()

Добавление этого кода вызывает событие KeyPress, когда получено сообщение WM_CHAR и элемент управления активен. Событие KeyPress может быть вызвано в другое время путем вызова функции, вызвавшей срабатывание (например, FireKeyPress) в коде элемента управления.

Мастер добавления событий добавляет следующую строку кода в IDL-файл элемента управления:

[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);

Эта строка связывает событие KeyPress с его стандартным идентификатором диспетчеризации и позволяет контейнеру ожидать событие KeyPress.

См. также

Элементы ActiveX библиотеки MFC
Элементы ActiveX в MFC. Методы
Класс COleControl