home *** CD-ROM | disk | FTP | other *** search
- /**************************************************************************
- THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- PARTICULAR PURPOSE.
-
- Copyright 1997 Microsoft Corporation. All Rights Reserved.
- **************************************************************************/
-
- /**************************************************************************
-
- File: EnumIDL.h
-
- Description: CEnumIDList definitions.
-
- **************************************************************************/
-
- #ifndef ENUMIDLIST_H
- #define ENUMIDLIST_H
-
- #include <windows.h>
- #include <shlobj.h>
-
- #include "PidlMgr.h"
- #include "Utility.h"
-
- /**************************************************************************
- structure defintions
- **************************************************************************/
-
- typedef struct tagENUMLIST
- {
- struct tagENUMLIST *pNext;
- LPITEMIDLIST pidl;
- }ENUMLIST, FAR *LPENUMLIST;
-
- /**************************************************************************
- global variables
- **************************************************************************/
-
- extern HINSTANCE g_hInst;
- extern UINT g_DllRefCount;
-
- /**************************************************************************
-
- CEnumIDList class definition
-
- **************************************************************************/
-
- class CEnumIDList : public IEnumIDList
- {
- protected:
- DWORD m_ObjRefCount;
-
- public:
- CEnumIDList(HKEY, LPCTSTR, DWORD, HRESULT*);
- ~CEnumIDList();
-
- //IUnknown methods
- STDMETHOD (QueryInterface)(REFIID, LPVOID*);
- STDMETHOD_ (DWORD, AddRef)();
- STDMETHOD_ (DWORD, Release)();
-
- //IEnumIDList
- STDMETHOD (Next) (DWORD, LPITEMIDLIST*, LPDWORD);
- STDMETHOD (Skip) (DWORD);
- STDMETHOD (Reset) (void);
- STDMETHOD (Clone) (LPENUMIDLIST*);
-
- private:
- BOOL CreateEnumList(HKEY, LPCTSTR, DWORD);
- BOOL AddToEnumList(LPITEMIDLIST);
- BOOL DeleteList(void);
-
- private:
- LPMALLOC m_pMalloc;
- LPENUMLIST m_pFirst;
- LPENUMLIST m_pLast;
- LPENUMLIST m_pCurrent;
- LPPIDLMGR m_pPidlMgr;
- };
-
- #endif //ENUMIDLIST_H
-