Übersicht über Die Richtlinien für Steuerungs- und Steuerelementcontainer
Ein ActiveX-Steuerelement ist im Wesentlichen ein einfaches OLE-Objekt, das die IUnknown-Schnittstelle unterstützt. Es unterstützt in der Regel mehr Schnittstellen, um Funktionalität zu bieten, aber alle zusätzlichen Schnittstellen können als optional betrachtet werden, und daher sollte ein Steuerungscontainer nicht von zusätzlichen Schnittstellen abhängig sein. Wenn keine zusätzlichen Schnittstellen angegeben werden, die ein Steuerelement unterstützen muss, kann ein Steuerelement effizient auf einen bestimmten Funktionsbereich abzielen, ohne bestimmte Schnittstellen unterstützen zu müssen, um als Steuerelement zu gelten. Wie immer bei OLE, unabhängig davon, ob in einem Steuerelement oder einem Steuerelementcontainer, sollte niemals davon ausgegangen werden, dass eine Schnittstelle verfügbar ist und dass standardmäßige Rückgabeüberprüfungskonventionen immer eingehalten werden sollten. Es ist wichtig, dass ein Steuerelement- oder Steuerelementcontainer ordnungsgemäß herabgesetzt wird und alternative Funktionen bietet, wenn keine erforderliche Schnittstelle verfügbar ist.
Ein ActiveX-Steuerelementcontainer muss in der Lage sein, ein minimales ActiveX-Steuerelement zu hosten. Es unterstützt auch eine Reihe von zusätzlichen Schnittstellen, wie in Containern angegeben. Es gibt eine Reihe von Schnittstellen und Methoden, die ein Container optional unterstützt, die in Funktionsbereiche gruppiert sind, die als Komponentenkategorien bezeichnet werden. Ein Container kann eine beliebige Kombination von Komponentenkategorien unterstützen, z. B. ist eine Komponentenkategorie für die Datenbindung vorhanden, und ein Container kann die Datenbindungsfunktion je nach den Marktanforderungen des Containers unterstützen oder nicht. Wenn ein Steuerelement Unterstützung für die Datenbindung von einem Container an eine Funktion benötigt, gibt es diese Anforderung in die Registrierung ein. Dadurch kann ein Steuerelementcontainer nur die Steuerelemente zum Einfügen anbieten, von denen er weiß, dass er erfolgreich hosten kann. Es ist wichtig zu beachten, dass Komponentenkategorien als Teil von OLE angegeben werden und nicht spezifisch für ActiveX-Steuerelemente sind. Die Steuerelementarchitektur verwendet Komponentenkategorien, um Funktionsbereiche zu identifizieren, die eine OLE-Komponente möglicherweise unterstützt. Komponentenkategorien sind nicht kumulativ oder exklusiv, sodass ein Steuerelementcontainer eine Kategorie unterstützen kann, ohne unbedingt eine andere zu unterstützen.
Es ist wichtig, dass Steuerelemente, die optionale Features oder für einen bestimmten Container spezifische Features erfordern, eindeutig gepackt und mit diesen Anforderungen vermarktet werden. Ebenso müssen Container, die bestimmte Features oder Komponentenkategorien bieten, vermarktet und gepackt werden, um diese Unterstützungsebenen beim Hosten von ActiveX-Steuerelementen zu bieten. Es wird empfohlen, dass Steuerelemente mit so vielen Containern wie möglich zielen und testen und entsprechend herabstufen, um weniger oder alternative Funktionen zu bieten, wenn Schnittstellen oder Methoden nicht verfügbar sind. In einer Situation, in der ein Steuerelement seine angegebene Auftragsfunktion nicht ohne die Unterstützung einer Komponentenkategorie ausführen kann, sollte diese Kategorie als Anforderung in die Registrierung eingegeben werden, um zu verhindern, dass das Steuerelement in einen ungeeigneten Container eingefügt wird.
In diesen Richtlinien werden die Schnittstellen und Methoden definiert, die von einem Steuerelement möglicherweise von einem Steuerelement unterstützt werden sollen, obwohl ein Steuerelement wie immer die Rückgabewerte überprüfen sollte, wenn QueryInterface oder andere Methoden verwendet werden, um Zeiger auf diese Schnittstellen abzurufen. Ein Container sollte nicht erwarten, dass ein Steuerelement mehr als die IUnknown-Schnittstelle unterstützt, und diese Richtlinien bestimmen, welche Schnittstellen ein Steuerelement möglicherweise unterstützt und was das Vorhandensein einer bestimmten Schnittstelle bedeutet.
Warum die Richtlinien für ActiveX-Steuerelemente und -Steuerelemente wichtig sind
ActiveX-Steuerelemente haben sich zur primären Architektur für die Entwicklung programmierbarer Softwarekomponenten für die Verwendung in einer Vielzahl verschiedener Container entwickelt, die von Softwareentwicklungstools bis hin zu Produktivitätstools für Endbenutzer reichen. Damit ein Steuerelement in einer Vielzahl von Containern gut funktioniert, muss das Steuerelement in der Lage sein, ein mindestes Maß an Funktionalität anzunehmen, auf das es sich in allen Containern verlassen kann.
Indem sie diese Richtlinien befolgen, machen Steuerungs- und Containerentwickler ihre Steuerelemente und Container zuverlässiger und interoperabler und letztendlich bessere und nutzbarere Komponenten für die Erstellung komponentenbasierter Lösungen.
Was ist zu tun, wenn eine von Ihnen benötigte Schnittstelle nicht verfügbar ist?
OLE-Programme sollten QueryInterface verwenden, um Schnittstellenzeiger zu erhalten, und müssen den Rückgabewert überprüfen. OLE-Anwendungen können nicht sicher davon ausgehen, dass QueryInterface erfolgreich ist.
Diese Anforderung gilt für alle OLE-Anwendungen. Wenn die angeforderte Schnittstelle nicht verfügbar ist (d. h. QueryInterface gibt E_NOINTERFACE zurück), muss das Steuerelement oder container ordnungsgemäß herabgestuft werden, auch wenn dies bedeutet, dass die angegebene Auftragsfunktion nicht ausgeführt werden kann.
Zugehörige Themen