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)
249 DWORD attrs = SFGAO_FOLDER | SFGAO_FILESYSTEM;
267 *rgelt = pszRawPath.
Detach();
276 TRACE(
"*rgelt: %S\n", *rgelt);
282 TRACE(
"(%p)\n",
this);
309 TRACE(
"(%p, %d)\n",
this, celt);
315 TRACE(
"(%p, %p)\n",
this, ppOut);
323 TRACE(
"(%p, %ls)\n",
this, pszExpand);
329 while (*pszExpand ==
L' ')
335 pszExpand = szExpanded;
338 if (szExpanded[0] && szExpanded[1] ==
L':' && szExpanded[2] == 0)
341 szExpanded[2] =
L'\\';
378 TRACE(
"(%p, %lu)\n",
this, dwFlag);
385 TRACE(
"(%p, %p)\n",
this, pdwFlag);
397 TRACE(
"(%p, %p)\n",
this, punkOwner);
406 TRACE(
"(%p, %p)\n",
this, pClassID);
407 if (pClassID ==
NULL)
409 *pClassID = CLSID_ACListISF;
416 TRACE(
"(%p, %p)\n",
this, pidl);
424 ERR(
"Out of memory\n");
434 TRACE(
"(%p, %p, %ld)\n",
this, pwzPath, cchSize);
440 TRACE(
"(%p, %ls, %ld)\n",
this, pwzPath);
444 ERR(
"Out of memory\n");
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
int GetLength() const noexcept
CComPtr< IEnumIDList > m_pEnumIDList
STDMETHOD() Reset() override
STDMETHOD() GetDirectory(LPWSTR pwzPath, DWORD cchSize) override
CComPtr< IShellFolder > m_pShellFolder
HRESULT SetLocation(LPITEMIDLIST pidl)
STDMETHOD() GetOptions(DWORD *pdwFlag) override
STDMETHOD() Skip(ULONG celt) override
STDMETHOD() GetClassID(CLSID *pClassID) override
CComHeapPtr< ITEMIDLIST > m_pidlCurDir
STDMETHOD() Expand(LPCOLESTR pszExpand) override
LOCATION_TYPE m_iNextLocation
CComPtr< IBrowserService > m_pBrowserService
STDMETHOD() SetDirectory(LPCWSTR pwzPath) override
STDMETHOD() SetOwner(IUnknown *punkOwner) override
STDMETHOD() Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override
STDMETHOD() 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
STDMETHOD() Initialize(PCIDLIST_ABSOLUTE pidl) override
STDMETHOD() 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)
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
#define FAILED_UNEXPECTEDLY
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)
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)