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


Контейнеры элементов управления ActiveX. Обработка событий из элемента управления ActiveX

В этой статье описывается использование окна свойствпредставлении классов) для установки обработчиков событий для элементов ActiveX в контейнере элементов управления ActiveX. Обработчики событий используются для получения уведомлений (из элемента управления) определенных событий и выполнения некоторых действий в ответ. Это уведомление называется "увольнение" событием.

Важно!

ActiveX — это устаревшая технология, которую не следует использовать для новых разработок. Дополнительные сведения о современных технологиях, которые заменяют ActiveX, см. в разделе Элементы ActiveX.

Примечание.

В этой статье используется проект контейнера activeX на основе диалога с именем Container и внедренный элемент управления с именем Circ в качестве примеров в процедурах и коде.

С помощью кнопки "События" в окне "Свойства " (в представлении классов) можно создать карту событий, которые могут возникнуть в приложении контейнера элементов управления ActiveX. Эта карта, называемая "картой приемника событий", создается и поддерживается Visual C++ при добавлении обработчиков событий в класс контейнера управления. Каждый обработчик событий, реализованный с записью карты событий, сопоставляет определенное событие с функцией-членом обработчика событий контейнера. Эта функция обработчика событий вызывается, когда указанное событие запускается объектом элемента управления ActiveX.

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

Изменения обработчика событий в проекте

При использовании окна свойств для добавления обработчиков событий карта приемника событий объявляется и определяется в проекте. В элемент управления добавляются следующие инструкции. CPP-файл при первом добавлении обработчика событий. Этот код объявляет карту приемника событий для класса диалогового окна (в данном случае CContainerDlg):

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
END_EVENTSINK_MAP()

При использовании окна "Свойства " для добавления событий запись карты событий (ON_EVENT) добавляется на карту приемника событий, а функция обработчика событий добавляется в реализацию контейнера (). Файл CPP.

В следующем примере объявляется обработчик событий, который вызывается OnClickInCircCtrlдля события элемента управления ClickIn Circ:

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1,
         VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Кроме того, следующий шаблон добавляется в реализацию CContainerDlg класса (. CPP) файл для функции-члена обработчика событий:

BOOL CContainerDlg::OnClickInCircctrl1(OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY)
{
   // use nX and nY here
   TRACE(_T("nX = %d, nY = %d\n"), nX, nY);
   return TRUE;
}

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

Создание функции обработчика событий

  1. В представлении классов выберите класс диалогов, содержащий элемент управления ActiveX. В этом примере используйте CContainerDlg.

  2. В окне Свойства нажмите кнопку События.

  3. В окне "Свойства" выберите идентификатор элемента управления Embedded ActiveX. В этом примере используйте IDC_CIRCCTRL1.

    В окне "Свойства" отображается список событий, которые можно запустить с помощью внедренного элемента управления ActiveX. Любая функция-член, показанная полужирным шрифтом, уже имеет функции обработчика, назначенные ему.

  4. Выберите событие, которое будет обрабатываться классом диалогов. В этом примере выберите "Щелкнуть".

  5. В раскрывающемся списке справа выберите <"Добавить> ClickCircctrl1".

  6. Дважды щелкните новую функцию обработчика из представления классов, чтобы перейти к коду обработчика событий в реализации (. CPP) файла CContainerDlg.

См. также

Контейнеры для элементов ActiveX