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しかし、メソッドの 4 番目のパラメーターを に設定すると、開いているアイコンを取得できませんでしたSHGFI_PIDL | SHGFI_OPENICONhIconofFileInfoは常にで、NULL理由はわかりません。

誰でも問題を解決する方法を教えてもらえますか?

4

1 に答える 1

0

コメントから:

問題を解決しました。4番目のパラメータを からSHGFI_PIDL | SHGFI_OPENICONに変更するSHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICONと、指定したフォルダの開いているアイコンを取得できました。

于 2017-01-01T13:09:36.423 に答える