home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / addins / wins / dirlist.cpp < prev    next >
C/C++ Source or Header  |  1998-04-08  |  2KB  |  102 lines

  1. // DirList.cpp: implementation of the CDirList class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #include "stdafx.h"
  6. #include "resource.h"
  7. #include "DirList.h"
  8.  
  9. #ifdef _DEBUG
  10. #undef THIS_FILE
  11. static char THIS_FILE[]=__FILE__;
  12. #define new DEBUG_NEW
  13. #endif
  14.  
  15. //////////////////////////////////////////////////////////////////////
  16. // Construction/Destruction
  17. //////////////////////////////////////////////////////////////////////
  18.  
  19. CDirList::CDirList()
  20. {
  21.  
  22. }
  23.  
  24. CDirList::~CDirList()
  25. {
  26.     POSITION p;
  27.     CFileItem *pFileItem;
  28.  
  29.     p = m_dirList.GetHeadPosition();
  30.     while (p)
  31.     {
  32.         pFileItem = m_dirList.GetNext(p);
  33.         delete pFileItem;
  34.     }
  35.  
  36. }
  37.  
  38. BOOL CDirList::FAddDir(LPCTSTR szDir, LPCTSTR szFile, CRect& rectWnd, BOOL fInDebugger, BOOL fTouch /* = TRUE*/)
  39. {
  40.     POSITION p;
  41.     BOOL fOK = FALSE;
  42.     CFileItem *pFileItem = NULL;
  43.     BOOL fAdd = TRUE;
  44.  
  45.     p = m_dirList.GetHeadPosition();
  46.     while (p)
  47.     {
  48.         pFileItem = m_dirList.GetNext(p);
  49.         if (pFileItem->IsDir(szDir))
  50.         {
  51.             if (pFileItem->IsFile(szFile))
  52.             {
  53.                 fAdd = FALSE;
  54.                 break;
  55.             }
  56.         }
  57.     }
  58.     if (fAdd)
  59.     {
  60.         pFileItem = new CFileItem(szDir, szFile, rectWnd, fInDebugger);
  61.         m_dirList.AddTail(pFileItem);
  62.         fOK = TRUE;
  63.     }
  64.     else
  65.     {
  66.         if (pFileItem)
  67.             pFileItem->Touch(rectWnd, fInDebugger, fTouch);
  68.     }
  69.     return(fOK);
  70. }
  71.  
  72. POSITION CDirList::GetHeadPosition()
  73. {
  74.     return(m_dirList.GetHeadPosition());
  75. }
  76.  
  77. CFileItem * CDirList::GetNextPos(POSITION &p)
  78. {
  79.     CFileItem *pItem;
  80.     pItem = m_dirList.GetNext(p);
  81.     return(pItem);
  82. }
  83.  
  84. int CDirList::Count()
  85. {
  86.     return(m_dirList.GetCount());
  87. }
  88.  
  89. void CDirList::Reset()
  90. {
  91.     POSITION p;
  92.     CFileItem *pFileItem;
  93.  
  94.     p = m_dirList.GetHeadPosition();
  95.     while (p)
  96.     {
  97.         pFileItem = m_dirList.GetNext(p);
  98.         delete pFileItem;
  99.     }
  100.     m_dirList.RemoveAll();
  101. }
  102.