共用方式為


命令的路由演算法

在 Visual Studio 指令會處理多個不同的元件。 命令從最內層的內容中,根據目前的選取範圍,路由傳送至最外層 (也就是全域的) 的內容。 如需詳細資訊,請參閱 命令可用性

命令解析的順序

命令會通過下列層級的指令內容:

  1. 增益集: 環境第一次提供任何增益集所要的命令。

  2. 優先順序的指令: 這些命令會藉由使用登錄IVsRegisterPriorityCommandTarget。 它們稱為 Visual Studio,在每個命令,且其註冊的順序呼叫。

  3. 內容功能表命令: 指令在哪兒快顯功能表上第一次供係依內容] 功能表中,同時在那之後,典型的路由命令目標。

  4. 工具列設定命令目標: 這些命令的目標註冊,當您呼叫SetupToolbar2。 pCmdTarget 參數可以是 null。 如果不是null,則此命令目標,用來更新到您正在設定] 工具列上的任何指令。 如果殼層設定您的工具列,然後將視窗框架,以傳遞pCmdTarget ,讓所有更新的命令在工具列的流經視窗外框,都甚至當它不在焦點。

  5. 工具視窗: 工具視窗,通常是實作IVsWindowPane介面,也應該實作IOleCommandTarget介面,讓工具視窗為使用中視窗時,Visual Studio 可以取得命令目標。 不過,如果 [工具] 視窗具有焦點是專案 視窗中,則命令會路由至IVsUIHierarchy介面所選取的項目中的通用父項目。 如果此選項會跨越多個專案,命令會路由至IVsSolution階層架構。 IVsUIHierarchy介面包含QueryStatusCommandExecCommand上對應的命令類似的方法IOleCommandTarget介面。

  6. 文件] 視窗中: 如果指令有其.vsct 檔案中設定 RouteToDocs 旗標,Visual Studio 尋找文件檢視物件,也就是其中一個命令目標的執行個體IVsWindowPane介面或文件物件的執行個體 (通常是IVsTextLines介面或IVsTextBuffer介面)。 如果文件檢視物件不支援的命令,Visual Studio 會傳送命令到IOleCommandTarget所傳回的介面。 (這是選擇性的介面之文件資料物件)。

  7. 目前的階層架構: 目前的階層可擁有作用中的文件視窗或階層中選取專案方案總管] 中。 尋找 Visual Studio IOleCommandTarget最新的或在使用中,階層架構實作的介面。 階層架構應該支援的階層是使用中時,即使文件視窗的專案項目具有焦點時都是有效的命令。 不過,指令套用時才方案總管] 中已焦點必須支援使用IVsUIHierarchy介面和其QueryStatusCommandExecCommand方法。

    剪下複製貼上刪除重新命名Enter,以及 DoubleClick 命令需要特殊處理。 如需有關如何處理資訊刪除移除指令中的階層,請參閱IVsHierarchyDeleteHandler介面。

  8. Global: 如果沒有先前所述的內容已處理命令,Visual Studio 會將其傳閱給擁有命令實作 VSPackage IOleCommandTarget介面。 如果 VSPackage 尚未已經載入,並未載入時呼叫 Visual Studio QueryStatus方法。 載入時才 VSPackage Exec ,會呼叫方法。

請參閱

其他資源

Command Routing in VSPackages

命令設計