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)
#define FAILED_UNEXPECTEDLY(hr)
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 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)
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)