windows-nt/Source/XPSP1/NT/shell/shell32/enumidlist.h
2020-09-26 16:20:57 +08:00

53 lines
1.8 KiB
C++

#ifndef _enumidlist_h_
#define _enumidlist_h_
#include "cowsite.h"
// A minimal base IEnumIDList implementation good enough for all our IShellFolder's EnumObject implementations.
// Just provide a Next..
class CEnumIDListBase : public CObjectWithSite, IEnumIDList
{
public:
// IUnknown
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP_(ULONG) AddRef(void) ;
STDMETHODIMP_(ULONG) Release(void);
// IEnumIDList
STDMETHODIMP Next(ULONG celt, LPITEMIDLIST *rgelt, ULONG *pceltFetched) PURE;
STDMETHODIMP Skip(ULONG celt) { return E_NOTIMPL; }
STDMETHODIMP Reset() { return E_NOTIMPL; }
STDMETHODIMP Clone(IEnumIDList **ppenum) { *ppenum = NULL; return E_NOTIMPL; }
protected:
CEnumIDListBase();
virtual ~CEnumIDListBase();
private:
LONG _cRef;
};
// [in] pidlFolder - optional parent of this pidl is the first item in the enumerator
// [in] rgcsidl - array of CSIDLs to include in the enumerator
// [in] cItems - count of rgcsidl
// [out] ppenum
//
STDAPI CreateIEnumIDListOnCSIDLs(LPCITEMIDLIST pidlFolder, const LPCTSTR rgcsidl[], UINT cItems, IEnumIDList** ppenum);
// [in] pidlFolder - optional parent of this pidl is the first item in the enumerator
// [in] pidlItem - optional pidl is the next item in the enumerator
// [in] rgcsidl - array of CSIDLs to include in the enumerator
// [in] cItems - count of rgcsidl
// [out] ppenum
//
STDAPI CreateIEnumIDListOnCSIDLs2(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlItem, const LPCTSTR rgcsidl[], UINT cItems, IEnumIDList** ppenum);
// [in] apidl - array of LPCITEMIDLISTs
// [in] cItems - count of *papidl
// [out] ppenum
//
STDAPI CreateIEnumIDListOnIDLists(const LPCITEMIDLIST rgpidl[], UINT cItems, IEnumIDList** ppenum);
STDAPI CreateIEnumIDListPaths(LPCTSTR pszPaths, IEnumIDList** ppenum);
#endif // _enumidlist_h_