获取文件图标的方法:
1、通过文件路径,获取关联的图标.并显示在对话框上..
SHFILEINFO m_sfi;
memset(&m_sfi,0,sizeof(SHFILEINFO));
SHGetFileInfo( m_strPath ,0 ,&m_sfi,size(SHFILEINFO),SHGFI_ICON|SHGFI_LARGEICON);
CStatic* pStatic = (CStatic*) GetDlgItem(IDC_STATIC);
HICON hIcon=m_sfi.hIcon;
pStatic->SetIcon(hIcon);
2、通过文件扩展名获取关联图标,并显示在对话框上
添加成员函数有用于通过查找注册表后,返回找到图标句柄
HICON GetRegisterIcon(LPCSTR Ext)
{
HKEY Key;
long Size;
char *s, *t;
char buf[260];
HICON hIcon;
HICON hIconS;
if (!Ext || !Ext[0])
return NULL;
Key = HKEY_CLASSES_ROOT;
Size = sizeof(buf); buf[0] = '/0';
if (RegQueryValue(Key,Ext,buf,&Size)
!=ERROR_SUCCESS || buf[0]=='/0')
return NULL;
if (RegOpenKey(HKEY_CLASSES_ROOT,buf,
&Key) != ERROR_SUCCESS)
return NULL;
Size = sizeof(buf); buf[0] = '/0';
if (RegQueryValue(Key,"DefaultIcon",
buf,&Size)!=ERROR_SUCCESS) {
RegCloseKey(Key); return NULL;
}
else
RegCloseKey(Key);
if ((s=strrchr(buf,','))==NULL)
return NULL;
t = s-1; *s++ = '/0';
while(t>=buf && *t==' ') {
*t = '/0'; t--;
}
ExtractIconEx(buf, atoi(s),
&hIcon, &hIconS, 1);
return hIcon; //or return hIconS;
}
应用:
CStatic* pStatic = (CStatic*) GetDlgItem(IDC_STATIC);
HICON hIcon=GetRegisterIcon(".bmp");
pStatic->SetIcon(hIcon);