我知道SHGetFileInfo可以提取确实存在的文件的图标,现在要求在文件不存在而只知道文件名的情况下获得文件对应的图标。一定给分。

解决方案 »

  1.   

    这是我写的程序的一部分: int nItem = 0;
    DWORD dwFileAttr;
    if (finder.IsDirectory())
    dwFileAttr = FILE_ATTRIBUTE_DIRECTORY;
    else
    dwFileAttr = FILE_ATTRIBUTE_NORMAL; TCHAR szFile[_MAX_PATH];
    lstrcpy(szFile, finder.GetFilePath()); TCHAR szExten[_MAX_FNAME];
    lstrcpy(szExten, ::PathFindExtension(szFile)); // 提取文件图标
    SHFILEINFO sfi; HIMAGELIST hil = (HIMAGELIST)SHGetFileInfo(szExten, dwFileAttr,
    &sfi, sizeof (SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME | 
    SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_SMALLICON); if (hil && !m_imglstFile.GetSafeHandle())
    m_imglstFile.Attach(hil); pListCtrl->SetImageList(&m_imglstFile, LVSIL_SMALL);
    pListCtrl->InsertItem(nItem, finder.GetFileTitle(), sfi.iIcon);
      

  2.   

    msdn有一个完整的例子,就在你硬盘的 sample中,叫*file*,找找看
    呵呵