64 lines
1.4 KiB
C
64 lines
1.4 KiB
C
|
#ifndef ENUMID_H
|
||
|
#define ENUMID_H
|
||
|
|
||
|
#define PIDL_TYPE_PROVIDER 0
|
||
|
#define PIDL_TYPE_TYPE 1
|
||
|
#define PIDL_TYPE_SUBTYPE 2
|
||
|
#define PIDL_TYPE_ITEM 3
|
||
|
|
||
|
typedef struct {
|
||
|
DWORD dwType;
|
||
|
PST_KEY KeyType;
|
||
|
GUID guid; // guid associated with Pidl
|
||
|
} PIDL_CONTENT, *PPIDL_CONTENT, *LPPIDL_CONTENT;
|
||
|
// WCHAR Array follows.
|
||
|
|
||
|
class CEnumIDList : public IEnumIDList
|
||
|
{
|
||
|
protected:
|
||
|
LONG m_ObjRefCount;
|
||
|
|
||
|
public:
|
||
|
CEnumIDList(LPITEMIDLIST, BOOL);
|
||
|
~CEnumIDList();
|
||
|
|
||
|
//
|
||
|
// IUnknown methods
|
||
|
//
|
||
|
|
||
|
STDMETHOD (QueryInterface)(REFIID, LPVOID*);
|
||
|
STDMETHOD_ (DWORD, AddRef)();
|
||
|
STDMETHOD_ (DWORD, Release)();
|
||
|
|
||
|
//
|
||
|
// IEnumIDList
|
||
|
//
|
||
|
|
||
|
STDMETHOD (Next) (ULONG, LPITEMIDLIST*, ULONG *);
|
||
|
STDMETHOD (Skip) (ULONG);
|
||
|
STDMETHOD (Reset) (void);
|
||
|
STDMETHOD (Clone) (LPENUMIDLIST*);
|
||
|
|
||
|
private:
|
||
|
LPMALLOC m_pMalloc;
|
||
|
|
||
|
STDMETHOD (CreateIDList) (DWORD, PST_KEY, GUID *, LPCWSTR, LPITEMIDLIST *);
|
||
|
|
||
|
ULONG m_ulCurrent;
|
||
|
DWORD m_dwType;
|
||
|
PST_KEY m_KeyType;
|
||
|
GUID m_guidType;
|
||
|
GUID m_guidSubtype;
|
||
|
|
||
|
BOOL m_bEnumItems;
|
||
|
|
||
|
IEnumPStoreProviders *m_pIEnumProviders;
|
||
|
IPStore *m_pIPStoreProvider;
|
||
|
IEnumPStoreTypes *m_pIEnumTypes;
|
||
|
IEnumPStoreTypes *m_pIEnumTypesGlobal;
|
||
|
IEnumPStoreTypes *m_pIEnumSubtypes;
|
||
|
IEnumPStoreItems *m_pIEnumItems;
|
||
|
};
|
||
|
|
||
|
#endif // ENUMID_H
|