home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / winui / shell / regview / enumidl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-27  |  2.3 KB  |  84 lines

  1. /**************************************************************************
  2.    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3.    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4.    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5.    PARTICULAR PURPOSE.
  6.  
  7.    Copyright 1997 Microsoft Corporation.  All Rights Reserved.
  8. **************************************************************************/
  9.  
  10. /**************************************************************************
  11.  
  12.    File:          EnumIDL.h
  13.    
  14.    Description:   CEnumIDList definitions.
  15.  
  16. **************************************************************************/
  17.  
  18. #ifndef ENUMIDLIST_H
  19. #define ENUMIDLIST_H
  20.  
  21. #include <windows.h>
  22. #include <shlobj.h>
  23.  
  24. #include "PidlMgr.h"
  25. #include "Utility.h"
  26.  
  27. /**************************************************************************
  28.    structure defintions
  29. **************************************************************************/
  30.  
  31. typedef struct tagENUMLIST
  32.    {
  33.    struct tagENUMLIST   *pNext;
  34.    LPITEMIDLIST         pidl;
  35.    }ENUMLIST, FAR *LPENUMLIST;
  36.  
  37. /**************************************************************************
  38.    global variables
  39. **************************************************************************/
  40.  
  41. extern HINSTANCE  g_hInst;
  42. extern UINT       g_DllRefCount;
  43.  
  44. /**************************************************************************
  45.  
  46.    CEnumIDList class definition
  47.  
  48. **************************************************************************/
  49.  
  50. class CEnumIDList : public IEnumIDList
  51. {
  52. protected:
  53.    DWORD m_ObjRefCount;
  54.    
  55. public:
  56.    CEnumIDList(HKEY, LPCTSTR, DWORD, HRESULT*);
  57.    ~CEnumIDList();
  58.    
  59.    //IUnknown methods
  60.    STDMETHOD (QueryInterface)(REFIID, LPVOID*);
  61.    STDMETHOD_ (DWORD, AddRef)();
  62.    STDMETHOD_ (DWORD, Release)();
  63.    
  64.    //IEnumIDList
  65.    STDMETHOD (Next) (DWORD, LPITEMIDLIST*, LPDWORD);
  66.    STDMETHOD (Skip) (DWORD);
  67.    STDMETHOD (Reset) (void);
  68.    STDMETHOD (Clone) (LPENUMIDLIST*);
  69.    
  70. private:
  71.    BOOL CreateEnumList(HKEY, LPCTSTR, DWORD);
  72.    BOOL AddToEnumList(LPITEMIDLIST);
  73.    BOOL DeleteList(void);
  74.  
  75. private:
  76.    LPMALLOC m_pMalloc;
  77.    LPENUMLIST m_pFirst;
  78.    LPENUMLIST m_pLast;
  79.    LPENUMLIST m_pCurrent;
  80.    LPPIDLMGR  m_pPidlMgr;
  81. };
  82.  
  83. #endif   //ENUMIDLIST_H
  84.