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
メソッドの4番目のパラメータをSHGFI_PIDL | SHGFI_OPENICON
に設定すると、その開いたアイコンを取得できませんでした。 hIcon
がFileInfo
の場合は、常にNULL
になります。理由はわかりません。
問題を解決する方法を教えていただけますか?
私はこの問題を解決しました。 4番目のパラメータをSHGFI_PIDL |から変更します。 SHGFI_OPENICONからSHGFI_PIDLへ| SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICONを実行すると、指定したフォルダの開いているアイコンを取得できました。 – quantity
あなた自身の質問に対する答えとしてこれを追加するべきでしょうか? – tronda