这就是我所做的:
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
。hIcon
ofFileInfo
总是,NULL
我不知道为什么。
谁能告诉我如何解决这个问题?