Catégories de composants et fonctionnement
Les catégories de composants identifient les zones de fonctionnalités prises en charge et requises par un composant logiciel. Une entrée de Registre est utilisée pour chaque catégorie ou zone de fonctionnalité identifiée. Chaque catégorie de composant est identifiée par un identificateur global unique (GUID). Lorsqu’un contrôle est installé, il s’inscrit lui-même en tant que contrôle dans le registre système à l’aide de l’ID de catégorie de composant pour le contrôle. Consultez Auto-inscription pour les contrôles. Dans l’auto-inscription des contrôles, il inscrit également les catégories de composants qu’il implémente et les catégories de composants qu’il nécessite la prise en charge d’un conteneur afin d’héberger correctement le contrôle.
Lorsqu’un conteneur de contrôles propose des contrôles à insérer à l’utilisateur, il permet uniquement à l’utilisateur de sélectionner et d’instancier les contrôles qui seront en mesure de fonctionner correctement dans cet environnement. Par exemple, si le conteneur de contrôle ne prend pas en charge la liaison de données, le conteneur ne permet pas à l’utilisateur de sélectionner et d’instancier les contrôles qui ont une entrée dans le Registre indiquant qu’ils nécessitent la catégorie de composant databinding. Une boîte de dialogue commune pour l’insertion de contrôle et les API pour gérer les entrées du Registre sont disponibles.
Les catégories de composants ne sont pas cumulatives ou exclusives. Un contrôle peut nécessiter n’importe quelle combinaison de catégories de composants pour fonctionner. Un contrôle qui n’a aucune entrée requise pour les catégories de composants peut être censé être capable de fonctionner dans n’importe quel conteneur de contrôle et ne nécessiter aucune fonctionnalité spécifique d’un conteneur de contrôle pour fonctionner.
Les catégories de composants suivantes sont identifiées ici, si nécessaire, des spécifications plus détaillées des catégories peuvent être disponibles.
- ISimpleFrameSite contrôle confinement.
- Liaison de données simple via l’interface IPropertyNotifySink .
- Liaison de données avancée (prise en charge par les interfaces de liaison de données supplémentaires de VB4.0).
- Interfaces privées Visual Basic - IVBFormat, IVBGetControl
- Contrôles internet.
- Contrôles sans fenêtre.
Il ne s’agit pas d’une liste définitive de catégories; d’autres catégories seront probablement définies à l’avenir à mesure que de nouvelles exigences seront identifiées. Une liste à jour des catégories de composants est disponible auprès de Microsoft ; cette liste reflète les catégories de composants qui ont été identifiées par Microsoft et tous les autres fournisseurs qui ont informé Microsoft.
Il est important de se rappeler que les contrôles doivent tenter de fonctionner dans autant d’environnements que possible. Si cela est possible, le contrôle doit dégrader ses fonctionnalités lorsqu’il est placé dans un conteneur qui ne prend pas en charge certaines interfaces. L’objectif des catégories de composants est d’éviter une situation où le contrôle est placé dans un environnement qui ne convient pas et où le contrôle ne peut pas accomplir la tâche souhaitée. En règle générale, un contrôle doit se dégrader correctement lorsque les interfaces ne sont pas présentes. Un contrôle peut choisir d’informer l’utilisateur avec une boîte de message que certaines fonctionnalités ne sont pas disponibles ou de documenter clairement les fonctionnalités requises d’un conteneur de contrôle pour des performances optimales.
Notez que les anciens contrôles et conteneurs n’utilisent pas de catégories de composants et s’appuient plutôt sur le contrôle mot clé présent sur le contrôle dans le Registre. Pour être reconnus par les contrôles de conteneurs plus anciens peuvent souhaiter inscrire les mot clé de contrôle dans le registre, les développeurs de contrôle doivent case activée que le contrôle peut être hébergé avec succès dans ces conteneurs avant de le faire. Les conteneurs qui utilisent des catégories de composants peuvent les utiliser avec succès pour héberger des contrôles plus anciens, car la DLL de catégorie de composants gère le mappage. Une catégorie distincte existe pour les contrôles plus anciens CATID_ControlV1 afin qu’un conteneur puisse éventuellement les exclure si nécessaire.
Comme les catégories de composants sont identifiées par des GUID, il est possible pour les conteneurs qui offrent des fonctionnalités spécifiques d’avoir leurs propres ID de catégorie, générés à l’aide d’un outil de génération GUID. Toutefois, cela peut éventuellement compromettre l’avantage de l’interopérabilité des contrôles et des conteneurs. Il est donc préférable d’utiliser autant que possible des catégories de composants existantes. Les fournisseurs sont encouragés à consulter ensemble lors de la définition de nouvelles catégories de composants pour s’assurer qu’elles répondent aux exigences courantes de la Place de marché et qu’elles respectent l’esprit d’interopérabilité des contrôles ActiveX.
Rubriques connexes