3

这就是我所做的:

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_OPENICONhIconofFileInfo总是,NULL我不知道为什么。

谁能告诉我如何解决这个问题?

4

1 回答 1

0

从评论:

我已经解决了这个问题。将第四个参数从 修改SHGFI_PIDL | SHGFI_OPENICONSHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICON,然后我就可以检索到指定文件夹的打开图标了。

于 2017-01-01T13:09:36.423 回答