Compartilhar via


Objetos de contexto da seleção

O ambiente de desenvolvimento integrado (IDE) do Visual Studio usa um objeto de contexto de seleção global para determinar o que deve ser exibido no IDE. Cada janela no IDE pode ter seu próprio objeto de contexto de seleção enviado para o contexto de seleção global. O IDE atualiza o contexto de seleção global com valores de uma janela quando essa janela tem o foco. Para obter mais informações, consulte Comentários ao usuário.

Cada quadro de janela ou site no IDE tem um serviço chamado STrackSelection. O objeto criado pelo VSPackage que está localizado no quadro da janela deve chamar o QueryService método para obter um ponteiro para a ITrackSelection interface.

As janelas de quadro podem impedir que partes de suas informações de contexto de seleção sejam propagadas para o contexto de seleção global quando forem iniciadas. Essa capacidade é útil para janelas de ferramentas que podem ter que começar com uma seleção vazia.

A modificação do contexto de seleção global dispara eventos que os VSPackages podem monitorar. VSPackages podem executar as seguintes tarefas implementando IVsTrackSelectionEx e IVsMonitorSelection interfaces:

  • Atualize o arquivo ativo no momento em uma hierarquia.

  • Monitore alterações em determinados tipos de elementos. Por exemplo, se o VSPackage usa uma janela Propriedades especial, você pode monitorar as alterações na janela Propriedades ativa e reiniciar a sua quando necessário.

    A sequência a seguir mostra o curso típico do acompanhamento de seleção.

  1. O IDE recupera o contexto de seleção da janela recém-aberta e o coloca no contexto de seleção global. Se o contexto de seleção usar HIERARCHY_DONTPROPAGATE ou SELCONTAINER_DONTPROPAGATE, essas informações não serão propagadas para o contexto global. Para obter mais informações, consulte Comentários ao usuário.

  2. Os eventos de notificação são transmitidos para qualquer VSPackage que os solicitou.

  3. O VSPackage atua nos eventos que recebe executando atividades como atualizar uma hierarquia, reativar uma ferramenta ou outras tarefas semelhantes.

Confira também