Partilhar via


Categorização por recursos de contêiner

Os componentes geralmente exigem determinadas funcionalidades do contêiner e não funcionarão com um contêiner que não fornece o suporte. A interface do usuário deve filtrar os 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 suportam 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 funcionalidade suportada, bem como a categorias de componentes que indicam a funcionalidade necessária.

No exemplo a seguir, o botão de controlo é um controle OLE genérico que não suporta 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 funcione 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 interfaceISimpleFrameSite doe funcionará corretamente somente nesses 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 ligados 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 do controle de inserção. A lista de controles exibidos para o usuário conteria o CLSID_Button e CLSID_MyDBControl. CLSID_GroupBox não seria exibido.

Associando ícones a uma categoria

Categorização por recursos de componentes

Classes e associações padrão

Definição de categorias de componentes

O Gerenciador de Categorias de Componentes