如何取得文件的超大图标 256*256

来源:互联网 发布:php导入excel带进度条 编辑:程序博客网 时间:2024/04/29 00:37

通常我们取文件或者目录图标都是用shell函数 SHGetFileInfo。然而此函数只能取到 32*32 和16*16的图标。如果设置参数uFlags 含有SHGFI_LARGEICON取得的就是32*32的, 如果是SHGFI_SMALLICON 就是16*16的。然而在Windows 7 上的资源管理器中,选择显示缩略图它能显示很大的图标。最大的能到256*256。

但是我们的程序怎么得到这么大的图标呢?这里我们就需要函数 SHGetImageList

HIMAGELIST g_hImageList16 = NULL;HIMAGELIST g_hImageList32 = NULL;HIMAGELIST g_hImageList48 = NULL;HIMAGELIST g_hImageList256 = NULL;SHGetImageList(SHIL_SMALL, IID_IImageList, (void**)&g_hImageList16);SHGetImageList(SHIL_LARGE, IID_IImageList, (void**)&g_hImageList32);SHGetImageList(SHIL_EXTRALARGE, IID_IImageList, (void**)&g_hImageList48);SHGetImageList(SHIL_JUMBO, IID_IImageList, (void**)&g_hImageList256);     //Windows Vista and later

取 imagelist之后再去取图标在imagelist里面的 index。

SHFILEINFO sfi;SHGetFileInfo(szFileName, 0, &sfi, sizeof(sfi),  SHGFI_SYSICONINDEX|SHGFI_SMALLICON|SHGFI_LINKOVERLAY);


sfi.iIcon 就是图标在 imagelist中的index。每个imagelist 的 index都是相同的



--------------------------------------

原创粉丝点击