SHGetFileInfo(strpath
,
0, &shfi,
sizeof
(shfi), SHGFI_ICON | SHGFI_LARGEICON)
通过指定SHGetFileInfo函数的最后一个参数为SHGFI_ICON | SHGFI_LARGEICON,加载的是32x32的大图标,若要加载小图标,则指定最后一个参数为SHGFI_ICON | SHGFI_SMALLICON
若加载的是16x16的小图标,直接用DrawIcon函数会有问题,因为该函数绘制ICON时默认为32x32,对于ICON为16x16的小图标状况,该函数会将其拉伸到32x32绘制。使对于16x16的小图标按照其实际大小绘制,需如下调用DrawIconEx
DrawIconEx(hdc, 0, 0, hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT);
在通过SHGetFileInfo提取完ICON后,在不需要该ICON的时候要调用DestroyIcon释放资源。