Modelagem do projeto
A próxima etapa no fornecimento de automação para seu projeto é implementar os objetos de projeto padrão: as Projects coleções and ProjectItems
; os Project
objetos and ProjectItem ; e os objetos restantes exclusivos para sua implementação. Esses objetos padrão são definidos no arquivo Dteinternal.h. Uma implementação dos objetos padrão é fornecida no exemplo BscPrj. Você pode usar essas classes como modelos para criar seus próprios objetos de projeto padrão que ficam lado a lado com objetos de projeto de outros tipos de projeto.
Um consumidor de automação presume ser capaz de chamar Solution("<UniqueProjName>")
e ProjectItems (n
) em que n é um número de índice para obter um projeto específico na solução. Fazer essa chamada de automação faz com que o ambiente chame GetProperty a hierarquia de projeto apropriada, passando VSITEMID_ROOT como o parâmetro ItemID e VSHPROPID_ExtObject como parâmetro VSHPROPID. IVsHierarchy::GetProperty
Retorna um IDispatch
ponteiro para o objeto de automação que fornece a interface principal Project
, que você implementou.
Veja a seguir a sintaxe de IVsHierarchy::GetProperty
.
HRESULT GetProperty (
VSITEMID
itemid
,
VSHPROPID
propid
,
VARIANT
*pvar
);
Os projetos acomodam aninhamento e usam coleções para criar grupos de itens de projeto. A hierarquia é assim.
Projects
|- Project
|- ProjectItems (a collection of ProjectItem)
|- ProjectItem (single object) or ProjectItems (another collection)
Aninhamento significa que um ProjectItem objeto pode ser ProjectItems uma coleção ao mesmo tempo porque uma ProjectItems
coleção pode conter os objetos aninhados. O exemplo do Projeto Básico não demonstra esse aninhamento. Ao implementar o Project
objeto, você participa da estrutura semelhante a uma árvore que caracteriza o design do modelo de automação geral.
A automação do projeto segue o caminho no diagrama a seguir.
Automação de projetos
Se você não implementar um Project
objeto, o ambiente ainda retornará um objeto genérico Project
que contém apenas o nome do projeto.