Categorías de componentes y cómo funcionan

Las categorías de componentes identifican esas áreas de funcionalidad que un componente de software admite y requiere, se usa una entrada del Registro para cada categoría o área de funcionalidad identificada. Cada categoría de componente se identifica mediante un identificador único global (GUID), cuando un control se instala se registra como un control en el registro del sistema mediante el identificador de categoría de componente para el control, consulte Autoregistro para controles. Dentro de los controles autoregistro, también registrará las categorías de componentes que implementa y esas categorías de componentes que requiere un contenedor para poder hospedar correctamente el control.

Cuando un contenedor de control ofrece controles al usuario que se van a insertar, solo permite al usuario seleccionar y crear instancias de esos controles que podrán funcionar adecuadamente en ese entorno. Por ejemplo, si el contenedor de controles no admite el enlace de datos, el contenedor no permitirá al usuario seleccionar y crear instancias de esos controles que tengan una entrada en el Registro que signifique que requieren la categoría de componente de enlace de datos. Hay disponible un cuadro de diálogo común para la inserción de controles y las API para controlar las entradas del Registro.

Las categorías de componentes no son acumulativas o exclusivas, un control puede requerir cualquier combinación de categorías de componentes para funcionar. Se puede esperar que un control que no tenga entradas necesarias para las categorías de componentes pueda funcionar en cualquier contenedor de control y no requiera ninguna funcionalidad específica de un contenedor de control para funcionar.

Las siguientes categorías de componentes se identifican aquí, si es necesario, pueden estar disponibles especificaciones más detalladas de las categorías.

  • Contención del control ISimpleFrameSite.
  • Enlace de datos simple a través de la interfaz IPropertyNotifySink .
  • Enlace de datos avanzado (compatible con las interfaces de enlace de datos adicionales de VB4.0).
  • Interfaces privadas de Visual Basic: IVBFormat, IVBGetControl
  • Controles compatibles con Internet.
  • Controles sin ventana.

Esta no es una lista definitiva de categorías; es probable que se definan más categorías en el futuro a medida que se identifiquen nuevos requisitos. Hay disponible una lista actualizada de categorías de componentes de Microsoft; esta lista refleja las categorías de componentes identificadas por Microsoft y cualquier otra que acerca de qué proveedores hayan informado a Microsoft.

Es importante recordar que los controles deben intentar funcionar en tantos entornos como sea posible. Si es posible, el control debe degradar su funcionalidad cuando se coloca en un contenedor que no admite determinadas interfaces. El propósito de las categorías de componentes es evitar una situación en la que el control se coloca en un entorno que no es adecuado y el control no puede lograr su tarea deseada. Por lo general, un control debe degradarse correctamente cuando las interfaces no están presentes, un control puede optar por avisar al usuario con un cuadro de mensaje que alguna funcionalidad no está disponible o documentar claramente la funcionalidad necesaria de un contenedor de control para obtener un rendimiento óptimo.

Tenga en cuenta que los controles y contenedores antiguos no usan categorías de componentes y, en su lugar, se basan en la palabra clave de control que está presente en el control del registro. Para que los controles de contenedores más antiguos puedan reconocerlo, es posible que quiera registrar la palabra clave control en el Registro, los desarrolladores de controles deben comprobar que el control se puede hospedar correctamente en estos contenedores antes de hacerlo. Los contenedores que usan categorías de componentes pueden usarlos correctamente para hospedar controles más antiguos, ya que la DLL de categoría de componentes controla la asignación, existe una categoría independiente para los controles más antiguos CATID_ControlV1 para que un contenedor pueda excluirlos opcionalmente si es necesario.

A medida que las categorías de componentes se identifican mediante GUID, es posible que los contenedores que ofrecen una funcionalidad específica concreta tengan sus propios identificadores de categoría, generados mediante una herramienta de generación de GUID. Sin embargo, esto puede perjudicar la ventaja de la interoperabilidad de los controles y contenedores, por lo que es preferible que siempre que sea posible usar las categorías de componentes existentes. Se recomienda a los proveedores que consulten juntos al definir nuevas categorías de componentes para asegurarse de que cumplen los requisitos comunes de Marketplace y siguen el espíritu de interoperabilidad de los controles ActiveX.

Categorías del componente