MFC-ActiveX-Steuerelemente

Ein ActiveX-Steuerelement ist eine wiederverwendbare Softwarekomponente, die auf dem Component Object Model (COM) basiert. Dieses Modell unterstützt zahlreiche OLE-Funktionen und kann an die unterschiedlichsten Softwareanforderungen angepasst werden.

Wichtig

ActiveX ist eine Legacytechnologie, die nicht für neue Software verwendet werden sollte. Weitere Informationen finden Sie unter ActiveX Steuerelemente.

ActiveX-Steuerelemente sind sowohl für den herkömmlichen Einsatz in ActiveX-Steuerelementcontainern als auch für die Verwendung in World Wide Web-Seiten im Internet geeignet. Sie können ActiveX Steuerelemente entweder mit MFC erstellen, die hier oder mit der Aktiven Vorlagenbibliothek (ATL) beschrieben werden.

Ein ActiveX-Steuerelement kann sich in einem eigenen Fenster zeichnen, auf Ereignisse (wie Mausklicks) reagieren und über eine Schnittstelle verwaltet werden, die Eigenschaften und Methoden umfasst, die denen in den Automatisierungsobjekten ähneln.

Diese Steuerelemente können für viele Verwendungszwecke entwickelt werden, z. B. Datenbankzugriff, Datenüberwachung oder Diagrammerstellung. Neben ihrer Portabilität unterstützen ActiveX-Steuerelemente Funktionen, die zuvor nicht für ActiveX-Steuerelemente verfügbar waren, wie z. B. Kompatibilität mit vorhandenen OLE-Containern und die Möglichkeit, die Menüs in den OLE-Containermenüs zu integrieren. Außerdem unterstützt ein ActiveX-Steuerelement vollständig Automatisierung. Damit können für das Steuerelement Lese/Schreibeigenschaften und eine Reihe von Methoden sichtbar gemacht werden, die vom Benutzer des Steuerelements aufgerufen werden können.

Sie können fensterlose ActiveX-Steuerelemente und Steuerelemente erstellen, die nur dann ein Fenster erstellen, wenn sie aktiv sind. Fensterlose Steuerelemente beschleunigen die Anzeige der Anwendung. Außerdem können mit ihnen transparente und nicht rechteckige Steuerelemente erstellt werden. Sie können ActiveX-Steuerelement-Eigenschaften auch asynchron laden.

Ein ActiveX-Steuerelement wird als prozessinterner Server implementiert (in der Regel ein kleines Objekt), der in jedem OLE-Container verwendet werden kann. Beachten Sie, dass die volle Funktionalität eines ActiveX-Steuerelements nur verfügbar ist, wenn es innerhalb eines OLE-Containers verwendet wird, der in ActiveX-Steuerelementen berücksichtigt wird. Siehe Port ActiveX Steuerelemente zu anderen Anwendungen für eine Liste von Containern, die ActiveX Steuerelemente unterstützen. Dieser Containertyp (im Folgenden "Steuerelementcontainer" genannt) kann ein ActiveX-Steuerelement ausführen. Dazu werden die Eigenschaften und Methoden des Steuerelements verwendet und Benachrichtigungen aus dem ActiveX-Steuerelement in Form von Ereignissen empfangen. Dies wird in der folgenden Abbildung veranschaulicht.

Interplay of ActiveX control container and control.
Interaktion zwischen einem ActiveX-Steuerelement-Container und einem ActiveX-Steuerelement mit Fenster

Einige aktuelle Informationen zum Optimieren Ihrer ActiveX-Steuerelemente finden Sie unter MFC ActiveX Steuerelemente: Optimierung.

Informationen zum Erstellen eines MFC-ActiveX-Steuerelements finden Sie unter Erstellen eines ActiveX Steuerelementprojekts.

Weitere Informationen finden Sie unter

Grundlegende Komponenten eines ActiveX-Steuerelements

Ein ActiveX-Steuerelement verwendet mehrere Programmierelemente, um effizient mit einem Steuerelementcontainer und mit dem Benutzer interagieren zu können. Hierbei handelt es sich um die Klasse COleControl, eine Reihe von Ereignisauslösungsfunktionen und eine Verteilerzuordnung.

Jedes ActiveX-Steuerelementobjekt, das Sie entwickeln, erbt einen leistungsfähigen Satz an Funktionen aus der zugehörigen MFC-Basisklasse, COleControl. Zu diesen Funktionen gehören die direkte Aktivierung und Automatisierungslogik. COleControl kann das Steuerelementobjekt mit derselben Funktionalität bereitstellen wie ein MFC-Fensterobjekt. Außerdem wird die Möglichkeit bereitgestellt, Ereignisse auszulösen. COleControl kann auch fensterlose Steuerelemente bereitstellen, die sich auf ihren Container verlassen, um Hilfe bei einigen der Funktionen zu erhalten, die ein Fenster bereitstellt (Mausaufnahme, Tastaturfokus, Bildlauf), bietet aber viel schnellere Anzeige.

Da die Steuerelementklasse von COleControl abgeleitet wird, erbt sie die Fähigkeit, Nachrichten (sogenannte Ereignisse) zu senden oder auszulösen, wenn bestimmte Bedingungen erfüllt sind. Mithilfe dieser Ereignisse werden die Steuerelementcontainer benachrichtigt, wenn ein wichtiges Ereignis im Steuerelement auftritt. Sie können weitere Informationen zu einem Ereignis an den Steuerelementcontainer senden, indem Sie den Ereignissen Parameter anfügen. Weitere Informationen zu ActiveX Steuerelementereignissen finden Sie im Artikel MFC ActiveX Controls: Events.

Das letzte Element ist eine Dispatchzuordnung, mit der eine Reihe von Funktionen (sogenannte Methoden) und Attributen (sogenannte Eigenschaften) für den Benutzer des Steuerelements sichtbar gemacht werden. Anhand der Eigenschaften kann der Steuerelementcontainer oder der Benutzer des Steuerelements das Steuerelement auf vielfältige Weise manipulieren. Der Benutzer kann die Darstellung des Steuerelements und bestimmte Werte des Steuerelements ändern und Anforderungen an das Steuerelement senden, z. B. den Zugriff auf einen bestimmten Datenteil, der im Steuerelement gewartet wird. Diese Schnittstelle wird vom Steuerelemententwickler bestimmt und mithilfe der Klassenansicht definiert. Weitere Informationen zu ActiveX Steuerelementmethoden und -eigenschaften finden Sie in den Artikeln MFC ActiveX Controls: Methoden und Eigenschaften.

Interaktion zwischen Steuerelementen und Windows- und ActiveX-Steuerelementcontainern

Wenn ein Steuerelement in einem Steuerelementcontainers verwendet wird, werden zwei Kommunikationsmechanismen verwendet: Es macht Eigenschaften und Methoden verfügbar, und es löst Ereignisse aus. Die folgende Abbildung zeigt, wie diese beiden Mechanismen implementiert werden.

ActiveX control communicates with its container.
Kommunikation zwischen einem ActiveX-Steuerelement-Container und einem ActiveX-Steuerelement

Die vorherige Abbildung zeigt auch, wie andere OLE-Schnittstellen (mit Ausnahme von Automatisierung und Ereignisse) von Steuerelementen behandelt werden.

Die gesamte Kommunikation eines Steuerelements mit dem Container wird durch COleControl ausgeführt. Um einige Anforderungen des Containers zu behandeln, rufen Sie Memberfunktionen auf, COleControl die in der Steuerelementklasse implementiert sind. Alle Methoden und einige Eigenschaften werden auf diese Weise behandelt. Die Klasse des Steuerelements kann die Kommunikation mit dem Container durch Aufrufen von Memberfunktionen von COleControl auch initiieren. Ereignisse werden auf diese Weise ausgelöst.

Aktive und inaktive Zustände eines ActiveX-Steuerelements

Ein Steuerelement verfügt über zwei grundlegende Zustände: aktiv und inaktiv. In der Vergangenheit unterschieden sich diese Zustände dadurch, ob das Steuerelement ein Fenster hatte oder nicht. Ein aktives Steuerelement wies ein Fenster auf, ein inaktives Steuerelement wies kein Fenster auf. Mit der Einführung der fensterlose Aktivierung, ist diese Unterscheidung nicht mehr universell, gilt aber weiterhin für viele Steuerelemente.

Wenn ein fensterloses Steuerelement aktiv ist, ruft es die Mausaufnahme, den Tastaturfokus, das Scrollen und andere Fensterdienste aus seinem Container auf. Sie können auch Mausinteraktionen für inaktive Steuerelemente bereitstellen und Steuerelemente erstellen, die warten, bis ein Fenster erstellt wird.

Wenn ein Steuerelement mit einem Fenster aktiv wird, ist es möglich, vollständig mit dem Steuerelementcontainer, dem Benutzer und Windows zu interagieren. Die folgende Abbildung zeigt die Pfade der Kommunikation zwischen dem ActiveX-Steuerelement, dem Steuerelementcontainer und dem Betriebssystem.

Msg processing in active windowed ActiveX control.
Windows-Nachrichtenverarbeitung in einem ActiveX-Steuerelement mit Fenster (sofern aktiv)

Serialisierung

Die Möglichkeit, die Daten zu serialisieren, was manchmal auch als Persistenz bezeichnet wird, ermöglicht es dem Steuerelement, den Wert der Eigenschaften in einen permanenten Speicher zu schreiben. Steuerelemente können neu erstellt werden, indem der Zustand des Objekts aus dem Speicher gelesen wird.

Beachten Sie, dass ein Steuerelement nicht den Zugriff auf das Speichermedium garantiert. Stattdessen ist der Container des Steuerelements für die Bereitstellung des Steuerelements mit einem Speichermedium zuständig, das zu den entsprechenden Zeitpunkten verwendet werden kann. Weitere Informationen zur Serialisierung finden Sie im Artikel MFC ActiveX Controls: Serialisierung. Informationen zur Optimierung der Serialisierung finden Sie unter Optimieren der Persistenz und Initialisierung in ActiveX Steuerelementen: Optimierung.

Installieren von ActiveX-Steuerelementklassen und -werkzeugen

Wenn Sie Visual C++ installieren, werden die MFC-ActiveX-Steuerelementklassen und Laufzeit-DLLs der Verkaufs- und Debugversionen von ActiveX-Steuerelementen automatisch installiert, wenn ActiveX-Steuerelemente bei der Installation ausgewählt werden (sie werden standardmäßig aktiviert).

Standardmäßig werden die ActiveX-Steuerelementklassen und -werkzeuge in den folgenden Unterverzeichnissen unter \Programme\Microsoft Visual Studio .NET installiert:

  • \Common7\Tools

    Enthält die Testcontainerdateien (TstCon32.exe und entsprechende Hilfedateien).

  • \Vc7\atlmfc\include

    Enthält die Includedateien, die für die Entwicklung von ActiveX-Steuerelementen mit MFC erforderlich sind.

  • \Vc7\atlmfc\src\mfc

    Enthält den Quellcode für bestimmte ActiveX-Steuerelementklassen in MFC.

  • \Vc7\atlmfc\lib

    Enthält die Bibliotheken, die für die Entwicklung von ActiveX-Steuerelementen mit MFC erforderlich sind.

Dazu gehören auch Beispiele für MFC-ActiveX-Steuerelemente. Weitere Informationen zu diesen Beispielen finden Sie unter Steuerelementbeispiele: MFC-Based ActiveX Steuerelemente

Siehe auch

Elemente der Benutzeroberfläche