Привет всем.
В своём проекте я использую окно shell в котором отображается какая-нибудь папка, например C:\Program Files . Файлы в папке располагаются в виде списка с несколькими колонками дополнительной информации о файле, например, имя, размер и т.п. (обычно 4). Для получения информации о колонке я использую интерфейс IShellFolder2 и его метод GetDetailsOf. Но что-то не так. И QueryInterface не возвращает мне IShellFolder2 как показано в примере. hr — результат — при этом имеет значение 0x80004002 : no interface supported.
........
//----------------------------------------------------
CString sFolderPath = "c:\\Program Files";
int nColumn = 0;
IShellFolder *psfParentFolder=NULL, *psfSubFolder=NULL;
LPITEMIDLIST pdlPath;
HRESULT hr = SHGetDesktopFolder(&psfParentFolder);
if (FAILED(hr))
return hr;
WCHAR wszPathName[256];
MultiByteToWideChar( CP_ACP, 0, sFolderPath, sFolderPath.GetLength()+1, wszPathName,
sizeof(wszPathName)/sizeof(wszPathName[0]) );
hr = psfParentFolder->ParseDisplayName(NULL, NULL, wszPathName, NULL, &pdlPath, NULL);
if (FAILED(hr))
return hr;
hr = psfParentFolder->BindToObject(pdlPath, 0, IID_IShellFolder, (void**)&psfSubFolder);
if (FAILED(hr))
return hr;
SHELLDETAILS ShellDetails;
IShellFolder2 *pShellFolder2=NULL;
hr = psfSubFolder->QueryInterface(IID_IShellFolder2,(LPVOID*)&pShellFolder2);
if (SUCCEEDED(hr))
{
hr = pShellFolder2->GetDetailsOf(pdlPath,nColumn,&ShellDetails);
pShellFolder2->Release();
}
//----------------------------------------------------
........
В чём может быть дело? Может кто-то знает более простой способ получить информацию о колонках в ShellList?
С уважением,
Андрей