Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In Visual Studio-opdrachten worden een aantal verschillende onderdelen verwerkt. Opdrachten worden gerouteerd vanuit de binnenste context, die is gebaseerd op de huidige selectie, naar de buitenste (ook wel globale) context genoemd. Zie Beschikbaarheid van opdrachten voor meer informatie.
Volgorde van opdrachtomzetting
Opdrachten worden doorgegeven via de volgende niveaus van opdrachtcontext:
Invoegtoepassingen: De omgeving biedt eerst het commando aan de aanwezige invoegtoepassingen.
Prioriteitsopdrachten: deze opdrachten worden geregistreerd met behulp van IVsRegisterPriorityCommandTarget. Ze worden aangeroepen voor elke opdracht in Visual Studio en worden aangeroepen in de volgorde waarin ze zijn geregistreerd.
Opdrachten in het contextmenu: Een opdracht die zich in een contextmenu bevindt, wordt eerst aangeboden aan het opdrachtdoel dat wordt geleverd aan het contextmenu en daarna aan de gebruikelijke routering.
Opdrachtdoelen voor werkbalkinstellingen: deze opdrachtdoelen worden geregistreerd wanneer u SetupToolbar2 aanroept. De
pCmdTargetparameter kan zijnnull. Als dit nietnullhet geval is, wordt dit opdrachtdoel gebruikt voor het bijwerken van opdrachten op de werkbalk die u instelt. Als de shell de werkbalk instelt, wordt het vensterframe doorgegeven als zodanigpCmdTargetdat alle updates van de opdrachten op de werkbalk door het vensterframe stromen, zelfs wanneer deze niet in de focus staat.Hulpprogrammavenster: Vensters van hulpprogramma's, die doorgaans de IVsWindowPane interface implementeren, moeten ook de IOleCommandTarget interface implementeren, zodat Visual Studio het opdrachtdoel kan krijgen wanneer het venster van het hulpprogramma het actieve venster is. Als het taakvenster met de focus echter het venster Project is, wordt de opdracht doorgestuurd naar de IVsUIHierarchy interface die het algemene bovenliggende element van de geselecteerde items is. Als deze selectie meerdere projecten omvat, wordt de opdracht doorgestuurd naar de IVsSolution hiërarchie. De IVsUIHierarchy interface bevat de QueryStatusCommand en ExecCommand methoden die vergelijkbaar zijn met de bijbehorende opdrachten op de IOleCommandTarget interface.
Documentvenster: Als voor de opdracht de vlag is ingesteld in het
RouteToDocsVSCT-bestand , zoekt Visual Studio naar een opdrachtdoel voor het documentweergaveobject. Dit is een exemplaar van een IVsWindowPane interface of een exemplaar van een documentobject (meestal een IVsTextLines interface of een IVsTextBuffer interface). Als het documentweergaveobject de opdracht niet ondersteunt, stuurt Visual Studio de opdracht door naar de IOleCommandTarget interface die wordt geretourneerd. (Dit is een optionele interface voor documentgegevensobjecten.)Huidige hiërarchie: De huidige hiërarchie kan het project zijn dat eigenaar is van het actieve documentvenster of de hiërarchie die is geselecteerd in Solution Explorer. Visual Studio zoekt naar de IOleCommandTarget interface die is geïmplementeerd op de huidige of actieve hiërarchie. De hiërarchie moet opdrachten ondersteunen die geldig zijn wanneer de hiërarchie actief is, zelfs als een documentvenster van een projectitem de focus heeft. Opdrachten die alleen van toepassing zijn wanneer Solution Explorer de focus heeft, moeten echter worden ondersteund met behulp van de interface en de IVsUIHierarchy bijbehorende QueryStatusCommand en ExecCommand methoden.
De opdrachten Knippen, Kopiëren, Plakken, Verwijderen, Naam wijzigen, Enter en DoubleClick vereisen speciale verwerking. Zie de interface voor informatie over het afhandelen van opdrachten verwijderen en IVsHierarchyDeleteHandler in hiërarchieën.
Globaal: Als een opdracht niet is verwerkt door de eerder genoemde contexten, probeert Visual Studio deze te routeren naar de VSPackage die eigenaar is van een opdracht waarmee de IOleCommandTarget interface wordt geïmplementeerd. Als de VSPackage nog niet is geladen, wordt deze niet geladen wanneer Visual Studio de QueryStatus methode aanroept. De VSPackage wordt alleen geladen wanneer de Exec methode wordt aangeroepen.