QQ登录

只需一步,快速开始

182上位机VC MFC使用临时文件实现重做UNDO及REDO功能

[ 复制链接 ]

182上位机VC MFC使用临时文件实现重做UNDO及REDO功能

182上位机VC MFC使用临时文件实现重做UNDO及REDO功能

182上位机VC MFC使用临时文件实现重做UNDO及REDO功能
功能展示
在编辑文件时都有可能会出错,就得返回重做,我们当前例程通过创建几个临时文件实现重做UNDO及REDO功能,向编辑框输入内容,点击UDDO可返回前次输入内容;效果如图;
要点提示
临时文件是存放在系统目录下的临时使用的文件,临时文件的目录可以用函数GetTempPath();
临时文件名的获取可以用函数GetTempFileName();
然后是文件是创建,用类Cfile实现;
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1,用于输入文本;
拖拽两按钮控件,关联函数用于实现向前重做,退后重做;
3.添加三变量private: CStringList m_sPathListOSITION    m_PathPos; UINT        m_nTempFileNum;在OnInitDialog()中初始化
  1. //><
  2.         m_nTempFileNum   = 5;
  3.         TCHAR szTempPath[MAX_PATH];
  4.         DWORD dwResult=::GetTempPath(MAX_PATH, szTempPath);
  5.         ASSERT (dwResult);
  6.         TCHAR szTempFile[MAX_PATH];
  7.         for(UINT i=1;i<m_nTempFileNum+1;i++)
  8.         {
  9.                 GetTempFileName(szTempPath, _T ("~工控"),i,szTempFile);
  10.                 CFile MyFile(szTempFile,CFile::modeCreate|CFile::modeWrite);
  11.                 MyFile.Close();        
  12.                 m_sPathList.AddHead(CString(szTempFile));
  13.         }
  14.         m_PathPos = m_sPathList.GetHeadPosition();
复制代码
4实现两按钮的功能,与编辑框内容改变的触发函数
  1. void CGkbc8Dlg::OnUndo()
  2. {
  3.         CString sFileName;
  4.         POSITION  pos=m_PathPos;
  5.         m_sPathList.GetPrev(pos);
  6.         m_PathPos = pos;
  7.         if(!m_PathPos)
  8.         {
  9.                         m_PathPos = m_sPathList.GetTailPosition();
  10.                         pos = m_PathPos;
  11.         }
  12.         sFileName = m_sPathList.GetPrev(pos);

  13.         if(sFileName.IsEmpty())
  14.                 return;
  15.         CFile File(sFileName,CFile::modeRead);
  16.         char buf[1000];
  17.         ZeroMemory(buf,1000);
  18.         File.Read(buf,999);
  19.         File.Close();
  20.         SetDlgItemText(IDC_EDIT1,buf);
  21. }

  22. void CGkbc8Dlg::OnRedo()
  23. {
  24.         CString sFileName;
  25.         POSITION  pos=m_PathPos;
  26.         m_sPathList.GetNext(pos);
  27.         m_PathPos = pos;
  28.         if(!m_PathPos)
  29.         {
  30.                         m_PathPos = m_sPathList.GetHeadPosition();
  31.                         pos = m_PathPos;
  32.         }
  33.         sFileName = m_sPathList.GetNext(pos);

  34.         
复制代码
  1. if(sFileName.IsEmpty())
  2.                 return;
  3.         CFile File(sFileName,CFile::modeRead);
  4.         char buf[1000];
  5.         ZeroMemory(buf,1000);
  6.         File.Read(buf,999);
  7.         File.Close();
  8.         SetDlgItemText(IDC_EDIT1,buf);        
  9. }
  10. CString sFileName;
  11.         POSITION  pos=m_PathPos;
  12.         m_sPathList.GetNext(pos);
  13.         m_PathPos = pos;
  14.         if(!m_PathPos)
  15.         {
  16.                 m_PathPos = m_sPathList.GetHeadPosition();
  17.                 pos =m_PathPos;
  18.         }
  19.         sFileName=m_sPathList.GetNext(pos);
  20.         //
  21.         if(sFileName.IsEmpty())
  22.                 return;
  23.         CFile File;
  24.         if(!File.Open(sFileName,CFile::modeWrite,NULL))
  25.         {
  26.                 MessageBox("打开文件操作失败","信息提示",MB_OK);
  27.                 return;
  28.         }

  29.         CString sText;
  30.         GetDlgItemText(IDC_EDIT1,sText);
  31.         File.Write(sText,sText.GetLength());
  32.         File.Close();
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:182.上位机VC MFC使用临时文件实现重做UNDO及REDO功能.rar 
文件大小:154.23 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索