Compartilhar via


Categorizando por recursos de contêiner

Os componentes geralmente exigem determinada funcionalidade do contêiner e não funcionarão com um contêiner que não forneça o suporte. A interface do usuário deve filtrar componentes que exigem funcionalidade que o contêiner não suporta. Para fazer isso, os componentes podem ser categorizados pela funcionalidade de contêiner necessária.

Um exemplo de componentes que exigem funcionalidade do contêiner e não funcionam em contêineres que não oferecem suporte a essa funcionalidade são controles OLE de quadro simples. A categorização por recursos de contêiner é realizada por uma chave do Registro adicional dentro da chave CLSID do componente:

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

Como mostrado neste exemplo, um componente pode pertencer a categorias de componentes que indicam a funcionalidade suportada, bem como a categorias de componentes que indicam a funcionalidade necessária.

No exemplo a seguir, o controle button é um controle OLE genérico que oferece suporte a nenhuma funcionalidade adicional. Ele funcionará em qualquer contêiner de controle OLE.

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

Compare o exemplo anterior com o próximo exemplo no qual o MyDBControl pode usar a vinculação de dados do Visual Basic se o contêiner oferecer suporte a ele. No entanto, ele foi definido para que ele funcionará em contêineres que não oferecem suporte à vinculação de dados do Visual Basic (talvez por uma API de banco de dados diferente):

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

O controle GroupBox é um controle de quadro simples. Ele depende do contêiner que implementa a interface ISimpleFrameSite e funcionará corretamente apenas em tais contêineres:

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

Um contêiner que oferece suporte a controles vinculados a dados do Visual Basic, mas não oferece suporte a controles de quadro simples especificaria CATID_Control e CATID_VBDatabound para a interface do usuário de controle de inserção. A lista de controles exibida ao usuário conteria o CLSID_Button e o CLSID_MyDBControl. CLSID_GroupBox não seriam exibidos.

Associando ícones a uma categoria

Categorizando por recursos de componente

Classes e associações padrão

Definindo categorias de componentes

O Gerenciador de Categorias de Componentes