Windows Mobile獲取系統圖片

 通過SHGetFileInfo函數即可獲得系統的圖片。

WINSHELLAPI DWORD WINAPI SHGetFileInfo(
  LPCTSTR pszPath, 
  DWORD dwFileAttributes, 
  SHFILEINFO FAR* psfi, 
  UINT cbFileInfo, 
  UINT uFlags 
);
其實MSDN上有詳細的介紹,還有例子。
這裏我只是給出我的例子:
CImageList m_ImageList;
 HIMAGELIST hImlSys;
 SHFILEINFO    ssfi;
 memset(&ssfi,0,sizeof(ssfi));
 hImlSys = (HIMAGELIST)SHGetFileInfo(
  L"//",
  0,
  &ssfi,
  sizeof(SHFILEINFO),
  SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_ICON);
 m_ImageList.Attach(hImlSys);
這裏就將系統的所有圖片加載到m_ImageList中了,因爲有了SHGFI_USEFILEATTRIBUTES ,所以第一個參數
會被忽略。
但是我想獲得某個指定的圖片,怎辦呢?還是這個函數:
CString strFilePath;//假設這個是某個文件或文件夾的路徑,例如_T"//Program Files//Liam.exe"
SHFILEINFO    ssfi;
 memset(&ssfi,0,sizeof(ssfi));
 SHGetFileInfo(
  strFilePath,
  0,
  &ssfi,
  sizeof(SHFILEINFO),
  /*SHGFI_USEFILEATTRIBUTES | */SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_ICON);
ssfi.iIcon返回的是一個整數值,返回的是這個圖片在剛纔加入的圖片列表中的索引位置,那麼在InsertItem的時候就
可以將其設置並顯示了。
尤其需要注意的是,一定記得m_ImageList.Detach();
否則系統的圖片都將不可見!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章