Objets de contexte de sélection
L’environnement de développement intégré (IDE) de Visual Studio utilise un objet de contexte de sélection global pour déterminer ce qui doit être affiché dans l’IDE. Chaque fenêtre de l’IDE peut avoir son propre objet de contexte de sélection envoyé vers le contexte de sélection global. L’IDE met à jour le contexte de sélection globale avec des valeurs d’une fenêtre lorsque cette fenêtre a le focus. Pour plus d’informations, consultez Commentaires à l’utilisateur.
Chaque cadre de fenêtre ou site de l’IDE a un service appelé STrackSelection. L’objet créé par votre VSPackage qui est sitené dans le cadre de fenêtre doit appeler la QueryService
méthode pour obtenir un pointeur vers l’interface ITrackSelection .
Les fenêtres frame peuvent empêcher la propagation des parties de leurs informations de contexte de sélection au contexte de sélection global lorsqu’elles sont démarrées. Cette fonctionnalité est utile pour les fenêtres d’outils qui peuvent avoir à commencer par une sélection vide.
La modification du contexte de sélection globale déclenche des événements que VSPackages peuvent surveiller. Les VSPackages peuvent effectuer les tâches suivantes en implémentant IVsTrackSelectionEx
et IVsMonitorSelection en interfaces :
Mettez à jour le fichier actif dans une hiérarchie.
Surveillez les modifications apportées à certains types d’éléments. Par exemple, si votre VSPackage utilise une fenêtre Propriétés spéciale, vous pouvez surveiller les modifications dans la fenêtre Propriétés active et redémarrer le vôtre lorsque nécessaire.
La séquence suivante montre le cours classique du suivi de sélection.
L’IDE récupère le contexte de sélection à partir de la fenêtre nouvellement ouverte et le place dans le contexte de sélection globale. Si le contexte de sélection utilise HIERARCHY_DONTPROPAGATE ou SELCONTAINER_DONTPROPAGATE, ces informations ne sont pas propagées au contexte global. Pour plus d’informations, consultez Commentaires à l’utilisateur.
Les événements de notification sont diffusés sur n’importe quel VSPackage qui les a demandés.
VsPackage agit sur les événements qu’il reçoit en effectuant des activités telles que la mise à jour d’une hiérarchie, la réactivation d’un outil ou d’autres tâches similaires.