2009-07-07 40 views
3

這是我做過什麼:如何使用SHGetFileInfo()方法獲取文件夾的打開圖標?

LPMALLOC malloc; 
LPITEMIDLIST pidl; 
SHFILEINFO FileInfo; 
SFGAOF sfGao; 

if (SUCCEEDED(SHGetMalloc(&malloc)) 
{ 
    if (SUCCEEDED(SHParseDisplayName(strDirPath, NULL, &pidl, SFGAO_FOLDER, &sfGao))) 
    { 
     SHGetFileInfo((LPCWSTR)(PCHAR(pidl)), 0, &FileInfo, sizeof(FileInfo), SHGFI_PIDL | SHGFI_ICON); 
     CDC* pDC = GetWindowDC(); 
     pDC->DrawIcon(10, 10, FileInfo.hIcon); 
     ReleaseDC(pDC); 
    } 
    malloc->Free(pidl); 
} 
malloc->Release(); 

這裏的問題:我發現我可以用這種方法很容易地得到一個文件夾的圖標。但是當我將SHGetFileInfo方法的第四個參數設置爲SHGFI_PIDL | SHGFI_OPENICON時,我無法獲得其打開的圖標。 FileInfohIcon總是NULL,我不知道爲什麼。

誰能告訴我如何解決這個問題?

+2

我已經解決了這個問題。修改SHGFI_PIDL |中的第四個參數SHGFI_OPENICON到SHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICON,然後我能夠檢索指定文件夾的打開圖標。 – quantity 2009-07-07 07:39:21

回答

0

來自評論:

我已經解決了這個問題。將SHGFI_PIDL | SHGFI_OPENICON的第四個參數修改爲SHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICON,然後我可以檢索指定文件夾的打開圖標。

相關問題