enum.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef __enum_h
  2. #define __enum_h
  3. /*-----------------------------------------------------------------------------
  4. / CDsEnum
  5. /----------------------------------------------------------------------------*/
  6. #define MAX_DSSHELL_ENUM    64
  7. class CMyDocsEnum : public IEnumIDList, CUnknown
  8. {
  9.     private:
  10.         HWND            m_hwndOwner;                // used for MsgBox etc
  11.         ULONG           m_cFetched;                 // number of items previously fetched
  12.         LPITEMIDLIST    m_pidlRoot;                 // pidl to root of real folder we're enumerating...
  13.         IShellFolder *  m_psf;                      // real shell folder for this folder
  14.         IEnumIDList  *  m_peidl;                    // real enumerator for this folder
  15.         BOOL            m_bRoot;                    // Is this the root MyDocs folder
  16.         HDPA            m_hidl;                     // array of special pidls
  17.     private:
  18.         VOID _GetSpecialItems( HKEY hkey );
  19.     public:
  20.         CMyDocsEnum(IShellFolder * psf, HWND hwndOwner, DWORD grfFlags, LPITEMIDLIST pidlRoot, BOOL bRoot );
  21.         ~CMyDocsEnum();
  22.         VOID DoFirstTimeInitialization( );
  23.         LPITEMIDLIST FindSpecialItem( LPTSTR pName );
  24.         // IUnknown
  25.         STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObject);
  26.         STDMETHOD_(ULONG, AddRef)();
  27.         STDMETHOD_(ULONG, Release)();
  28.         // IEnumIDList
  29.         STDMETHODIMP Next(ULONG celt, LPITEMIDLIST* rgelt, ULONG* pceltFetched);
  30.         STDMETHODIMP Skip(ULONG celt);
  31.         STDMETHODIMP Reset();
  32.         STDMETHODIMP Clone(LPENUMIDLIST* ppenum);
  33. };
  34. #endif