Kategorisieren nach Containerfunktionen

Komponenten erfordern häufig bestimmte Funktionen aus dem Container und funktionieren nicht mit einem Container, der die Unterstützung nicht bereitstellt. Die Benutzeroberfläche sollte Komponenten herausfiltern, die Funktionen erfordern, die der Container nicht unterstützt. Zu diesem Zweck können Komponenten nach den erforderlichen Containerfunktionen kategorisiert werden.

Ein Beispiel für Komponenten, die Funktionen aus dem Container erfordern und nicht in Containern funktionieren, die diese Funktionalität nicht unterstützen, sind einfache Frame-OLE-Steuerelemente. Die Kategorisierung nach Containerfunktionen erfolgt durch einen zusätzlichen Registrierungsschlüssel im CLSID-Schlüssel der Komponente:

;The CLSID for "Simple Frame Control" is {123456FF-ABCD-4321-0101-00000000000C}HKEY_CASSES_ROOT\CLSID\{12346FF-ABCD-4321-0101-00000000000C}\Implemented Categories
;The CATID for "Control" is {40FC6ED4-2438-11cf-A3DB-080036F12502} HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Implemented Categories\{40FC6ED4-2438-11cf-A3DB-080036F12502}
;The CATID for simple frame controls is {...CATID_SimpleFrameControl...} HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Implemented Categories\{...CATID_SimpleFrameControl...}
HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Required Categories\{...CATID_SimpleFrameControl...}
 

Wie in diesem Beispiel gezeigt, kann eine Komponente zu Komponentenkategorien gehören, die unterstützte Funktionalität angeben, sowie zu Komponentenkategorien, die die erforderliche Funktionalität angeben.

Im folgenden Beispiel ist das Schaltflächensteuerelement ein generisches OLE-Steuerelement, das keine zusätzliche Funktionalität unterstützt. Sie funktioniert in jedem OLE-Steuerelementcontainer.

HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories\{...CATID_Control...}
 

Vergleichen Sie das vorherige Beispiel mit dem nächsten Beispiel, in dem MyDBControl Visual Basic Datenbindung verwenden kann, wenn der Container dies unterstützt. Sie wurde jedoch so definiert, dass sie in Containern funktioniert, die Visual Basic Datenbindung (möglicherweise durch eine andere Datenbank-API) nicht unterstützen:

HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories\{...CATID_Control...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories\{...CATID_VBDatabound...}
 

Das GroupBox-Steuerelement ist ein einfaches Rahmensteuerelement. Er basiert auf dem Container, der die ISimpleFrameSite-Schnittstelle implementiert, und funktioniert nur in solchen Containern ordnungsgemäß:

HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories\{...CATID_Control...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories\{...CATID_SimpleFrame...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Required Categories\{...CATID_SimpleFrame...}
 

Ein Container, der Visual Basic datengebundene Steuerelemente unterstützt, aber keine einfachen Framesteuerelemente unterstützt, würde CATID _ Control und CATID _ VBDatabound für die Benutzeroberfläche des Einfügesteuerelements angeben. Die Liste der Steuerelemente, die dem Benutzer angezeigt werden, würde die _ CLSID-Schaltfläche und CLSID _ MyDBControl enthalten. CLSID _ GroupBox wird nicht angezeigt.

Zuordnen von Symbolen zu einer Kategorie

Kategorisieren nach Komponentenfunktionen

Standardklassen und Zuordnungen

Definieren von Komponentenkategorien

Der Komponentenkategorien-Manager