Пользовательский интерфейс свойств проекта
Подтип проекта может использовать элементы в диалоговом окне "Страницы свойств проекта", так как они предоставляются базовым проектом, скрытие или создание элементов управления только для чтения и целых страниц, как показано в диалоговом окне "Страницы свойств" или добавление страниц подтипа проекта в диалоговое окно "Страницы свойств".
Расширение диалогового окна "Свойство проекта"
Подтип проекта реализует расширения автоматизации и просматривает объекты конфигурации проекта. Эти расширения реализуют IFilterProperties интерфейс, чтобы сделать определенные свойства скрытыми или доступными только для чтения. Диалоговое окно "Страницы свойств" базового проекта, реализованного базовым проектом, учитывает фильтрацию, выполняемую расширяющими средствами автоматизации.
Процесс расширения диалогового окна "Свойство проекта" описан ниже:
Базовый проект получает расширения из подтипа проекта, реализуя IInternalExtenderProvider интерфейс. Обзор, автоматизация проектов и конфигурация проекта просматривают объекты базового проекта, все реализуют этот интерфейс.
Реализация IInternalExtenderProvider объекта обзора проекта и делегата объекта автоматизации проекта реализации IInternalExtenderProvider агрегатора подтипа проекта (т. еIVsHierarchy. для
QueryInterface
IInternalExtenderProvider объекта проекта).Базовый объект конфигурации проекта также реализуется IInternalExtenderProvider для прямого подключения в расширение службы автоматизации из объекта конфигурации подтипа проекта. Его реализация делегирует интерфейс, реализованный IInternalExtenderProvider агрегатом подтипа проекта.
GetProjectItem, реализованный объектом обзора конфигурации проекта, возвращает IVsHierarchy объект.
GetCfg, также реализованный объектом обзора конфигурации проекта, возвращает IVsCfg объект.
Подтип проекта может определить соответствующие catID для различных расширяемых объектов базового проекта во время выполнения, извлекая следующие __VSHPROPID2 значения:
Чтобы определить идентификаторы CATI для проекта область, подтип проекта извлекает указанные выше свойства для VSITEMID. Корневой VSITEMID typedef
каталог из . Подтип проекта может также контролировать, какие страницы диалогового окна "Страницы свойств" отображаются для проекта, зависящей от конфигурации и независимой от конфигурации. Некоторым подтипам проекта может потребоваться удалить встроенные страницы и добавить определенные страницы подтипа проекта. Чтобы включить это, управляемый клиентский проект вызывает GetProperty метод для следующих свойств:
VSHPROPID_PropertyPagesCLSIDList
— список CLSID страниц свойств, независимых от конфигурации, с запятой.VSHPROPID_CfgPropertyPagesCLSIDList —
список CLSID страниц свойств, зависимых от конфигурации, с разделителями с запятой.
Так как подтип проекта агрегирует IVsHierarchy объект, он может переопределить определение этих свойств, чтобы управлять отображением диалоговых окон страниц свойств. Подтип проекта может получить эти свойства из внутреннего базового проекта, а затем добавить или удалить CLSID по мере необходимости.
Новые страницы свойств, добавленные подтипом проекта, передают объект обзора конфигурации проекта из базовой реализации проекта. Этот объект обзора конфигурации проекта поддерживает расширения службы автоматизации. Дополнительные сведения об AutomationExtenders см. в разделе "Реализация и использование расширений службы автоматизации". Страницы свойств, реализованные вызовом Extender[] подтипа проекта, чтобы получить собственный объект обзора подтипа проекта, который расширяет объект обзора конфигурации базового проекта.