Категории компонентов и принцип их работы
Категории компонентов определяют эти области функциональных возможностей, которые поддерживает и требует компонент программного обеспечения, запись реестра используется для каждой категории или определенной области функциональных возможностей. Каждая категория компонентов определяется глобально уникальным идентификатором (GUID), когда элемент управления устанавливается в качестве элемента управления в системном реестре с помощью идентификатора категории компонентов для элемента управления, см . раздел "Самостоятельная регистрация элементов для элементов управления". В элементах саморегистрирования элементов также регистрируются те категории компонентов, которые он реализует, и эти категории компонентов, которые требуется для поддержки контейнера для успешного размещения элемента управления.
Когда контейнер элементов управления предлагает пользователю элементы управления для вставки, он позволяет пользователю выбирать и создавать экземпляры этих элементов управления, которые смогут работать должным образом в этой среде. Например, если контейнер управления не поддерживает привязку данных, контейнер не позволит пользователю выбирать и создавать экземпляры этих элементов управления, имеющие запись в реестре, которая означает, что для них требуется категория компонентов привязки данных. Доступно общее диалоговое окно для вставки элементов управления и API для обработки записей реестра.
Категории компонентов не являются накопительными или эксклюзивными, элемент управления может требовать любой набор категорий компонентов для функционирования. Элемент управления, не имеющий необходимых записей для категорий компонентов, может быть способен функционировать в любом контейнере элементов управления и не требует каких-либо конкретных функций контейнера управления для работы.
Ниже перечислены категории компонентов, где могут быть доступны более подробные спецификации категорий.
- Элемент управления ISimpleFrameSite .
- Простая привязка данных через интерфейс IPropertyNotifySink.
- Расширенная привязка данных (как поддерживается дополнительными интерфейсами привязки данных VB4.0).
- Частные интерфейсы Visual Basic — IVBFormat, IVBGetControl
- Элементы управления с поддержкой Интернета.
- Элементы управления без окон.
Это не окончательный список категорий; Дополнительные категории, скорее всего, будут определены в будущем по мере определения новых требований. Актуальный список категорий компонентов доступен от Корпорации Майкрософт; этот список отражает эти категории компонентов, которые были определены корпорацией Майкрософт и любыми другими пользователями, о которых поставщики сообщили корпорации Майкрософт.
Важно помнить, что элементы управления должны пытаться работать в максимально возможном количестве сред. Если это возможно, элемент управления должен снизить его функциональность при размещении в контейнере, который не поддерживает определенные интерфейсы. Цель категорий компонентов — предотвратить ситуацию, когда элемент управления помещается в среду, которая не подходит, и элемент управления не может достичь требуемой задачи. Как правило, элемент управления должен ухудшаться корректно, если интерфейсы отсутствуют, элемент управления может посоветовать пользователю с полем сообщения, что некоторые функциональные возможности недоступны или четко документируют функциональные возможности, необходимые контейнеру элементов управления для оптимальной производительности.
Обратите внимание, что старые элементы управления и контейнеры не используют категории компонентов и вместо этого полагаются на элемент управления ключевое слово, присутствующих в реестре. Чтобы распознать старые элементы управления контейнерами, может потребоваться зарегистрировать ключевое слово элемента управления в реестре, разработчики элементов управления должны проверка, что элемент управления может быть успешно размещен в таких контейнерах перед этим. Контейнеры, использующие категории компонентов, могут успешно использовать их для размещения старых элементов управления, так как библиотека DLL категории компонентов обрабатывает сопоставление, отдельная категория существует для старых элементов управления CATID_ControlV1, чтобы контейнер мог при необходимости исключить их при необходимости.
Поскольку категории компонентов определяются идентификаторами GUID, это возможно для контейнеров, которые предлагают определенные функциональные возможности для создания собственных идентификаторов категорий, созданных с помощью средства создания GUID. Однако это может подорвать преимущество взаимодействия элементов управления и контейнеров, поэтому предпочтительнее, чтобы по возможности использовать существующие категории компонентов. Поставщики рекомендуется проконсультироваться вместе при определении новых категорий компонентов, чтобы убедиться, что они соответствуют общим требованиям Marketplace, и следуйте духу взаимодействия элементов ActiveX.
См. также