2 Aug
2010
2 Aug
'10
6:04 a.m.
On 8/2/2010 02:36, David Hedberg wrote:
+static HRESULT ShellItem_get_shellfolder(ShellItem *This, IBindCtx *pbc, IShellFolder **ppsf) +{ + IShellFolder *desktop; + HRESULT ret; + + ret = SHGetDesktopFolder(&desktop); + if (SUCCEEDED(ret)) + { + if (_ILIsDesktop(This->pidl)) + { + *ppsf = desktop; + IShellFolder_AddRef(*ppsf); + } + else + { + ret = IShellFolder_BindToObject(desktop, This->pidl, pbc,&IID_IShellFolder, (void**)ppsf); + } + + IShellFolder_Release(desktop); + } + + return ret; +} +
I don't think this explicit check for desktop folder is needed here, as I understand ::BindToObject() it should handle this case internally.