Interfaccia utente della proprietà del progetto
Un sottotipo di progetto può utilizzare gli elementi nella finestra di dialogo di Pagine delle proprietà di progetto quando vengono incluse nel progetto di base, nascondere o dispongono i controlli di sola lettura e l'intera pagina come fornito, o aggiungere le pagine specifiche dei sottotipi di progetto nella finestra di dialogo di Pagine delle proprietà .
Estensione della finestra di dialogo delle proprietà di progetto
Le estensioni e la configurazione del progetto sottotipo di un'automazione di risorse passare agli oggetti. Queste estensioni implementano l'interfaccia di IFilterProperties per eseguire determinate proprietà nascoste o di sola lettura. La finestra di dialogo di Pagine delle proprietà del progetto di base, implementata dal progetto di base, rispettano il filtro eseguito dagli Extender di automazione.
Il processo dell'estensione della finestra di dialogo di Proprietà del progetto è delimitato di seguito:
Il progetto di base recupera le estensioni il tipo di progetto implementando l'interfaccia di IInternalExtenderProvider . Individuare, l'automazione di progetto e gli scopi di esplorazione di configurazione del progetto di base qualsiasi implementare questa interfaccia.
L'implementazione di IInternalExtenderProvider per l'oggetto di esplorazione di progetto e il delegato dell'oggetto ActiveX di progetto all'implementazione di IInternalExtenderProvider aggregatore di sottotipo di progetto (ovvero che QueryInterface per IInternalExtenderProvider sull'oggetto del progetto di IVsHierarchy ).
L'oggetto di base della navigazione di configurazione del progetto implementa anche IInternalExtenderProvider direttamente per impostare nell'Extender di automazione dall'oggetto di configurazione sottotipo di progetto. I delegati di implementazione l'interfaccia di IInternalExtenderProvider implementata dall'aggregatore sottotipo di progetto.
GetProjectItem, implemented by the project configuration browse object, returns the IVsHierarchy object.
GetCfg, anche implementato dall'oggetto di esplorazione di configurazione del progetto, restituisce l'oggetto di IVsCfg .
Un sottotipo di progetto può determinare i CATID appropriati per vari scopi allungabili del progetto di base in fase di esecuzione recupero dei seguenti valori di __VSHPROPID2 :
Per determinare i CATID per l'ambito del progetto, il sottotipo di progetto recupera le proprietà di precedenza per VSITEMID_ROOT da VSITEMIDtypedef. Un sottotipo di progetto può inoltre essere necessario controllare che le pagine della finestra di dialogo di Pagine delle proprietà visualizzare per il progetto, sia dipendenti dalla configurazione che indipendente di configurazione. Alcuni sottotipi di progetto possono essere necessario rimuovere le pagine incorporate e di aggiungere pagine specifiche del sottotipo di progetto. A tale scopo, il progetto client gestito chiama il metodo di GetProperty per le proprietà seguenti:
VSHPROPID_PropertyPagesCLSIDList — a semicolon-delimited list of CLSIDs of configuration-independent property pages.
VSHPROPID_CfgPropertyPagesCLSIDList —un elenco delimitato da punti e virgola dei CLSID delle pagine delle proprietà dipendenti dalla configurazione.
Poiché il sottotipo di progetto aggrega l'oggetto di IVsHierarchy , può eseguire l'override della definizione di queste proprietà per verificare che le finestre di dialogo di Pagine delle proprietà visualizzare. Il sottotipo di progetto può recuperare le proprietà del progetto di base interno e quindi aggiungere o rimuovere in base alle esigenze i CLSID.
Le nuove pagine delle proprietà aggiunte da un sottotipo di progetto vengono passate un oggetto di esplorazione di configurazione di progetto dall'implementazione di progetto di base. Questo oggetto di esplorazione di configurazione del progetto supporta gli Extender di automazione. Per ulteriori informazioni sulle estensioni didi automazione, vedere Implementazione e utilizzo delle estensioni di automazione. Le pagine delle proprietà implementate dalla chiamata Extender sottotipo di progetto per recuperare il proprio oggetto di esplorazione di configurazione sottotipo di progetto che estende lo scopo di esplorazione di configurazione di progetto di base.