通常我们取文件或者目录图标都是用shell函数 SHGetFileInfo。然而此函数只能取到 32*32 和16*16的图标。如果设置参数uFlags 含有SHGFI_LARGEICON取得的就是32*32的, 如果是SHGFI_SMALLICON 就是16*16的。然而在Windows 7 上的资源管理器中,选择显示缩略图它能显示很大的图标。最大的能到256*256。
取 imagelist之后再去取图标在imagelist里面的 index。
但是我们的程序怎么得到这么大的图标呢?这里我们就需要函数 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都是相同的
--------------------------------------