26 , m_iNextLocation(LT_DIRECTORY)
27 , m_fShowHidden(
FALSE)
37 TRACE(
"(%p)\n",
this);
49 TRACE(
"LT_DIRECTORY\n");
65 TRACE(
"LT_DESKTOP\n");
81 TRACE(
"LT_MYCOMPUTER\n");
97 TRACE(
"LT_FAVORITES\n");
111 TRACE(
"(%p, %p)\n",
this, pidl);
138 SHCONTF Flags = SHCONTF_FOLDERS | SHCONTF_INIT_ON_FIRST_NEXT;
140 Flags |= SHCONTF_INCLUDEHIDDEN;
142 Flags |= SHCONTF_NONFOLDERS;
147 ERR(
"EnumObjects failed: 0x%lX\n",
hr);
155 TRACE(
"(%p, %p)\n",
this, pidlChild);
159 DWORD dwFlags = SHGDN_INFOLDER | SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
163 dwFlags = SHGDN_INFOLDER | SHGDN_FORPARSING;
173 TRACE(
"pszChild: '%S'\n",
static_cast<LPCWSTR>(pszChild));
181 TRACE(
"(%p, %p)\n",
this, pidlChild);
193 pszChild[0] !=
L'\\' || pszChild[1] !=
L'\\')
199 szRawPath += pszChild;
200 szExpanded += pszChild;
205 TRACE(
"pszExpanded: '%S'\n",
static_cast<LPCWSTR>(pszExpanded));
212 TRACE(
"(%p, %d, %p, %p)\n",
this, celt, rgelt, pceltFetched);
245 GetPaths(pidlChild, pszRawPath, pszExpanded);
246 if (!pszRawPath || !pszExpanded)
261 *rgelt = pszRawPath.
Detach();
270 TRACE(
"*rgelt: %S\n", *rgelt);
276 TRACE(
"(%p)\n",
this);
303 TRACE(
"(%p, %d)\n",
this, celt);
309 TRACE(
"(%p, %p)\n",
this, ppOut);
317 TRACE(
"(%p, %ls)\n",
this, pszExpand);
323 while (*pszExpand ==
L' ')
329 pszExpand = szExpanded;
332 if (szExpanded[0] && szExpanded[1] ==
L':' && szExpanded[2] == 0)
335 szExpanded[2] =
L'\\';
368 TRACE(
"(%p, %lu)\n",
this, dwFlag);
375 TRACE(
"(%p, %p)\n",
this, pdwFlag);
387 TRACE(
"(%p, %p)\n",
this, punkOwner);
396 TRACE(
"(%p, %p)\n",
this, pClassID);
397 if (pClassID ==
NULL)
399 *pClassID = CLSID_ACListISF;
406 TRACE(
"(%p, %p)\n",
this, pidl);
414 ERR(
"Out of memory\n");
424 TRACE(
"(%p, %p, %ld)\n",
this, pwzPath, cchSize);
430 TRACE(
"(%p, %ls, %ld)\n",
this, pwzPath);
434 ERR(
"Out of memory\n");
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
CComPtr< IEnumIDList > m_pEnumIDList
STDMETHODIMP Reset() override
STDMETHODIMP GetDirectory(LPWSTR pwzPath, DWORD cchSize) override
CComPtr< IShellFolder > m_pShellFolder
HRESULT SetLocation(LPITEMIDLIST pidl)
STDMETHODIMP GetOptions(DWORD *pdwFlag) override
STDMETHODIMP Skip(ULONG celt) override
virtual STDMETHODIMP GetClassID(CLSID *pClassID) override
CComHeapPtr< ITEMIDLIST > m_pidlCurDir
STDMETHODIMP Expand(LPCOLESTR pszExpand) override
LOCATION_TYPE m_iNextLocation
CComPtr< IBrowserService > m_pBrowserService
STDMETHODIMP SetDirectory(LPCWSTR pwzPath) override
virtual STDMETHODIMP SetOwner(IUnknown *punkOwner) override
STDMETHODIMP Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override
STDMETHODIMP Clone(IEnumString **ppenum) override
HRESULT GetPaths(LPCITEMIDLIST pidlChild, CComHeapPtr< WCHAR > &pszRaw, CComHeapPtr< WCHAR > &pszExpanded)
HRESULT GetDisplayName(LPCITEMIDLIST pidlChild, CComHeapPtr< WCHAR > &pszChild)
CComHeapPtr< ITEMIDLIST > m_pidlLocation
virtual STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidl) override
STDMETHODIMP SetOptions(DWORD dwFlag) override
INT WINAPI StrCmpNIW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
LPWSTR WINAPI PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
#define FAILED_UNEXPECTEDLY(hr)
static BOOL ILIsEmpty(_In_opt_ PCUIDLIST_RELATIVE pidl)
#define SSF_SHOWALLOBJECTS
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_Must_inspect_result_ _In_ ULONG Flags
#define IID_PPV_ARG(Itype, ppType)