mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:23:01 +00:00
[SHELL32] -Simplify some coe in CShellLink.cpp
svn path=/trunk/; revision=75597
This commit is contained in:
parent
9d8fe6f238
commit
e8f24951d6
1 changed files with 32 additions and 32 deletions
|
@ -1690,28 +1690,31 @@ HRESULT STDMETHODCALLTYPE CShellLink::GetIconLocation(LPWSTR pszIconPath, INT cc
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT SHELL_PidlGetIconLocationW(IShellFolder* psf, LPCITEMIDLIST pidl,
|
static HRESULT SHELL_PidlGetIconLocationW(PCIDLIST_ABSOLUTE pidl,
|
||||||
UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
|
UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
|
||||||
{
|
{
|
||||||
LPCITEMIDLIST pidlLast;
|
LPCITEMIDLIST pidlLast;
|
||||||
|
CComPtr<IShellFolder> psf;
|
||||||
|
|
||||||
HRESULT hr = SHBindToParent(pidl, IID_PPV_ARG(IShellFolder, &psf), &pidlLast);
|
HRESULT hr = SHBindToParent(pidl, IID_PPV_ARG(IShellFolder, &psf), &pidlLast);
|
||||||
if (SUCCEEDED(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
{
|
return hr;
|
||||||
CComPtr<IExtractIconW> pei;
|
|
||||||
|
|
||||||
hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_NULL_PPV_ARG(IExtractIconW, &pei));
|
CComPtr<IExtractIconW> pei;
|
||||||
if (SUCCEEDED(hr))
|
hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_NULL_PPV_ARG(IExtractIconW, &pei));
|
||||||
hr = pei->GetIconLocation(uFlags, pszIconFile, cchMax, piIndex, pwFlags);
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
psf->Release();
|
hr = pei->GetIconLocation(uFlags, pszIconFile, cchMax, piIndex, pwFlags);
|
||||||
}
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
return hr;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE CShellLink::GetIconLocation(UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
|
HRESULT STDMETHODCALLTYPE CShellLink::GetIconLocation(UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
|
||||||
{
|
{
|
||||||
|
HRESULT hr;
|
||||||
/*
|
/*
|
||||||
* It is possible for a shell link to point to another shell link,
|
* It is possible for a shell link to point to another shell link,
|
||||||
* and in particular there is the possibility to point to itself.
|
* and in particular there is the possibility to point to itself.
|
||||||
|
@ -1732,33 +1735,30 @@ HRESULT STDMETHODCALLTYPE CShellLink::GetIconLocation(UINT uFlags, PWSTR pszIcon
|
||||||
|
|
||||||
if (m_pPidl || m_sPath)
|
if (m_pPidl || m_sPath)
|
||||||
{
|
{
|
||||||
CComPtr<IShellFolder> pdsk;
|
/* first look for an icon using the PIDL (if present) */
|
||||||
|
if (m_pPidl)
|
||||||
HRESULT hr = SHGetDesktopFolder(&pdsk);
|
hr = SHELL_PidlGetIconLocationW(m_pPidl, uFlags, pszIconFile, cchMax, piIndex, pwFlags);
|
||||||
if (SUCCEEDED(hr))
|
else
|
||||||
{
|
hr = E_FAIL;
|
||||||
/* first look for an icon using the PIDL (if present) */
|
|
||||||
if (m_pPidl)
|
|
||||||
hr = SHELL_PidlGetIconLocationW(pdsk, m_pPidl, uFlags, pszIconFile, cchMax, piIndex, pwFlags);
|
|
||||||
else
|
|
||||||
hr = E_FAIL;
|
|
||||||
|
|
||||||
#if 0 // FIXME: Analyse further whether this is needed...
|
#if 0 // FIXME: Analyse further whether this is needed...
|
||||||
/* if we couldn't find an icon yet, look for it using the file system path */
|
/* if we couldn't find an icon yet, look for it using the file system path */
|
||||||
if (FAILED(hr) && m_sPath)
|
if (FAILED(hr) && m_sPath)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidl;
|
LPITEMIDLIST pidl;
|
||||||
|
CComPtr<IShellFolder> pdsk;
|
||||||
|
|
||||||
/* LPITEMIDLIST pidl = ILCreateFromPathW(sPath); */
|
hr = SHGetDesktopFolder(&pdsk);
|
||||||
hr = pdsk->ParseDisplayName(0, NULL, m_sPath, NULL, &pidl, NULL);
|
|
||||||
if (SUCCEEDED(hr))
|
/* LPITEMIDLIST pidl = ILCreateFromPathW(sPath); */
|
||||||
{
|
hr = pdsk->ParseDisplayName(0, NULL, m_sPath, NULL, &pidl, NULL);
|
||||||
hr = SHELL_PidlGetIconLocationW(pdsk, pidl, uFlags, pszIconFile, cchMax, piIndex, pwFlags);
|
if (SUCCEEDED(hr))
|
||||||
SHFree(pidl);
|
{
|
||||||
}
|
hr = SHELL_PidlGetIconLocationW(pidl, uFlags, pszIconFile, cchMax, piIndex, pwFlags);
|
||||||
|
SHFree(pidl);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue