确定哪些项目将在内容可见时在视图窗口中显示的机制类似于OLE就地激活,但是存在显着差异。其中三个在这里讨论。
首先,视图窗口总是存在,即使它没有输入焦点。所以应该保持三个状态:
*停用
*用焦点激活
*没有焦点激活
视图窗口可以根据焦点状态呈现不同的菜单项集合。Explorer通过调用IShellView::UIActivate通知状态更改。当用户激活视图窗口时,视图对象应调用IShellBrowser::OnViewWindowActivate.
其次,Explorer不支持布局协商。相反,它允许视图窗口添加工具栏按钮或设置状态栏文本。视图窗口可能会创建无模式弹出窗口。视图对象可以调用IShellBrowser::GetControlWindow或IShellBrowser::SendControlMsg来控制它们。Explorer将使用IShellView::ForwardControlMsg从这些控件中转发适当的通知消息。
第三,浏览器允许视图窗口将菜单项添加到资源管理器的下拉菜单中(除了插入顶级下拉菜单)。换句话说,允许视图对象将菜单项插入从IShellBrowser::InsertMenus返回的子菜单。要让Explorer正确地调度菜单消息,必须使用一定范围的菜单项ID(在SHVIEW_FIRST和SHVIEW_LAST之间)。