Windows 2000 UI 新特点之一:信息条提示(Infotip)
原文参见:MSDN Magazine March 2000
编译/赵湘宁
本文源代码
本文假设您熟悉windows的外壳编程及ATL。
摘要: Windows 2000引入了许多很有用的用户界面新特点,我们能在自己的应用程序中定制和实现这些用户界面。本文是由一系列文章组成,将探讨包括信息提示(Infotip)、增强文件夹特性、搜索管理、图标覆盖和快速启动工具条在内的几个新的UI编程,使用它们来丰富系统外壳的功能。
阅读本篇系列文章之后,您将学会Windows 2000用户界面编程的几个新特点:
- 如何为文件提供“infotips”(信息条提示)特性;
- 如何创建一个定制的栏目管理器扩展(column handler extension),它使我们能通过Windows的资源管理器在“查看”菜单的“详细资料”栏的视图中看到新创建的文件属性栏目。
- 为了进一步扩展外壳,我们还将另外实现几个界面特点:搜索管理、清除管理、使用属性页的文件夹定制、图标覆盖、以及上下文菜单外壳扩展。
探究 Windows 2000 的几个UI新特点。可以发现Windows用户界面的几个发展趋势:首先是脚本,尤其是WSH将取代命令行;其次是新的用户界面为将来定制自己的应用程序提供了更好的(基于COM的)图形用户界面接口;第三是应用程序将与系统外壳(SHELL)结合得更紧密。
对系统外壳的简单回顾外壳扩展是一个COM进程内服务器,它由资源管理器 (Explorer) 来调用以响应系统外壳内发生的事件。只有少数几个任务是靠资源管理器与用户定义的应用来协作完成。在开始这些任务之前,资源管理器查找这些注册的模块并加载它们。从概念上讲,这些模块相当于回调函数。而回调函数是由Windows3.1引入并影响了整整一代程序员的著名编程特点。
外壳扩展需要实现一对COM接口:一个提供特定行为,另一个用于初始化目的。另外,外壳扩展必须要有精确的注册方案,它们必须在适当的地方创建正确的注册入口以便资源管理器在需要时能找到并加载它们。 下表列出了目前可获得的所有外壳扩展类型,需要的最小版本号,有关的接口和简单描述:
(表一)
| 类型 | 类型说明 | 适用于 | 版本 | 有关的接口 | 描述 |
| Context Menu | 上下文菜单 | 文件类和外壳对象 | Windows 9x | IContextMenu、IContextMenu2、IContextMenu3 |
允许在外壳对象的上下文菜单中增加新的才单项 |
| Right drag and drop | 右拖拽 | 文件类和外壳对象 | Windows 9x | IContextMenu、IContextMenu2、IContextMenu3 | 允许在右拖拽后出现的上下文菜单中增加新的才单项 |
| Drawing shell Icons | 绘制外壳图标 | 文件类和外壳对象 | Windows 9x | IExtractIcon | 对于一个文件类来说,可以选择文件在运行时应该显示那个图标 |
| Property Sheet | 属性页 | 文件类和外壳对象 | Windows 9x | IShellPropSheetExt | 向文件类属性对话框中加入另外的属性表页。也适用于控制面板应用 |
| Left drag and drop | 左拖拽 | 文件类和外壳对象 | Windows 9x | IDropTarget | 决定在外壳内用鼠标左键拖拽一个对象到另一个对象上时做什么 |
| Clipboard | 剪贴板 | 文件类和外壳对象 | Windows 9x | IDataObject | 定义如何将对象拷贝到剪贴板以及如何从剪贴板吸取对象 |
| File Hook | 文件钩 | Windows 9x | ICopyHook | 控制整个外壳内的任何文件操作。您可以允许或拒绝这些对文件的操作,但不会通知您成功或失败 | |
| Program Execution | 外壳执行程序 | 资源管理器 | 桌面更新 | IShellExecuteHook | 拦截(钩)外壳内任何程序的执行 |
| Infotip | 信息条提示 | 文件类和外壳对象 | 桌面更新 | IQueryInfo | 当鼠标移到某个文件类型文档上时显示简短文本信息 |
| Column | 栏目 | 文件夹 | Windows 2000 | IColumnProvider | 在资源管理器“查看”菜单的“详细资料”视图中增加新的栏目 |
| Icon Overlay | 图标覆盖 | 资源管理器 | Windows 2000 | IShellIconOverlay | 用定制的图像覆盖图标 |
| Search | 搜索 | 资源管理器 | Windows 2000 | IContextMenu | 在“开始”菜单的“搜索”菜单项中增加新的搜索入口 |
| Cleanup | 清除 | 清除管理器 | Windows 2000 | IEmptyVolumeCache2 | 向清除管理器中增加新的入口来恢复磁盘空间 |



相关教程