原文: Create Thumbnail Extractor objects for your MFC documents types
虽然这时候发这个已经有点像个Joke,但还是发吧。。有些付出的东西,留下的东西,不是一篇两篇文章可以理清。
翻译很稚嫩,用词也不得体,甚至有些地方语意还有些模糊,那又如何?那便如何!!
【前注】这一阵子做东西,想给自已的软件加上这样的一个功能。找到此文,翻译如下。
【介绍】
缩略图显示是Windows资源管理器一个很不错的功能。但关于如何为用户的文件创建扩展缩略图的内容却比较少。我前一阵子在做可视化医学图像的软件时,就想为自己的DICOM(Digital Imaging and Communications in Medicine)软件添加这个功能。在网上搜索过后,我最后在MSDN杂志上找到了一篇相关文章: 更多Windows 2000 UI 技巧: 通过定制超文本模板文件扩展资源管理器视图(天啊,不知道是嘛意思) 这篇文件解决了这个问题,并包含了一个针对图标文件的简易图片提取器。在创建了我的DICOM软件的图片提取器之后(如果有人要,我可以提供),我也创建了一个可为涂鸦板(MFC指导)文档特别是涂鸦第五步,提取图片的框架扩展。我尝试着将这些代码以一个面向对象的方式来编写,以使得他们可以支持重用(我是面向对象思想的领导者 Paul Dilascia 的"Fans",他是MSDN杂志的作者)。 最后,我将这个涂鸦图像提取工程转换成了一个客户端程序,这样你们就可以为你自己的MFC文档容易地生成图像抽取。下面的图像就显示了一个包含了我的医药涂鸦文档的文件夹的截图:)
涂鸦板提取的COM对象
为涂鸦软件做的基于MFC的缩略图提取扩展已经被生成为一个规则的MFC动态链接库。顺着应用程序向导,我添加了一个ATL对象到工程中。 这个ATL对象是用来实现需要的两个接口:IPersistFile,用来确定当前框架中被选中的文件(译注:加载文档)。IExtractImage2(继承于IExtractImage),用来进入文件并返回能表示其内容的图像。
// ScribbleExtractor.h class ATL_NO_VTABLE CScribbleExtractor : public CComObjectRootEx , public CComCoClass , public IPersistFile, public IExtractImage2 { public: ... // ScribbleExtractor.cpp // IExtractImage::Extract HRESULT CScribbleExtractor::Extract(HBITMAP* phBmpThumbnail) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); theApp.LoadDoc(m_szFile); m_hPreview = theApp.CreateThumbnail(m_bmSize); *phBmpThumbnail = m_hPreview; return NOERROR; } ... // Code for other interface functions is omitted since it is boiterblate.CExtractImageApp 一般应用类
正如你看到的,COM对象为主程序对象做了加载文档和生成缩略图这两件事儿。因为从CWinApp继承下来的类可以决定支持的文件类型,并通过文档管理机制创建对应的文档对象,这将会很方便。为了能够将尽可能多的代码实现重用,我实

本文档介绍了如何为MFC文档类型创建缩略图提取器,特别针对涂鸦板文档。通过COM对象和MFC扩展,实现了IPersistFile和IExtractImage2接口,以加载和生成文件的缩略图。提供了调试技巧和一个缩略图工程向导,帮助开发者轻松为自己的MFC应用添加类似功能。

1万+

被折叠的 条评论
为什么被折叠?



