程序的主要目的就是将一个文件夹移动, 采用递归算法,毛病就是要移动的文件夹内部的文件和文件夹可以删除,但这个根文件夹却不能删除,我知道,删除之前应调用
FindClose(hFind)//HANDLE hFind = FindFirstFile("..")
哎!就是不知道错在哪里?请高手赐教!!
void CMyTreeView::MoveDirectory(CString strSource, CString strDest)
{
int pos = strSource.ReverseFind('\\');
CString strTemp, strSourceTemp;
strTemp = strDest + "\\" + strSource.Mid(pos + 1);
    CreateDirectory(strTemp.LockBuffer(), NULL);
WIN32_FIND_DATA wfd;
strSourceTemp = strSource + "\\*.*";
HANDLE hFind = FindFirstFile(strSourceTemp.LockBuffer(), &wfd);
    if(hFind == INVALID_HANDLE_VALUE)
{
::FindClose(hFind);
     return;
}
CString strTempSource;
CString strTempDest;
while(FindNextFile(hFind, &wfd))
{
if( strcmp(wfd.cFileName, ".") != 0 && 
strcmp(wfd.cFileName, "..") != 0)
{
    if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
    MoveDirectory(strSource + "\\" 
                                             + wfd.cFileName, strTemp);
}
else if(strcmp(wfd.cFileName, "..") != 0)
{
strTempSource = strSource + "\\"     +wfd.cFileName;
strTempDest = strTemp + "\\" +  wfd.cFileName;
HANDLE hFile = CreateFile(strTempDest.LockBuffer(), 
                      GENERIC_READ|GENERIC_WRITE,
                      FILE_SHARE_READ|
  FILE_SHARE_WRITE,
                  NULL, CREATE_NEW,
                  FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, "Error Create File",
       MB_ICONERROR);
break;
}
    if(!CopyFile(strTempSource.LockBuffer(),
                 strTempDest.LockBuffer(), FALSE))
    MessageBox(NULL, strTempDest.LockBuffer(),
            MB_ICONERROR);
if(!DeleteFile(strTempSource.LockBuffer()))
MessageBox(NULL,
           strTempSource.LockBuffer(),
   MB_ICONERROR);
}
}
}
::FindClose(hFind);
   if(!RemoveDirectory(strSource.LockBuffer()))
{
DWORD dw = GetLastError(); //dw == 32
MessageBox(NULL, strSource, MB_OK);
}
    
}我的信箱:[email protected]