Interface de usuário de propriedade do projeto
Um subtipo de projeto pode utilizar os itens no projeto Páginas de propriedades caixa de diálogo conforme eles são fornecidos pelo projeto base, ocultar ou tornar os controles somente leitura e páginas inteiras, conforme fornecido ou adicionar páginas de subtipo específico de projeto para o Páginas de propriedades caixa de diálogo.
Estendendo a caixa de diálogo de propriedades do projeto
Um subtipo de projeto implementa extensores de automação e procurar objetos de configuração do projeto. Esses extensores implementam a IFilterProperties interface para fazer determinadas propriedades ocultas ou somente leitura. O Páginas de propriedades caixa de diálogo do projeto base, implementado pelo projeto base, que homenageia a filtragem executada pelo extensores de automação.
O processo de estender uma A propriedade de projeto caixa de diálogo é apresentada abaixo:
O projeto base recupera os Extensores do subtipo de projeto, Implementando o IInternalExtenderProvider interface. A procurar, automação de projetos e objetos de procura de configuração do projeto do projeto base todos os implementarem esta interface.
A implementação de IInternalExtenderProvider para o objeto procurado do projeto e o objeto de projeto de automação delegar para o IInternalExtenderProvider implementação do agregador de subtipo de projeto (ou seja, eles QueryInterface para IInternalExtenderProvider no IVsHierarchy objeto project).
Procurar objeto de configuração do projeto base também implementa IInternalExtenderProvider ligar diretamente o extensor de automação do objeto de configuração do subtipo do projeto. Sua implementação delega para o IInternalExtenderProvider interface implementada pelo agregador de subtipo de projeto.
GetProjectItem, implementado pelo objeto de procura de configuração de projeto, retorna o IVsHierarchy objeto.
GetCfg, também é implementado pelo objeto de procura de configuração de projeto, retorna o IVsCfg objeto.
Um subtipo de projeto pode determinar as CATIDs apropriadas os vários objetos extensíveis do projeto base no tempo de execução Recuperando o seguinte __VSHPROPID2 valores:
Para determinar as escopo do projeto de CATIDs, o subtipo de projeto recupera as propriedades acima de VSITEMID_ROOT partir do VSITEMIDtypedef. Um subtipo de projeto também poderá controlar quais Páginas de propriedades páginas da caixa de diálogo são exibidas para o projeto, depende da configuração e configuração independente. Alguns subtipos de projeto, talvez seja necessário remover páginas internas e adicionar páginas específicas do subtipo de projeto. Para habilitá-los, as chamadas de projeto do cliente gerenciado a GetProperty método para as seguintes propriedades:
VSHPROPID_PropertyPagesCLSIDList — uma lista delimitada por ponto e de CLSIDs de páginas de propriedades de configuração independente.
VSHPROPID_CfgPropertyPagesCLSIDList — uma lista de CLSIDs de páginas de propriedades dependentes de configuração separados por ponto-e-vírgula.
Porque o projeto subtipo agregados a IVsHierarchy de objeto, ele pode substituir a definição dessas propriedades para controlar quais Páginas de propriedades são exibidas caixas de diálogo. O subtipo de projeto pode recuperar essas propriedades do projeto base interno e, em seguida, adicionar ou remover os CLSIDs conforme necessário.
Novas páginas de propriedade adicionadas por um subtipo de projeto são passadas de um objeto de procura de configuração do projeto a partir da implementação do projeto base. Extensores de automação oferece suporte a esse objeto de procura de configuração do projeto. Para obter mais informações sobre automaçãoextensores, consulte Implementando e usando extensores de automação. As páginas de propriedades implementadas pela chamada de subtipo do projeto Extender para recuperar o seu próprio objeto de procurar de configuração de subtipo de projeto que estende o objeto da procura de configuração do projeto base.