Windows Shell 是用以提供整个 Windows Vista 用户界面 (UI) 的容器,这些 UI 包括任务栏、桌面、Windows 资源管理器以及许多对话框和界面控件。
在 Microsoft Windows 3.0 版中,原始 Shell 是以具有相应 API 的本机 Win16 DLL 形式实现的。它具有多个重叠窗口以及用于浏览和管理文件系统的程序管理器。在 Microsoft Windows 95 中,已具有许多 UI 改进、一个新的 Windows 资源管理器以及一个基于 COM 的新平台和相应 API。Microsoft Internet Explorer 版本 3 添加了 Internet 快捷键和浏览器扩展。Windows 和 Internet Explorer 的每个后续版本都产生了一些其他功能以及 Win32 和 COM API 的相应扩展。Shell 的运行库是通过许多动态链接库 (DLL) 分发的。有关详细信息,请参阅 Windows 软件开发工具包 (SDK) 中的“Windows Shell 蓝图”。
Windows Vista 中涉及数据和元数据的 Shell 功能包括同步管理器、Live Icon、Rich Preview 和属性处理程序。“针对控制面板开发”在 Windows SDK 中“基础知识”的“Windows Vista 管理”部分中进行讨论。有关详细信息,请参阅 MSDN Library 中的“针对控制面板开发”。
本文提供有关以下方面变化的信息:
•使用公共文件对话框开发 - 介绍如何对公共对话框进行编程实现:一般文件、文件打开和文件保存。这些对话框是 Windows Vista 中新增的。
•针对桌面窗口管理器 (DWM) 开发 - 介绍用于管理窗口在桌面上的可视布局和显示的新引擎,并引入一组新的 Shell API。
•使用 Windows 资源管理器开发 - 介绍新 Windows Vista 资源管理器的体系结构以及开发人员如何充分利用其组件。“使用 Internet Explorer (IE) 开发”介绍了 IE 平台和开发人员如何利用该平台,并列出了 IE 7 中的主要变化。
•使用 Internet Explorer 开发 - 介绍了 IE 7 中 UI 和功能的主要变化,并说明了软件开发人员如何扩展 IE 和与其进行交互。
•新增 Shell 接口 - 按类别列出 Windows Vista 新增的 Shell 接口。
•新增 Shell 函数 - 提供 Windows Vista 中新增 Shell 函数的分组列表。
使用公共文件对话框开发
Windows Vista 提供了公共文件对话框的更新版本,以满足大多数开发人员的需要。它不仅功能强大,而且支持自定义和可扩展性。Windows Vista Shell 通过 IFileDialog 和相关接口提供对这些新文件对话框的访问。Windows Vista 的 .NET Framework 3.0 应用程序可以通过 Windows SDK 中的互操作性支持来访问此功能。有关详细信息,请参阅 MSDN Library 中的“互操作性和迁移”。
使用公共文件对话框对象
应用程序必须获取以下接口之一,才能创建公共文件对话框实例:
•IFileDialog - 最一般的接口,是下面两个接口的父接口。
•IFileOpenDialog - 扩展 IFileDialog,使应用程序可控制特定于打开操作的某些方面(如选择多个项)。
•IFileSaveDialog - 处理“另存为”操作以及使用元数据。
所有文件对话框都是模式对话框。开发人员可以使用这些类中的方法,以获取和设置对话框的 UI 元素(如 SetTitle、SetDefaultFolder、SetFileTypes 和 GetCurrentSelection),在使用对话框时,这些元素是典型元素。通过一组位标志,可以使用 GetOptions 和 SetOptions 方法控制对话框的许多标准化行为。这些选项只能在显示对话框之前进行设置; 否则,SetOptions 方法将返回错误。使用 GetResult 方法,或者在启用 FOS_ALLOWMULTISELECT 选项的情况下使用 IFileOpenDialog,可以检索最终的用户选择。
处理文件对话框事件
虽然实例化文件对话框对象可提供相应公共文件对话框的主要 UI 和功能,但是在一些客户端中,实际使用这些对话框时,要求开发人员访问由对话框操作或对话框的单个控件生成的事件。
IFileDialogEvents 接口提供了指示用户操作的方法和可在公共文件对话框中通知事件的方法。有关处理文件对话框事件的详细信息,请参阅可下载的帮助文件(可从此处下载)。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。
自定义公共文件对话框
除了可以通过主要对话框接口和事件接口进行 UI 和行为自定义外,开发人员还可以通过所提供的 IFileDialogCustomize 接口将其他公共控件添加到该对话框的一组标准控件之上或之下。这些控件包括 PushButton、ComboBox、EditBox、CheckBox 和 RadioButtonList。有关自定义公共文件对话框的详细信息,请参阅可下载的帮助文件(可从此处下载)。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。
针对桌面窗口管理器 (DWM) 开发
桌面窗口管理器 (DWM) 是 Windows Vista 中的新增组件,用于管理 Windows Vista 桌面的可视布局和显示,以及协调应用程序窗口的显示。在 Windows 早期版本中,应用程序直接绘制到显示设备。DWM 先使用“桌面组合”将某个表面(如应用程序的窗口)绘制到屏幕外的缓冲区,然后再将该表面与所有其他表面组合呈现到桌面。有关针对 DWM 开发的详细信息,请参阅可下载的帮助文件。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。
使用 Windows 资源管理器开发
Windows Vista 中的 Windows 资源管理器是一个功能强大的资源浏览和管理应用程序。通过 Explorer.exe 或 IExplorerBrowser Shell 接口,可以将 Windows 资源管理器作为一个集成整体来访问。
使用 ShellExecuteEx 或类似的函数,可以将 Windows 资源管理器 (Explorer.exe) 作为一个单独进程生成。Microsoft 帮助和支持站点上的“Windows 资源管理器命令行选项”一文中对命令行选项进行了介绍。
使用 IShellWindows/CLSID_ShellWindows 可以发现打开的资源管理器窗口并对其进行编程; 使用 IWebBrowser2/CLSID_ShellBrowserWindow 可以创建 Windows 资源管理器的新实例。
在可下载的帮助文件(可从此处下载)中,可以找到介绍如何使用 Windows 资源管理器自动模型来创建和发现正在运行的资源管理器窗口的 C++ 代码示例。要在下载的帮助文件中查找本文,请展开 Fundamentals,再展开 Windows Shell (Windows Vista),然后展开并单击 Developing for Windows Shell。
使用 IExplorerBrowser Shell 接口可以承载 Windows 资源管理器客户端区域。Windows 资源管理器客户端和命名空间树控件是 Windows Vista 的标准组件,这些接口是公共接口。因此,开发人员可以将这些接口作为构建组件重用。这些控件的一个常见用途是,创建适合于问题领域的自定义资源管理器。
Windows 资源管理器中的控件按功能分为以下几类:导航控件、命令控件、属性和预览控件、筛选和视图控件以及 Listview 控件。
导航控件
导航控件可帮助用户确定上下文和导航关联的逻辑域空间(称为页面空间)。例如,Windows 资源管理器的页面空间是 Shell 命名空间。页面空间由零个或多个页面组成。
下表列出并说明在 Windows Vista 操作系统的 Windows 资源管理器中可用的导航控件。
导航控件说明
Address Bar(Breadcrumb 控件)显示页面空间中当前页面的地址。可以单击 Breadcrumb 按钮向上导航到页面空间中的任何上级。用户仍然可以键入要导航的 URL 和路径。
Folder Tree提供为大型页面空间优化的新版本树控件。
Travel允许通过 Web 样式按钮(如“后退”和“前进”)进行相对导航。
Title显示当前的资源管理器名称和上下文。
Pagespace显示页面空间的当前分支。可以按不同条件对页面进行排序。用户可以单击某个页面以导航到该页面。
更详细信息,请点击查看