文件查看器结构与实现

【勇芳软件工作室】汉化HomePreviousNext

文件查看器是进程内服务器DLL中的OLE组件对象,其中对象实现IPersistFileIFileViewer 【】接口。进程内服务器导出DllGetClassObjectDllCanUnloadNow函数,使用IClassFactory接口实现类工厂对象,并实现具有所需接口的文件查看器对象。下图显示了文件查看器的结构。

文件查看器最好在具有给定接口的DLL中实现的原因有很多。一般来说,一个DLL加载速度更快,通常是一个小包装。将来,这些相同的DLL将提供其他非用户界面功能,如内容索引,组件对象DLL将是访问这些功能的最有效和最快速的方法。在某些情况下,文件查看器对象可能需要通过自己的消息循环显示弹出窗口和进程消息,如Windows 95所示。当与Stub进程(如Quick View)一起使用时,DLL结构仍然允许这一点,它使文件查看器DLL有权执行消息循环。

文件查看器对象中的IPersistFile接口旨在成为向对象提供文件路径的通用机制。从那时起,加载对象的组件可以要求它使用该文件执行任何数量的事情。通过快速查看,Windows 95 shell通过使用IFileViewer::ShowInitialize 【】IFileViewer::Show成员函数来请求对象来显示文件,或者要求对象使用IFileViewer::PrintTo成员函数将文件打印到特定打印机。将来,shell可能会要求对象执行内容索引,这将通过除IFileViewer 【.】之外的接口进行。因此,IPersistFile的文件加载成员函数与执行的操作是分开的该文件,这就是为什么IFileViewer不仅仅使用自己的加载成员函数进行扩展。后一个选项更有效率(因为它避免了没有实现的IPersistFile entrypoint函数),但是这里给出的设计更容易扩展。