53 lines
1.8 KiB
C++
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_
|