文件的复制,移动等操作可以直接使用一个函数SHFileOperation来实现。例如复制一个文件:
- void CDemoDlg::OnCopyFile()
- {
- CString strSrcFileName = _T("C:\\Demo.dat");
- TCHAR szFrom[MAX_PATH];
- for (int n = 0; n < MAX_PATH; n++)
- {
- szFrom[n] = '\0';
- }
- StrCat(szFrom, strSrcFileName);
- CString strDestFileName = _T("C:\\Copy of Demo.dat");
- TCHAR szTo[MAX_PATH];
- for (n = 0; n < MAX_PATH; n++)
- {
- szTo[n] = '\0';
- }
- StrCat(szTo, strDestFileName);
- //复制文件操作
- SHFILEOPSTRUCT FileOp;
- FileOp.hwnd = NULL;
- FileOp.wFunc = FO_COPY;
- FileOp.pFrom = szFrom;
- FileOp.pTo = szTo;
- FileOp.fFlags = FOF_SILENT;
- if (SHFileOperation(&FileOp) == 0)
- {
- AfxMessageBox(_T("复制文件成功。"));
- }
- else
- {
- AfxMessageBox(_T("复制文件失败。"));
- }
- }
复制代码 移动一个文件:
- void CDemoDlg::OnMoveFile()
- {
- CString strSrcFileName = _T("C:\\Demo.dat");
- TCHAR szFrom[MAX_PATH];
- for (int n = 0; n < MAX_PATH; n++)
- {
- szFrom[n] = '\0';
- }
- StrCat(szFrom, strSrcFileName);
- CString strDestFileName = _T("D:\");
- TCHAR szTo[MAX_PATH];
- for (n = 0; n < MAX_PATH; n++)
- {
- szTo[n] = '\0';
- }
- StrCat(szTo, strDestFileName);
- //移动文件操作
- SHFILEOPSTRUCT FileOp;
- FileOp.hwnd = NULL;
- FileOp.wFunc = FO_MOVE;
- FileOp.pFrom = szFrom;
- FileOp.pTo = szTo;
- FileOp.fFlags = FOF_SILENT;
- if (SHFileOperation(&FileOp) == 0)
- {
- AfxMessageBox(_T("移动文件成功。"));
- }
- else
- {
- AfxMessageBox(_T("移动文件失败。"));
- }
- }
复制代码 删除一个文件
- void CDemoDlg::OnDeleteFile()
- {
- CString strSrcFileName = _T("C:\\Demo.dat");
- TCHAR szFrom[MAX_PATH];
- for (int n = 0; n < MAX_PATH; n++)
- {
- szFrom[n] = '\0';
- }
- StrCat(szFrom, strSrcFileName);
- //删除文件操作
- SHFILEOPSTRUCT FileOp;
- FileOp.hwnd = NULL;
- FileOp.wFunc = FO_DELETE;
- FileOp.pFrom = szFrom;
- FileOp.pTo = NULL;
- FileOp.fFlags = FOF_SILENT;
- if (SHFileOperation(&FileOp) == 0)
- {
- AfxMessageBox(_T("删除文件成功。"));
- }
- else
- {
- AfxMessageBox(_T("删除文件失败。"));
- }
- }
复制代码 重命名一个文件:
- void CDemoDlg::OnRenameFile()
- {
- CString strSrcFileName = _T("C:\\Demo.dat");
- TCHAR szFrom[MAX_PATH];
- for (int n = 0; n < MAX_PATH; n++)
- {
- szFrom[n] = '\0';
- }
- StrCat(szFrom, strSrcFileName);
- CString strDestFileName = _T("C:\\New Demo.dat");
- TCHAR szTo[MAX_PATH];
- for (n = 0; n < MAX_PATH; n++)
- {
- szTo[n] = '\0';
- }
- StrCat(szTo, strDestFileName);
- //重命名文件操作
- SHFILEOPSTRUCT FileOp;
- FileOp.hwnd = NULL;
- FileOp.wFunc = FO_RENAME;
- FileOp.pFrom = szFrom;
- FileOp.pTo = szTo;
- FileOp.fFlags = FOF_SILENT;
- if (SHFileOperation(&FileOp) == 0)
- {
- AfxMessageBox(_T("重命名文件成功。"));
- }
- else
- {
- AfxMessageBox(_T("重命名文件失败。"));
- }
- }
复制代码 我们可以看到SHFileOperation传递进去的是一个SHFILEOPSTRUCT 结构体。
通过修改结构体实例的成员变量SHFILEOPSTRUCT FileOp; FileOp.wFunc = FO_RENAME。就可以实现不同的功能。
函数执行成功与否可以通过其返回值进行判断。为0表示成功执行。
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|