Dela via


Kategorisera efter containerfunktioner

Komponenter kräver ofta vissa funktioner från containern och fungerar inte med en container som inte ger stöd. Användargränssnittet bör filtrera bort komponenter som kräver funktioner som containern inte stöder. För att åstadkomma detta kan komponenter kategoriseras efter nödvändiga containerfunktioner.

Ett exempel på komponenter som kräver funktioner från containern och inte fungerar i containrar som inte stöder att funktioner är enkla OLE-ramkontroller. Kategorisering efter containerfunktioner utförs av ytterligare en registernyckel i komponentens CLSID-nyckel:

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

Som du ser i det här exemplet kan en komponent tillhöra komponentkategorier som anger vilka funktioner som stöds samt till komponentkategorier som anger nödvändiga funktioner.

I följande exempel är knappkontrollen en allmän OLE-kontroll som inte stöder några ytterligare funktioner. Det fungerar i valfri OLE-kontrollcontainer.

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

Jämför föregående exempel med nästa exempel där MyDBControl kan använda Visual Basic-databindning om containern stöder den. Den har dock definierats så att den fungerar i containrar som inte stöder Visual Basic-databindning (kanske av ett annat databas-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...}
 

GroupBox-kontrollen är en enkel ramkontroll. Den förlitar sig på att containern implementerar gränssnittet ISimpleFrameSite och fungerar endast korrekt i sådana containrar:

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

En behållare som har stöd för Visual Basic-databundna kontroller men som inte stöder enkla ramkontroller anger CATID_Control och CATID_VBDatabound till användargränssnittet för kontrollinsättning. Listan över kontroller som visas för användaren innehåller CLSID_Button och CLSID_MyDBControl. CLSID_GroupBox visas inte.

associera ikoner med en kategori

kategorisera efter komponentfunktioner

Standardklasser och associationer

Definiera komponentkategorier

Komponentkategorihanteraren