コンテキスト オブジェクトの選択
Visual Studio 統合開発環境 (IDE) では、グローバル選択コンテキスト オブジェクトを使用して、IDE に表示する内容を決定します。 IDE の各ウィンドウは、自身の選択コンテキスト オブジェクトをグローバル選択コンテキストにプッシュできます。 IDE では、あるウィンドウにフォーカスがあるときに、そのウィンドウの値でグローバル選択コンテキストを更新します。 詳細については、「ユーザーへのフィードバック」を参照してください。
IDE 内のウィンドウ フレームまたはサイトのそれぞれに、STrackSelection という名前のサービスがあります。 ウィンドウ フレームに配置されている VSPackage によって作成されたオブジェクトは、QueryService
メソッドを呼び出して ITrackSelection インターフェイスへのポインターを取得する必要があります。
フレーム ウィンドウでは、開始時に、自身の選択コンテキスト情報の一部をグローバル選択コンテキストに伝達しないようにすることができます。 この機能は、空の選択内容で開始する必要があるツール ウィンドウに役立ちます。
グローバル選択コンテキストを変更すると、VSPackage で監視できるイベントがトリガーされます。 VSPackage では、IVsTrackSelectionEx
インターフェイスと IVsMonitorSelection インターフェイスを実装することで、次のタスクを実行できます。
階層内の現在アクティブなファイルを更新します。
特定の種類の要素に対する変更を監視します。 たとえば、VSPackage で特別な [プロパティ] ウィンドウを使用している場合は、アクティブな [プロパティ] ウィンドウで変更を監視し、必要に応じて独自の特別なウィンドウを再起動できます。
次のシーケンスは、選択の追跡の典型的な例を示しています。
IDE が、新しく開かれたウィンドウから選択コンテキストを取得し、グローバル選択コンテキストにプッシュします。 選択コンテキストで HIERARCHY_DONTPROPAGATE または SELCONTAINER_DONTPROPAGATE が使用されている場合、その情報はグローバル コンテキストに伝達されません。 詳細については、「ユーザーへのフィードバック」を参照してください。
通知イベントが、それを要求したすべての VSPackage にブロードキャストされます。
VSPackage は、受信したイベントに対応して、階層の更新、ツールの再アクティブ化、他の類似したタスクなどのアクティビティを実行します。