Benutzeroberfläche für Projekteigenschaften
Ein Projektuntertyp kann die Elemente im Dialogfeld "Eigenschaftenseiten" des Projekts verwenden, wie sie vom Basisprojekt bereitgestellt werden, schreibgeschützte Steuerelemente und ganze Seiten wie angegeben ausblenden oder erstellen oder projektuntertypspezifische Seiten zum Dialogfeld "Eigenschaftenseiten" hinzufügen.
Erweitern des Dialogfelds "Projekteigenschaft"
Ein Projektuntertyp implementiert Automatisierungs-Extender und Projektkonfigurations-Browseobjekte. Diese Extender implementieren die IFilterProperties Schnittstelle, um bestimmte Eigenschaften ausgeblendet oder schreibgeschützt zu machen. Das Dialogfeld "Eigenschaftenseiten " des Basisprojekts, das vom Basisprojekt implementiert wird, berücksichtigt die Filterung, die von den Automatisierungs extendern durchgeführt wird.
Der Prozess zum Erweitern eines Dialogfelds "Project-Eigenschaft " wird unten beschrieben:
Das Basisprojekt ruft die Extender aus dem Projektuntertyp ab, indem die IInternalExtenderProvider Schnittstelle implementiert wird. Die Browse-, Projektautomatisierungs- und Projektkonfigurationsobjekte des Basisprojekts implementieren diese Schnittstelle.
Die Implementierung des IInternalExtenderProvider Projektstöberobjekts und des Projektautomatisierungsobjektdelegats an die IInternalExtenderProvider Implementierung des Projektuntertypaggregators (d. s
QueryInterface
. für IInternalExtenderProvider das IVsHierarchy Projektobjekt).Das Basisprojektkonfigurations-Browse-Objekt implementiert außerdem, um direkt im Automatisierungs extender aus dem Projektuntertypkonfigurationsobjekt IInternalExtenderProvider zu verbinden. Die Implementierung delegiert an die Schnittstelle, die IInternalExtenderProvider vom Untertypaggregator des Projekts implementiert wird.
GetProjectItem, das vom Projektkonfigurations-Browse-Objekt implementiert wird, gibt das IVsHierarchy Objekt zurück.
GetCfg, auch vom Projektkonfigurations-Browse-Objekt implementiert, gibt das IVsCfg Objekt zurück.
Ein Projektuntertyp kann die entsprechenden CATIDs für die verschiedenen erweiterbaren Objekte des Basisprojekts zur Laufzeit ermitteln, indem die folgenden __VSHPROPID2 Werte abgerufen werden:
Um die CATIDs für den Projektbereich zu ermitteln, ruft der Projektuntertyp die oben genannten Eigenschaften für VSITEMID ab. Stamm aus der VSITEMID typedef
. Ein Projektuntertyp kann auch steuern, welche Eigenschaftenseiten-Dialogfeldseiten für das Projekt angezeigt werden, sowohl konfigurationsabhängig als auch konfigurationsunabhängig. Einige Projektuntertypen müssen möglicherweise integrierte Seiten entfernen und projektuntertypspezifische Seiten hinzufügen. Um dies zu aktivieren, ruft das verwaltete Clientprojekt die Methode für die GetProperty folgenden Eigenschaften auf:
VSHPROPID_PropertyPagesCLSIDList
— eine durch Semikolons getrennte Liste von CLSIDs von konfigurationsunabhängigen Eigenschaftenseiten.VSHPROPID_CfgPropertyPagesCLSIDList —
eine durch Semikolons getrennte Liste von CLSIDs von konfigurationsabhängigen Eigenschaftenseiten.
Da der Projektuntertyp das IVsHierarchy Objekt aggregiert, kann er die Definition dieser Eigenschaften überschreiben, um zu steuern, welche Dialogfelder für Eigenschaftenseiten angezeigt werden. Der Projektuntertyp kann diese Eigenschaften aus dem inneren Basisprojekt abrufen und dann bei Bedarf CLSIDs hinzufügen oder entfernen.
Neue Eigenschaftenseiten, die von einem Projektuntertyp hinzugefügt werden, werden einem Projektkonfigurations-Browseobjekt aus der Basisprojektimplementierung übergeben. Dieses Projektkonfigurations-Browse-Objekt unterstützt Automation Extender. Weitere Informationen zu AutomationExtenders finden Sie unter Implementieren und Verwenden von Automatisierungserweiterungen. Die Eigenschaftenseiten, die vom Projektuntertypaufruf Extender[] implementiert wurden, um ein eigenes Projektuntertypkonfigurationsobjekt abzurufen, das das Konfigurationsstöberobjekt des Basisprojekts erweitert.