DropFiles.cpp
上传用户:maryhy001
上传日期:2007-05-02
资源大小:2317k
文件大小:1k
源码类别:

网格计算

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "DropFiles.h"
  3. CDropFiles::CDropFiles()
  4. {
  5. m_pBuff = NULL;
  6. m_nBuffSize = 0;
  7. }
  8. CDropFiles::~CDropFiles()
  9. {
  10. delete m_pBuff;
  11. }
  12. void CDropFiles::AddFile(const CString &sFile)
  13. {
  14. m_aFiles.Add(sFile);
  15. }
  16. void CDropFiles::CreateBuffer()
  17. {
  18. // CreateBuffer must be called once, when all Files are added!!!
  19. ASSERT(m_pBuff == NULL);
  20. ASSERT(m_nBuffSize == 0);
  21. for(int i=0;i<m_aFiles.GetSize();i++){
  22. m_nBuffSize += m_aFiles[i].GetLength()+1;
  23. }
  24. m_nBuffSize += sizeof(DROPFILES)+2;
  25. m_nBuffSize = (m_nBuffSize/32 + 1)*32;
  26. int nBuffSize = 0;
  27. m_pBuff = new char[m_nBuffSize];
  28. ZeroMemory(m_pBuff, m_nBuffSize);
  29. ((DROPFILES*)m_pBuff)->pFiles = sizeof(DROPFILES);
  30. char* pCurrent = m_pBuff + sizeof(DROPFILES);
  31. for(i=0;i<m_aFiles.GetSize();i++){
  32. strcpy(pCurrent,(LPCTSTR)m_aFiles[i]);
  33. pCurrent += m_aFiles[i].GetLength(); 
  34. *pCurrent = 0;
  35. pCurrent++;
  36. }
  37. //check buffer bound
  38. ASSERT(pCurrent - m_nBuffSize - 1 <= m_pBuff);
  39. }
  40. void* CDropFiles::GetBuffer() const
  41. {
  42. ASSERT(m_pBuff);
  43. return (void *)m_pBuff;
  44. }
  45. int CDropFiles::GetBuffSize() const
  46. {
  47. ASSERT(m_nBuffSize);
  48. return m_nBuffSize;
  49. }