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


Компоненты ActiveX MFC

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

Это важно

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

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

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

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

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

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

Взаимодействие контейнера и элемента управления 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 взаимодействует с контейнером.
Взаимодействие между контейнером ActiveX и элементом ActiveX

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

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

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

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

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

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

Обработка сообщений в активном элементе управления ActiveX с окном.
Обработка сообщений 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

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

См. также

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