任务栏扩展
从 Windows 7 开始,任务栏已大幅扩展,其指导原则是让用户尽快高效地到达何处。 为此,用户需要完成的应用程序窗口、文件和命令现在集中到一个任务栏按钮中,用于合并以前分散的信息源和控件。 用户现在可以在一个位置查找单个文档或选项卡的常见任务、最近和频繁的文件、警报、进度通知和缩略图。
统一启动和切换
从 Windows 7 任务栏开始,快速启动不再是单独的工具栏。 快速启动通常包含的启动器快捷方式现在固定到任务栏本身,与当前正在运行的应用程序的按钮混为一起。 当用户从固定启动器快捷方式启动应用程序时,只要应用程序正在运行,图标就会转换为应用程序的任务栏按钮。 当用户关闭应用程序时,按钮将还原为图标。 但是,启动器快捷方式和正在运行应用程序的按钮只是 Windows 7 任务栏按钮的不同形式。
默认情况下,新安装会固定一小组应用程序。 除此之外,只有用户可以固定其他应用程序;不允许应用程序以编程方式固定。
“快速启动”中的“显示桌面”功能现在位于任务栏最右侧。 将鼠标悬停在此区域会导致所有活动窗口变为透明,显示桌面。 单击该区域将执行最小化所有窗口并切换到桌面的熟悉作。
在应用程序运行时,其任务栏按钮将成为访问以下所有功能的单一位置,每个功能都在下面进行了详细讨论。
- 任务:常见的应用程序命令,即使应用程序未运行也是如此。
- 目标:最近和经常访问特定于应用程序的文件。
- 缩略图:窗口切换,包括各个选项卡和文档的切换目标。
- 缩略图工具栏:缩略图本身中的基本应用程序控件。
- 进度条 和 图标覆盖:状态通知。
任务栏按钮可以表示启动器、单个应用程序窗口或组。 将称为应用程序用户模型 ID(AppUserModelID)的标识符分配给每个组。 可以指定 AppUserModelID 来替代标准任务栏分组,这样窗口就可以成为同一组的成员,否则它们可能不会被视为此类成员。 当鼠标悬停在组的任务栏按钮上时,组的每个成员都会在缩略图浮出控件中单独提供预览。 请注意,分组本身仍然是可选的。
从 Windows 7 开始,任务栏按钮现在可以由用户通过拖放作重新排列。
注意
尽管不再有快速启动 UI,但快速启动文件夹(FOLDERID_QuickLaunch)仍可用于向后兼容。 但是,新应用程序不应要求在安装过程中向快速启动添加图标。
有关详细信息,请参阅 应用程序用户模型 ID(AppUserModelIDs)。
跳转列表
用户通常会启动一个程序,目的是访问文档或在程序中执行任务。 游戏程序的用户可能希望以特定角色的身份进入已保存的游戏或启动,而不是从头开始重启游戏。 为了更有效地使用户实现其最终目标,目标列表 与应用程序关联的常见 任务 附加到该应用程序的任务栏按钮(以及等效的 “开始”菜单条目)。 这是应用程序的跳转列表。 无论任务栏按钮处于启动器状态(应用程序未运行),还是表示一个或多个窗口,都可以使用跳转列表。 右键单击任务栏按钮会显示应用程序的跳转列表,如下图所示。
使用固定、频繁和任务类别
默认情况下,标准跳转列表包含两个类别:最近的项和固定的项,尽管由于 UI 中仅显示包含内容的类别,因此首次启动时不会显示这两个类别。 始终存在应用程序启动图标(要启动应用程序的更多实例)、从任务栏固定或取消固定应用程序的选项,以及任何打开窗口的 关闭 命令。
目的地
最近 和 频繁 类别被视为包含目标。 目标(通常是文件、文档或 URL)是可以编辑、浏览、查看等的内容。 将目标视为一件事,而不是一个作。 通常,目标是 Shell 命名空间中的项,由 IShellItem 或 IShellLink表示。 目标列表的这些部分类似于 “开始” 菜单最近使用的文档列表(默认情况下不再显示)和常用应用程序列表,但它们特定于应用程序,因此对用户更准确和有用。 目标列表中使用的结果通过调用 SHAddToRecentDocs计算。 请注意,当用户从 Windows 资源管理器打开文件或使用通用文件对话框打开、保存或创建文件时,SHAddToRecentDocs 会自动调用,这会导致许多应用程序获取目标列表中显示的最新项目,而无需对其执行任何作。
启动目标就像使用 Open With 命令启动项一样。 应用程序会启动该目标已加载并可供使用。 还可以将目标列表中的项目从列表中拖动到删除目标,例如电子邮件。 通过将这些项目集中到目标列表中,它使用户能够更快地转到该位置,这是目标。
当项目显示在目标列表的 最近 类别(或 频繁 类别或 自定义类别 如后面的部分所述),用户可能希望确保项目始终位于列表中以便快速访问。 为此,他或她可以将该项目固定到列表中,该列表会将该项添加到固定 类别。 当用户积极处理目标时,他或她希望它很容易在手,因此会将其固定到应用程序的目标列表。 用户的工作完成后,他或她只需取消固定项目。 此用户控件使列表保持整洁且相关。
可将目标列表视为特定于应用程序的 “开始” 菜单版本。 目标列表不是快捷菜单。 可以右键单击目标列表中的每个项,以便其自己的快捷菜单。
蜜蜂属
- IApplicationDestinations::RemoveDestination
- IApplicationDestinations::RemoveAllDestinations
- IApplicationDocumentLists::GetList
- SHAddToRecentDocs
任务
跳转列表的另一个内置部分是 任务 类别。 虽然目标是一项任务,但任务是一项作,在本例中,任务是特定于应用程序的作。 换句话说,目标是名词,任务是谓词。 通常,任务 IShellLink 项,其中包含命令行参数,这些参数指示可由应用程序触发的特定功能。 同样,这个想法是集中与应用程序相关的尽可能多的信息,就像实际一样。
应用程序根据程序的功能定义任务,以及用户应对其执行的关键作。 任务应该是无上下文的,因此应用程序不需要运行它们才能正常工作。 它们也应该是普通用户在应用程序中执行的最常见作,例如撰写电子邮件或在邮件程序中打开日历、在字处理器中创建新文档、在特定模式下启动应用程序或启动其子命令之一。 应用程序不应将菜单与标准用户不需要的高级功能或一次性作(例如注册)杂乱无章。 请勿将任务用于促销项目,如升级或特价产品/服务。
强烈建议任务列表是静态的。 无论应用程序的状态或状态如何,它都应保持不变。 虽然可以动态更改列表,但应考虑这会使不期望目标列表的该部分更改的用户感到困惑。
蜜蜂属
自定义跳转列表
应用程序可以定义自己的类别,并在跳转列表中添加标准 最近 和 频繁 类别。 应用程序可以根据应用程序的体系结构和预期用途在这些自定义类别中控制自己的目标。 以下屏幕截图显示了具有历史记录类别的自定义跳转列表。
如果应用程序决定提供自定义类别,则该应用程序负责填充它。 类别内容仍应特定于用户,并且应基于用户历史记录、作或两者,但通过自定义类别,应用程序可以确定要跟踪的内容以及它想要忽略的内容(可能基于应用程序选项)。 例如,音频程序可能会选择仅包括最近播放的专辑,并忽略最近播放的各个曲目。
如果用户已从列表中删除了项(始终是用户选项),则应用程序必须遵循这一点。 应用程序还必须确保列表中的项有效,或者如果删除了项,它们将无法正常进行。 可以编程方式删除列表的各个项或整个内容。
目标列表中的项数上限由系统根据各种因素(如显示分辨率和字号)确定。 如果所有类别中的所有项没有足够的空间,则会从下到上截断它们。
蜜蜂属
缩略图工具栏
若要在不使用户还原或激活应用程序窗口的情况下提供对特定窗口的键命令的访问权限,可以在该窗口的缩略图预览中嵌入活动工具栏控件。 例如,Windows Media Player 可能提供标准媒体传输控件,例如播放、暂停、静音和停止。 UI 在缩略图下方显示此工具栏,如下图所示,它不涵盖其任何部分。
此工具栏只是熟悉的标准工具栏通用控件。 最多有七个按钮。 每个按钮的 ID、图像、工具提示和状态都在结构中定义,然后传递给任务栏。 应用程序可以根据当前状态显示、启用、禁用或隐藏缩略图工具栏中的按钮。
由于显示缩略图的空间有限,并且要显示的缩略图数量可变,因此不能保证应用程序具有给定的工具栏大小。 如果空间受到限制,工具栏中的按钮将从右到左截断。 因此,在设计工具栏时,应确定与按钮关联的命令的优先级,并确保由于空间问题而最重要且不太可能被删除。
注意
当应用程序显示窗口时,其任务栏按钮由系统创建。 当按钮已到位时,任务栏会将 TaskbarButtonCreated 消息发送到窗口。 其值是通过调用 RegisterWindowMessage(L(“TaskbarButtonCreated”)计算的。 在应用程序调用任何 ITaskbarList3 方法之前,应用程序必须接收该消息。
应用程序接口
- ITaskbarList3::ThumbBarAddButtons
- ITaskbarList3::ThumbBarSetImageList
- ITaskbarList3::ThumbBarUpdateButtons
- THUMBBUTTON
图标覆盖
应用程序可以通过任务栏按钮向用户传达某些通知和状态,方法是在按钮上显示小覆盖层。 这些覆盖类似于用于快捷方式或安全通知的现有覆盖类型,显示在按钮右下角。 若要显示覆盖图标,任务栏必须处于默认大型图标模式,如以下屏幕截图所示。
图标覆盖充当状态的上下文通知,旨在否定单独的通知区域状态图标向用户传达该信息的需求。 例如,Microsoft Outlook 中当前显示在通知区域中的新邮件状态现在可以通过任务栏按钮上的覆盖来指示。 同样,必须在开发周期内决定哪种方法最适合应用程序。 覆盖图标旨在提供重要的长期状态或通知,例如网络状态、信使状态或新邮件。 不应向用户显示不断变化的覆盖层或动画。
由于单个覆盖覆盖在任务栏按钮上,而不是覆盖在单个窗口缩略图上,因此这是一个按组功能,而不是每个窗口。 可以从任务栏组中的各个窗口接收覆盖图标请求,但它们不会排队。 收到的最后一个覆盖是显示的覆盖。
蜜蜂属
进度栏
任务栏按钮可用于显示进度栏。 这使窗口能够向用户提供进度信息,而无需该用户切换到窗口本身。 用户可以在另一个应用程序中保持高效工作,同时一目了然地查看其他窗口中发生的一个或多个作的进度。 任务栏按钮中的进度栏反映了窗口本身中更详细的进度指示器。 此功能可用于跟踪文件副本、下载、安装、媒体燃烧或任何需要一段时间的作。 此功能不适用于通常外围作,例如网页的加载或文档的打印。 该类型的进度应继续显示在窗口的状态栏中。
任务栏按钮进度栏与熟悉的进度栏控件类似。 它可以根据作的已完成百分比或不确定的选型进度来显示确定进度,以指示作正在进行,而无需预测剩余时间。 它还可以显示作已暂停或遇到错误,并且需要用户干预。
蜜蜂属
Deskbands
在 Windows 7 之前的 Windows 版本中,可以通过桌面带(任务栏中托管的工具栏)实现类似于缩略图工具栏功能的内容。 例如,Windows Media Player 可以将任务栏最小化为一组传输控件,而不是标准按钮。 在 Windows 7 中,仍可以实现桌面带,缩略图工具栏不能全部替换它们。 并非所有应用程序都适合缩略图工具栏,目标列表中的另一个解决方案(如 deskband 或任务)可能是应用程序的正确答案;你必须确定哪个解决方案最适合你的应用程序作为开发周期的一部分。 但是,请注意,deskband 必须支持启用了半透明(“glass”)的 Windows Aero,并且 IDeskBand2 接口。
蜜蜂属
通知区域
通知区域已发生更改,使用户能够更好地控制任务栏上显示哪些图标。 所有通知图标现在默认处于隐藏状态,无法以编程方式控制可见性。 仅允许用户选择任务栏上显示哪些通知图标。 显示通知气球时,图标会暂时可见,但即使这样,用户也可以选择将其静音。 因此,当应用程序希望应用程序向用户传达该信息时,任务栏按钮上的图标覆盖将成为一个有吸引力的选择。
缩略 图
在 Windows Vista 中,将鼠标悬停在应用程序的任务栏按钮上会显示表示正在运行的窗口的缩略图。 如果任务栏已折叠应用程序的窗口,则缩略图通过显示为堆栈来表示这一点,但只有活动窗口显示在缩略图本身中。
在 Windows 7 中,组的每个成员都显示为单独的缩略图,现在也是一个切换目标。 应用程序可以定义其子级(例如真正的子窗口、单个文档或选项卡),并为每个窗口提供相应的缩略图,即使它们通常不会显示在任务栏中也是如此。 这使用户能够直接切换到所需的应用程序视图,而不是切换到应用程序,然后切换到其目标。 例如,当鼠标悬停在组的任务栏按钮上时,多文档界面(MDI)/选项卡文档界面(TDI)应用程序可以将每个文档或选项卡显示为单独的缩略图,并切换目标。
中的单个选项卡
注意
与在 Windows Vista 中一样,Aero 必须处于活动状态才能查看缩略图。
应用程序接口
- ITaskbarList3::RegisterTab
- ITaskbarList3::SetTabActive
- ITaskbarList3::SetTabOrder
- ITaskbarList3::UnregisterTab
- ITaskbarList4::SetTabProperties
窗口的缩略图表示形式通常是自动的,但在结果不是最佳的情况下,可以显式指定缩略图。 默认情况下,只有顶级窗口为其自动生成缩略图,子窗口的缩略图显示为泛型表示形式。 这可能会导致最终用户体验不太理想(甚至令人困惑)。 例如,每个子窗口的特定开关目标缩略图可提供更好的用户体验。
应用程序接口
- DwmSetWindowAttribute
- DwmSetIconicThumbnail
- DwmSetIconicLivePreviewBitmap
- DwmInvalidateIconicBitmaps
- WM_DWMSENDICONICTHUMBNAIL
- WM_DWMSENDICONICLIVEPREVIEWBITMAP
可以选择用作缩略图的窗口的特定区域。 当应用程序知道其文档或选项卡在缩略图大小上查看时将类似时,这非常有用。 然后,应用程序可以选择只显示其工作区的一部分,用户可以使用该部分来区分缩略图。 但是,将鼠标悬停在任何缩略图上可显示其后面的全屏视图,以便用户也可以快速浏览它们。
如果缩略图多于可显示的缩略图,预览将还原为旧缩略图或标准图标。
应用程序接口
若要将 固定到任务栏 添加到项的快捷菜单,通常只需要包括 IsShortCut 条目的文件类型,只需注册相应的上下文菜单处理程序即可完成。 这也适用于 固定到“开始”菜单。 有关详细信息,请参阅 注册 Shell 扩展处理程序。
相关主题