擷取檔案表徵圖

來源:互聯網
上載者:User

擷取檔案表徵圖的方法:

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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.