一系列MFC操作文件实例(中)
来源:互联网 发布:淘宝搜索排名优化 编辑:程序博客网 时间:2024/05/28 04:55
一、获取目标文件属性
将五个EDITCTL分别与五个CString变量绑定,即CString m_Path;CString m_StartTime;CString m_ModTime;CString m_LastTime;CString m_Size;
消息处理函数为:
void CGetStatusDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CFileDialog dlg(TRUE, NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("All Files(*.TXT)|*.TXT||"),this);if (dlg.DoModal() == IDOK){m_Path = dlg.GetPathName(); //获取文件路径CFile file;file.Open(m_Path, CFile::modeRead); //以读取的方式打开文件CFileStatus flStatus;file.GetStatus(flStatus);file.Close();m_StartTime = flStatus.m_ctime.Format(_T("%Y-%m-%d %H:%M:%S"));m_ModTime = flStatus.m_mtime.Format(_T("%Y-%m-%d %H:%M:%S"));m_LastTime = flStatus.m_atime.Format(_T("%Y-%m-%d %H:%M:%S"));m_Size.Format(_T("%dK"), flStatus.m_size/1024);UpdateData(TRUE);}}
二、复制文件显示进度
将控件绑定变量分别为:CString m_oFile;CString m_nFile;CProgressCtrl m_Progress;
选择源文件与目标文件夹消息处理代码如下:
void CjinduDlg::OnBnClickedButslect(){// TODO: 在此添加控件通知处理程序代码CFileDialog dlg(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY, _T("All Files(*.*)|*.*||"), this);if (dlg.DoModal() == IDOK){m_oFile = dlg.GetPathName(); //获取文件路径m_FileExt = dlg.GetFileExt(); //获取文件扩展名UpdateData(FALSE);}}void CjinduDlg::OnBnClickedButnewpath(){// TODO: 在此添加控件通知处理程序代码CFileDialog dlg(FALSE, NULL, NULL, OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY, _T("All Files(*.*)|*.*||"), this);CString strText = _T(".");strText += m_FileExt;if (dlg.DoModal() == IDOK){m_nFile = dlg.GetPathName();if (m_nFile.Right(4) != strText){m_nFile += strText;}UpdateData(FALSE);}}
void CjinduDlg::OnBnClickedButcopy(){// TODO: 在此添加控件通知处理程序代码UpdateData();HGLOBAL hGlobal;CFile* writefile; //声明文件指针CFile* readfile;long readlen, poslen, filelen;LPVOID pvData;if (m_oFile.IsEmpty()||m_nFile.IsEmpty()){MessageBox(_T("文件夹不能为空"), _T("提示"), MB_OK);return;}readfile = new CFile(m_oFile, CFile::modeRead); //打开源文件HANDLE hfile = ::CreateFile(m_nFile, GENERIC_WRITE|GENERIC_READ, 0, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);CloseHandle(hfile);writefile = new CFile(m_nFile, CFile::modeWrite); //打开目标文件filelen = readfile->GetLength(); //获取源文件大小ldiv_t r;r = ldiv(filelen, 100); //计算比率long pos = r.quot; //取整long ipos;ipos = pos;int i = 0;hGlobal = GlobalAlloc(GMEM_MOVEABLE, 512); //分配内存pvData = GlobalLock(hGlobal);while (1){ZeroMemory(pvData, 512);readlen = readfile->Read(pvData, 512);poslen = readfile->GetPosition();if (poslen > ipos){ipos += pos;i++;}m_Progress.SetPos(i); //设置进度条m_Progress.Invalidate(); //重绘进度条writefile->Write(pvData, readlen); //向目标文件写入数据if(poslen == filelen)break;}AfxMessageBox(_T("复制完成"));m_Progress.SetPos(0); GlobalUnlock(hGlobal);readfile->Close();writefile->Close();}
0 0
- 一系列MFC操作文件实例(中)
- 一系列MFC操作文件实例(上)
- 文件操作的一系列方法
- MFC中各种文件操作
- MFC中ADO方式操作数据库实例
- C++ MFC 中使用多线程操作实例
- MATLAB中读写一系列文件的方法
- MFC中可用的读写文件操作
- 在MFC中操作.ini文件
- MFC中ftream操作CSV文件
- MFC中对文件操作的类
- 文件读写实例(MFC)
- C#中FileInfo类操作文件实例
- MFC 中打开 文件,文件夹,以及删除文件,文件夹操作
- Android中XML的一系列操作,增、删、改、查!!!
- MFC 操作XML 实例 (转)
- MFC文件操作
- MFC中的文件操作
- 关于UIScrollView在StoryBoard/XIB无法滑动:方案二
- 深入学习Make命令和Makefile(下)(3)
- 【cpc】众多因素致黄金暂企稳,美初请将再次光临
- 如何快速开发一个智能聊天机器人
- 求职中我们的主要困惑!
- 一系列MFC操作文件实例(中)
- MD5加密
- How to add Oracle JDBC driver in your Maven local repository
- 使用AFNetworking 2.0 请求数据时出现错误 Request failed: unacceptable content-type: XXXX 解决方法
- HTML5将在未来扮演一个必不可少的角
- android listview 滚动时异步加载图片的问题
- cpc专家:可以对股市说拜拜 黄金比较安全
- 网络营销要赢得销售必须先赢得消费者
- Java桌面程序jar打包成exe可执行文件