- Элементы управления ActiveX MFC MFC ActiveX Controls
- Основные компоненты элемента управления ActiveX Basic Components of an ActiveX Control
- Взаимодействие между элементами управления с контейнерами элементов управления Windows и ActiveX Interaction Between Controls with Windows and ActiveX Control Containers
- Активные и неактивные состояния элемента управления ActiveX Active and Inactive States of an ActiveX Control
- Сериализовать Serialization
- Установка классов и средств элементов управления ActiveX Installing ActiveX Control Classes and Tools
Элементы управления ActiveX MFC MFC ActiveX Controls
Элемент управления ActiveX — это многоразовый программный компонент, основанный на модели COM, который поддерживает широкий набор функциональных возможностей OLE и может быть настроен под различные потребности программного обеспечения. An ActiveX control is a reusable software component based on the Component Object Model (COM) that supports a wide variety of OLE functionality and can be customized to fit many software needs.
ActiveX — это устаревшая технология, которую не следует использовать для новой разработки. ActiveX is a legacy technology that should not be used for new development. Дополнительные сведения см. в разделе элементы управления ActiveX. For more information, see ActiveX Controls.
Элементы управления ActiveX предназначены для использования как в обычных контейнерах элементов управления ActiveX, так и в Интернете, на веб-страницах Интернета. ActiveX controls are designed for use both in ordinary ActiveX control containers and on the Internet, in World Wide Web pages. Элементы управления ActiveX можно создавать с помощью MFC, как описано здесь, или с помощью библиотеки ATL. You can create ActiveX controls either with MFC, described here, or with the Active Template Library (ATL).
Элемент управления ActiveX может рисовать себя в собственном окне, реагировать на события (например, щелчки мыши) и управлять через интерфейс, который включает свойства и методы, аналогичные методам в объектах автоматизации. An ActiveX control can draw itself in its own window, respond to events (such as mouse clicks), and be managed through an interface that includes properties and methods similar to those in Automation objects.
Эти элементы управления можно разрабатывать для многих целей, таких как доступ к базам данных, мониторинг данных или графика. These controls can be developed for many uses, such as database access, data monitoring, or graphing. Помимо переносимости элементы управления ActiveX поддерживают функции, ранее недоступные для элементов управления ActiveX, такие как совместимость с существующими контейнерами OLE и возможность интеграции их меню с меню контейнера OLE. Besides their portability, ActiveX controls support features previously not available to ActiveX controls, such as compatibility with existing OLE containers and the ability to integrate their menus with the OLE container menus. Кроме того, элемент управления ActiveX полностью поддерживает автоматизацию, что позволяет элементу управления предоставлять свойства реад\врите и набор методов, которые могут вызываться пользователем элемента управления. In addition, an ActiveX control fully supports Automation, which allows the control to expose read\write properties and a set of methods that can be called by the control user.
Вы можете создавать элементы управления ActiveX без окон и элементы управления, которые создают окно, только когда они становятся активными. You can create windowless ActiveX controls and controls that only create a window when they become active. Элементы управления без окон ускоряют отображение приложения и позволяют иметь прозрачные и непрямоугольные элементы управления. Windowless controls speed up the display of your application and make it possible to have transparent and nonrectangular controls. Свойства элемента управления ActiveX также можно загрузить асинхронно. You can also load ActiveX control properties asynchronously.
Элемент управления ActiveX реализуется как внутрипроцессный сервер (обычно небольшой объект), который можно использовать в любом контейнере OLE. An ActiveX control is implemented as an in-process server (typically a small object) that can be used in any OLE container. Обратите внимание, что все функции элемента управления ActiveX доступны только при использовании в контейнере OLE, предназначенном для осведомленности об элементах управления ActiveX. Note that the full functionality of an ActiveX control is available only when used within an OLE container designed to be aware of ActiveX controls. Список контейнеров, поддерживающих элементы управления ActiveX, см. в разделе Управление портами ActiveX для других приложений . See Port ActiveX Controls to Other Applications for a list of containers that support ActiveX controls. Этот тип контейнера, который затем называется контейнером управления, может использовать элемент управления ActiveX с помощью свойств и методов элемента управления, а также получать уведомления от элемента управления ActiveX в форме событий. This container type, hereafter called a «control container,» can operate an ActiveX control by using the control’s properties and methods, and receives notifications from the ActiveX control in the form of events. Это взаимодействие показано на следующем рисунке. The following figure demonstrates this interaction.
Взаимодействие между контейнером элемента управления ActiveX и оконным элементом управления ActiveX Interaction Between an ActiveX Control Container and a Windowed ActiveX Control
Последние сведения об оптимизации элементов управления ActiveX см. в разделе элементы ActiveX MFC: оптимизация. For some recent information on optimizing your ActiveX controls, see MFC ActiveX Controls: Optimization.
Сведения о создании элемента управления ActiveX в MFC см. в разделе Создание проекта элемента управления ActiveX. To create an MFC ActiveX control, see Create an ActiveX control project.
Дополнительные сведения см. в разделе: For more information, see:
Основные компоненты элемента управления ActiveX Basic Components of an ActiveX Control
Элемент управления ActiveX использует несколько программных элементов для эффективного взаимодействия с контейнером элемента управления и с пользователем. An ActiveX control uses several programmatic elements to interact efficiently with a control container and with the user. Это класс COleControl, набор функций, которые обрабатывают события, и карту диспетчеризации. These are class COleControl, a set of event-firing functions, and a dispatch map.
Каждый разрабатываемый управляющий объект ActiveX наследует мощный набор функций из базового класса MFC COleControl . Every ActiveX control object you develop inherits a powerful set of features from its MFC base class, COleControl . Эти функции включают в себя активацию на месте и логику автоматизации. These features include in-place activation, and Automation logic. COleControl может предоставить управляющий объект с теми же функциональными возможностями, что и объект окна MFC, а также возможность запуска событий. COleControl can provide the control object with the same functionality as an MFC window object, plus the ability to fire events. COleControl также может предоставлять безоконные элементы управления, которые полагаются на контейнер для помощи с некоторыми функциями, предоставляемыми окном (захват мыши, клавиатурный фокус, прокрутка), но обеспечивают гораздо более быстрый вывод. COleControl can also provide windowless controls, which rely on their container for help with some of the functionality a window provides (mouse capture, keyboard focus, scrolling), but offer much faster display.
Поскольку класс Control является производным от COleControl , он наследует возможность отправки или пожара сообщений, называемых событиями, в контейнер элемента управления, когда выполняются определенные условия. Because the control class derives from COleControl , it inherits the capability to send, or «fire,» messages, called events, to the control container when certain conditions are met. Эти события используются для уведомления контейнера элементов управления, когда что-то важное происходит в элементе управления. These events are used to notify the control container when something important happens in the control. Дополнительные сведения о событии можно отправить в контейнер элемента управления, присоединив параметры к событию. You can send additional information about an event to the control container by attaching parameters to the event. Дополнительные сведения о событиях элементов управления ActiveX см. в статье элементы управления ActiveX в MFC: события. For more information about ActiveX control events, see the article MFC ActiveX Controls: Events.
Последний элемент представляет собой карту диспетчеризации, которая используется для предоставления пользователю элемента управления набора функций (называемых методами) и атрибутов (называемых свойствами). The final element is a dispatch map, which is used to expose a set of functions (called methods) and attributes (called properties) to the control user. Свойства позволяют контейнеру элемента управления или пользователю элемента управления манипулировать элементом управления различными способами. Properties allow the control container or the control user to manipulate the control in various ways. Пользователь может изменять внешний вид элемента управления, изменять определенные значения элемента управления или делать запросы элемента управления, например получать доступ к конкретному фрагменту данных, который поддерживает элемент управления. The user can change the appearance of the control, change certain values of the control, or make requests of the control, such as accessing a specific piece of data that the control maintains. Этот интерфейс определяется разработчиком элемента управления и определяется с помощью представление классов. This interface is determined by the control developer and is defined using Class View. Дополнительные сведения о методах и свойствах элементов управления ActiveX см. в статьях элементы управления ActiveX в MFC: методы и свойства. For more information on ActiveX control methods and properties, see the articles MFC ActiveX Controls: Methods and Properties.
Взаимодействие между элементами управления с контейнерами элементов управления Windows и ActiveX Interaction Between Controls with Windows and ActiveX Control Containers
Когда элемент управления используется в контейнере элемента управления, он использует два механизма для взаимодействия: он предоставляет свойства и методы и запускает события. When a control is used within a control container, it uses two mechanisms to communicate: it exposes properties and methods, and it fires events. На следующем рисунке показано, как реализуются эти два механизма. The following figure demonstrates how these two mechanisms are implemented.
Обмен данными между контейнером элемента управления ActiveX и элементом управления ActiveX Communication Between an ActiveX Control Container and an ActiveX Control
На предыдущем рисунке также показано, как другие интерфейсы OLE (помимо автоматизации и событий) обрабатываются элементами управления. The previous figure also illustrates how other OLE interfaces (besides automation and events) are handled by controls.
Все элементы управления, взаимосвязь с контейнером, выполняются COleControl . All of a control’s communication with the container is performed by COleControl . Для обработки некоторых запросов контейнера COleControl будет вызывать функции членов, реализованные в классе Control. To handle some of the container’s requests, COleControl will call member functions that are implemented in the control class. Все методы и некоторые свойства обрабатываются таким образом. All methods and some properties are handled in this way. Класс элемента управления также может инициировать связь с контейнером путем вызова функций членов COleControl . Your control’s class can also initiate communication with the container by calling member functions of COleControl . События запускаются таким образом. Events are fired in this manner.
Активные и неактивные состояния элемента управления ActiveX Active and Inactive States of an ActiveX Control
Элемент управления имеет два основных состояния: активный и неактивный. A control has two basic states: active and inactive. Обычно эти Штаты были различны, когда элемент управления имел окно. Traditionally, these states were distinguished by whether the control had a window. Активный элемент управления имел окно; неактивный элемент управления не был. An active control had a window; an inactive control did not. С появлением безоконной активации это различие больше не является универсальным, но по-прежнему применяется ко многим элементам управления. With the introduction of windowless activation, this distinction is no longer universal, but still applies to many controls.
Когда безоконный элемент управления становится активным, он вызывает захват мыши, клавиатурный фокус, прокрутку и другие службы окон из своего контейнера. When a windowless control goes active, it invokes mouse capture, keyboard focus, scrolling, and other window services from its container. Можно также обеспечить взаимодействие мыши с неактивными элементами управления, а также создать элементы управления, ожидающие активации, чтобы создать окно. You can also provide mouse interaction to inactive controls, as well as create controls that wait until activated to create a window.
Когда элемент управления, работающий с окном, становится активным, он может полностью взаимодействовать с контейнером элемента управления, пользователем и Windows. When a control with a window becomes active, it is able to interact fully with the control container, the user, and Windows. На рисунке ниже показаны пути взаимодействия между элементом управления ActiveX, контейнером элемента управления и операционной системой. The figure below demonstrates the paths of communication between the ActiveX control, the control container, and the operating system.
Обработка сообщений Windows в оконном элементе ActiveX (если он активен) Windows Message Processing in a Windowed ActiveX Control (When Active)
Сериализовать Serialization
Возможность сериализации данных, которые иногда называют сохраняемостью, позволяет элементу управления записывать значения его свойств в постоянное хранилище. The ability to serialize data, sometimes referred to as persistence, allows the control to write the value of its properties to persistent storage. Элементы управления могут быть созданы повторно путем считывания состояния объекта из хранилища. Controls can then be recreated by reading the object’s state from the storage.
Обратите внимание, что элемент управления не отвечает за получение доступа к носителю хранилища. Note that a control is not responsible for obtaining access to the storage medium. Вместо этого контейнер элемента управления отвечает за предоставление элемента управления со средним хранилищем для использования в нужное время. Instead, the control’s container is responsible for providing the control with a storage medium to use at the appropriate times. Дополнительные сведения о сериализации см. в статье элементы управления ActiveX в MFC: сериализация. For more information on serialization, see the article MFC ActiveX Controls: Serializing. Сведения об оптимизации сериализации см. в разделе Оптимизация сохранения и инициализации в элементах управления ActiveX: оптимизация. For information on optimizing serialization, see Optimizing Persistence and Initialization in ActiveX Controls: Optimization.
Установка классов и средств элементов управления ActiveX Installing ActiveX Control Classes and Tools
При установке Visual C++ автоматически устанавливаются классы элементов управления ActiveX MFC и Retail и Debug ActiveX-библиотеки времени выполнения, если в программе установки выбраны элементы управления ActiveX (они выбираются по умолчанию). When you install Visual C++, the MFC ActiveX control classes and retail and debug ActiveX control run-time DLLs are automatically installed if ActiveX controls are selected in Setup (they are selected by default).
По умолчанию классы и средства элементов управления ActiveX устанавливаются в следующие подкаталоги в папке \Program Files\Microsoft Visual Studio .NET: By default, the ActiveX control classes and tools are installed in the following subdirectories under \Program Files\Microsoft Visual Studio .NET:
\Common7\Tools \Common7\Tools
Содержит файлы тестового контейнера (TstCon32.exe, а также файлы справки). Contains the Test Container files (TstCon32.exe, as well as its Help files).
\Vc7\atlmfc\include \Vc7\atlmfc\include
Содержит включаемые файлы, необходимые для разработки элементов управления ActiveX с помощью MFC Contains the include files needed to develop ActiveX controls with MFC
\Vc7\atlmfc\src\mfc \Vc7\atlmfc\src\mfc
Содержит исходный код для конкретных классов элементов управления ActiveX в MFC Contains the source code for specific ActiveX control classes in MFC
\Vc7\atlmfc\lib \Vc7\atlmfc\lib
Содержит библиотеки, необходимые для разработки элементов управления ActiveX с помощью MFC Contains the libraries required to develop ActiveX controls with MFC
Существуют также примеры для элементов управления ActiveX MFC. There are also samples for MFC ActiveX controls. Дополнительные сведения об этих примерах см. в разделе примеры элементов управления: MFC-Based элементы управления ActiveX. For more information about these samples, see Controls Samples: MFC-Based ActiveX Controls