上一篇我们对任务栏进度条的开发有了相应的了解,本篇将对缩略图预览功能进行研究。提起缩略图预览相信使用过Windows 7 的朋友一定不会陌生,它可以说是Windows 7 的一大亮点。不论运行的程序是否处于活动状态,只要将鼠标放在任务栏图标上便会出现当前程序的预览效果。如下图所示我们可以快速的在IE 缩略图中找到想看的网页。当然在Windows API 中也提供了许多开发缩略图的工具,下面我们来看看如何使用它们。
TabbedThumbnail.TabbedThumbnail 方法
在默认情况下Windows 7 会显示应用程序界面(如下图),如果想替换或增加新的缩略图,首先应通过TabbedThumbnail 类的TabbedThumbnail 方法创建一个新的缩略图(Thumbnail)。
在TabbedThumbnail 类中,有三个TabbedThumbnail 方法可以创建缩略图:
//设定父窗口和子窗口/控件
public TabbedThumbnail(IntPtr parentWindowHandle, IntPtr windowHandle)
{
if (parentWindowHandle == IntPtr.Zero)
throw new ArgumentException("Parent window handle cannot be zero.",
"parentWindowHandle");
if (windowHandle == IntPtr.Zero)
throw new ArgumentException("Child control's window handle cannot be zero.",
"windowHandle");
WindowHandle = windowHandle;
ParentWindowHandle = parentWindowHandle;
}
//设定父窗口和子控件
public TabbedThumbnail(IntPtr parentWindowHandle, Control control)
{
if (parentWindowHandle == IntPtr.Zero)
throw new ArgumentException("Parent window handle cannot be zero.",
"parentWindowHandle");
if (control == null)
throw new ArgumentNullException("control");
WindowHandle = control.Handle;
ParentWindowHandle = parentWindowHandle;
}
//设定父窗口或WPF子控件,以及两者的偏移量
public TabbedThumbnail(Window parentWindow, UIElement windowsControl,
Vector peekOffset)
{
if (windowsControl == null)
throw new ArgumentNullException("control");
if (parentWindow == null)
throw new ArgumentNullException("parentWindow");
WindowHandle = IntPtr.Zero;
WindowsControl = windowsControl;
WindowsControlParentWindow = parentWindow;
ParentWindowHandle = (new WindowInteropHelper(parentWindow)).Handle;
PeekOffset = peekOffset;
}
标签: