Элементы управления ActiveX MFC

Элемент управления ActiveX — это многоразовый программный компонент, основанный на модели COM, который поддерживает широкий набор функциональных возможностей OLE и может быть настроен под различные потребности программного обеспечения.

Важно!

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

Элементы ActiveX предназначены для использования как в обычных контейнерах элементов управления ActiveX, так и в Интернете на страницах World Wide Web. Элементы ActiveX можно создавать с помощью MFC, описанного здесь, или с помощью активной библиотеки шаблонов (ATL).

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

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

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

Элемент activeX реализуется как внутрипроцессный сервер (обычно небольшой объект), который можно использовать в любом контейнере OLE. Обратите внимание, что все функциональные возможности элемента activeX доступны только в том случае, если они используются в контейнере OLE, предназначенном для того, чтобы учитывать элементы ActiveX. Список контейнеров, поддерживающих элементы ActiveX ActiveX, см. в разделе "Элементы ActiveX" для других приложений . Этот тип контейнера, далее называемый "контейнером управления", может работать с элементом ActiveX с помощью свойств и методов элемента управления, а также получать уведомления из элемента ActiveX в виде событий. На следующем рисунке показано это взаимодействие.

Interplay of ActiveX control container and control.
Взаимодействие между контейнером элементов activeX и элементом ActiveX с элементом ActiveX в окне

Некоторые последние сведения о оптимизации элементов ActiveX см. в разделе "Элементы ActiveX MFC: оптимизация".

Сведения о создании элемента управления ActiveX MFC см. в статье "Создание проекта элемента управления ActiveX".

Дополнительные сведения см. в разделе:

Основные компоненты элемента управления ActiveX

Элемент управления ActiveX использует несколько программных элементов для эффективного взаимодействия с контейнером элементов управления и пользователем. Это класс COleControl, набор функций для запуска событий и карта отправки.

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

Поскольку класс управления является производным от COleControl, он наследует возможность отправки сообщений или "пожара", вызываемых событиями, в контейнер управления при выполнении определенных условий. Эти события используются для уведомления контейнера элементов управления, когда в элементе управления происходит что-то важное. Дополнительные сведения о событии можно отправить в контейнер элементов управления, подключив параметры к событию. Дополнительные сведения о событиях элементов управления ActiveX см. в статье MFC ActiveX Controls: Events.

Последний элемент — это карта диспетчера, которая используется для предоставления набора функций (называемых методов) и атрибутов (называемых свойствами) пользователю элемента управления. Свойства позволяют контейнеру элементов управления или пользователю элемента управления управлять элементом управления различными способами. Пользователь может изменить внешний вид элемента управления, изменить определенные значения элемента управления или запросить элемент управления, например доступ к определенной части данных, которые поддерживает элемент управления. Этот интерфейс определяется разработчиком элемента управления и определяется с помощью представления классов. Дополнительные сведения о методах и свойствах элементов управления ActiveX см. в статьях mFC ActiveX Controls: Methods and Properties.

Взаимодействие между элементами управления с контейнерами элементов управления Windows и ActiveX

Если элемент управления используется в контейнере элементов управления, он использует два механизма взаимодействия: он предоставляет свойства и методы, а также вызывает события. На следующем рисунке показано, как реализуются эти два механизма.

ActiveX control communicates with its container.
Обмен данными между контейнером элементов activeX и элементом ActiveX

На предыдущем рисунке также показано, как другие интерфейсы OLE (помимо автоматизации и событий) обрабатываются элементами управления.

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

Активные и неактивные состояния элемента управления ActiveX

Элемент управления имеет два основных состояния: активные и неактивные. Традиционно эти состояния были различаются по признаку того, был ли элемент управления окном. Активный элемент управления имел окно; Неактивный элемент управления не был. При внедрении активации без окон это различие больше не является универсальным, но по-прежнему применяется ко многим элементам управления.

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

Когда элемент управления с окном становится активным, он может полностью взаимодействовать с контейнером элементов управления, пользователем и Windows. На рисунке ниже показаны пути взаимодействия между элементом ActiveX, контейнером управления и операционной системой.

Msg processing in active windowed ActiveX control.
Обработка сообщений Windows в элементе activeX с окном (при активной активности)

Сериализация

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

Обратите внимание, что элемент управления не несет ответственности за получение доступа к носителю хранилища. Вместо этого контейнер элемента управления отвечает за предоставление элемента управления средой хранения для использования в соответствующее время. Дополнительные сведения о сериализации см. в статье "Элементы activeX MFC: сериализация". Дополнительные сведения о оптимизации сериализации см. в разделе "Оптимизация сохраняемости и инициализация " в элементах activeX Controls: оптимизация.

Установка классов и средств управления ActiveX

При установке Visual C++классы элементов управления MFC ActiveX и розничные и отладочные библиотеки DLL ActiveX автоматически устанавливаются, если элементы ActiveX выбраны в программе установки (они выбраны по умолчанию).

По умолчанию классы и средства activeX устанавливаются в следующие подкаталоги в разделе \Program Files\Microsoft Visual Studio .NET:

  • \Common7\Tools

    Содержит файлы тестового контейнера (TstCon32.exe, а также файлы справки).

  • \Vc7\atlmfc\include

    Содержит файлы включения, необходимые для разработки элементов ActiveX с помощью MFC

  • \Vc7\atlmfc\src\mfc

    Содержит исходный код для определенных классов элементов управления ActiveX в MFC

  • \Vc7\atlmfc\lib

    Содержит библиотеки, необходимые для разработки элементов ActiveX с помощью MFC

Существуют также примеры для элементов activeX MFC. Дополнительные сведения об этих примерах см. в разделе "Примеры элементов activeX на основе MFC"

См. также

Элементы пользовательского интерфейса