前些天在论坛上发帖,询问有关Windows文件夹中显示Excel文件预览的问题。在Excel保存文件之前选择【文件】——>【属性】——>【保存文件预览】,这样保存成的Excel文件在Window文件夹左面的详细信息面板中可以看到预览图片,向JPG图片一样。安装了PDF阅读软件也一样。
有人回复说使用IFileViewer,于是花了两天时间调研Windows shell编程,下了好几本有关Windows Shell编程的书籍,都没有找到IFileViewer的使用方法,本人对COM技术懂一些,但没有太多的时间系统的学习一下Windows Shell。于是问题滞留不前。
有一天忽然间发现在文件夹中以缩略图的方式浏览,也可以看到预览图片,于是就想到换一种方法,得到Windows的文件缩略图,然后将其显示在窗口上。事实证明该方法确实有效。原来的想法是,用IFileViewer加载一个文件,然后传进去一个窗口句柄,就可以显示该文件的预览图片了。
下面介绍获得Windows文件缩略图的方法:
HRESULT
CShortCutDlg::CreateThumbnail(DWORD dwWidth, DWORD dwHeight, HBITMAP* pThumbnail)
{
LPITEMIDLIST pidlItems = NULL, pidlURL = NULL, pidlWorkDir = NULL;
ULONG ulParseLen = 0;
HRESULT hr;
WCHAR pszPath[MAX_PATH];
DWORD dwPriority = 0, dwFlags = IEIFLAG_ASPECT;
SIZE size = { dwWidth, dwHeight };
IExtractImage* peiURL = NULL; // nterface is used to request a thumbnail image from a Shell folder
IShellFolder* psfDesktop = NULL;
IShellFolder* psfWorkDir = NULL;
IMalloc* pMalloc = NULL;