WEB开发网
开发学院操作系统Windows Vista Windows Vista 和 Office: 使用托管预览处理程序框... 阅读

Windows Vista 和 Office: 使用托管预览处理程序框架以自己的方式查看数据

 2009-02-09 17:43:48 来源:WEB开发网   
核心提示: public abstract class PreviewHandler :IPreviewHandler, IPreviewHandlerVisuals, IOleWindow, IObjectWithSite{ ... }它隐藏了所有困难的实现细节(但实际上,可以看到这根本不那么困难)

public abstract class PreviewHandler :
  IPreviewHandler, IPreviewHandlerVisuals, IOleWindow, IObjectWithSite
{ ... }

它隐藏了所有困难的实现细节(但实际上,可以看到这根本不那么困难)。但请注意,PreviewHandler 既没有实现 IInitializeWithFile,也没有实现 IInitializeWithStream。它们都是从 PreviewHandler 派生的两个抽象类中实现:

public abstract class StreamBasedPreviewHandler :
  PreviewHandler, IInitializeWithStream { ... }
public abstract class FileBasedPreviewHandler :
  PreviewHandler, IInitializeWithFile { ... }

若要实现自定义预览处理程序,需要从 StreamBasedPreviewHandler 或 FileBasedPreviewHandler 派生新类,并重写一个方法。下面是我的 XmlPreviewHandler 类中实现的方法:

public sealed class XmlPreviewHandler : FileBasedPreviewHandler
{
  protected override PreviewHandlerControl
    CreatePreviewHandlerControl()
  {
    return new XmlPreviewHandlerControl();
  }
}

CreatePreviewHandlerControl 方法返回您编写的从 StreamBasedPreviewHandlerControl 或 FileBasedPreviewHandlerControl 派生的自定义类型的实例。二者都派生自我的 PreviewHandlerControl 抽象基类:

public abstract class FileBasedPreviewHandlerControl :
  PreviewHandlerControl { ... }
public abstract class StreamBasedPreviewHandlerControl :
  PreviewHandlerControl { ... }
public abstract class PreviewHandlerControl : Control
{
  public abstract void Load(FileInfo file);
  public abstract void Load(Stream stream);
  public virtual void Unload() { ... }
}

如名称所示,在应当加载和预览文件或流时,将调用 Load 方法。同样,在应当关闭当前预览时,将调用 Unload 方法。然后,自定义 PreviewHandlerControl 负责从合适的类型(FileBasedPreviewHandlerControl 或 StreamBasedPreviewHandlerControl)派生,重写 Load 方法,并创建显示文件或流时需要的任何 Windows 窗体控件。在我的 XML 预览处理程序中,我只创建了 WebBrowser 控件,并将 XML 文档加载到其中,以使 Windows Vista 外壳程序用户获得具有与 Internet Explorer® 相同的整齐打印效果的 XML。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Windows Vista Office

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接