Kategorizace podle možností kontejneru

Komponenty často vyžadují určité funkce z kontejneru a nebudou fungovat s kontejnerem, který neposkytuje podporu. Uživatelské rozhraní by mělo vyfiltrovat komponenty, které vyžadují funkce, které kontejner nepodporuje. K tomu je možné komponenty kategorizovat podle požadovaných funkcí kontejneru.

Příkladem komponent, které vyžadují funkce z kontejneru a nefungují v kontejnerech, které nepodporují tyto funkce, jsou jednoduché ovládací prvky OLE rámce. Kategorizace podle schopností kontejneru se provádí pomocí dalšího klíče registru v rámci klíče CLSID komponenty:

;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...}
 

Jak je znázorněno v tomto příkladu, komponenta může patřit do kategorií komponent, které označují podporované funkce, a také do kategorií komponent, které označují požadované funkce.

V následujícím příkladu je ovládací prvek tlačítka obecný ovládací prvek OLE, který nepodporuje žádné další funkce. Bude fungovat v libovolném kontejneru ovládacího prvku OLE.

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

Porovnejte předchozí příklad s dalším příkladem, ve kterém MyDBControl může použít datovou vazbu jazyka Visual Basic, pokud ho kontejner podporuje. Byla však definována tak, aby fungovala v kontejnerech, které nepodporují datové vazby jazyka Visual Basic (například pomocí jiného databázového rozhraní API):

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...}
 

Ovládací prvek GroupBox je jednoduchý ovládací prvek rámce. Spoléhá na kontejner, který implementuje rozhraní ISimpleFrameSite a bude fungovat správně pouze v takových kontejnerech:

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...}
 

Kontejner, který podporuje ovládací prvky vázané na data jazyka Visual Basic, ale nepodporuje jednoduché ovládací prvky rámce, by specifikoval CATID_Control a CATID_VBDatabound do uživatelského rozhraní pro vložení ovládacího prvku. Seznam ovládacích prvků zobrazených uživateli by obsahoval CLSID_Button a CLSID_MyDBControl. CLSID_GroupBox se nezobrazí.

přidružení ikon ke kategorii

kategorizaci podle možností komponent

výchozí třídy a přidružení

definování kategorií součástí

správce kategorií komponent