选择上下文对象
Visual Studio 集成开发环境(IDE)使用全局选择上下文对象来确定应在 IDE 中显示的内容。 IDE 中的每个窗口都可以有自己的选择上下文对象推送到全局选择上下文。 当窗口具有焦点时,IDE 会使用窗口中的值更新全局选择上下文。 有关详细信息,请参阅 “向用户反馈”。
IDE 中的每个窗口框架或站点都有一个名为 的服务 STrackSelection。 VSPackage 在窗口框架中创建的对象必须调用 QueryService
该方法以获取指向接口的 ITrackSelection 指针。
框架窗口可以阻止部分选择上下文信息在启动时传播到全局选择上下文。 此功能对于可能需要从空选择开始的工具窗口非常有用。
修改全局选择上下文会触发 VSPackage 可以监视的事件。 VSPackage 可以通过实现 IVsTrackSelectionEx
和 IVsMonitorSelection 接口执行以下任务:
更新层次结构中的当前活动文件。
监视对某些类型的元素的更改。 例如,如果 VSPackage 使用特殊的“属性”窗口,则可以监视活动属性窗口中的更改,并在需要时重启。
以下序列显示了选择跟踪的典型过程。
IDE 从新打开的窗口中检索选择上下文,并将其置于全局选择上下文中。 如果选择上下文使用HIERARCHY_DONTPROPAGATE或标准版LCONTAINER_DONTPROPAGATE,则此信息不会传播到全局上下文。 有关详细信息,请参阅 “向用户反馈”。
通知事件将广播到请求它们的任何 VSPackage。
VSPackage 通过执行更新层次结构、重新激活工具或类似任务等活动来处理它接收的事件。