这篇文章介绍一种提取文件或者文件夹的图标的方法,可以保存为背景透明的PNG图标,没有讨厌的黑色背景,嘿嘿。
1. 首先从文件中提取HICON数据,非常简单
// 调用方负责DestroyIcon HICON
HICON GetFileIcon(const CString& strFilePath, BOOL bLarge)
{
SHFILEINFO SHFI;
ZeroMemory(&SHFI, sizeof(SHFI));
DWORD_PTR ret = ::SHGetFileInfo(strFilePath, 0, &SHFI, sizeof(SHFI),
SHGFI_ICON | (bLarge ? SHGFI_LARGEICON : SHGFI_SMALLICON));
if (ret != 0)
{
return SHFI.hIcon;
}
return NULL;
}
2. 从HICON中拿出HBITMAP数据,做一些手脚,把它保存成透明的PNG图片
bool SaveHIcon2PngFile(HICON hIcon, LPCTSTR lpszPicFileName)
{
if (hIcon == NULL)
{