如何保存mfc列表控件中的数据到txt文件

如何保存mfc列表控件中的数据到txt文件,第1张

假设你的listContrl控件的变量为m_Listctrl,那么,参考以下代码:

void Cxxx::ListExport()

{

 int item_count=m_ListCtrl.GetItemCount()

 if (item_count==0)

 {

  MessageBox(_T("列表为空时不能导出。"),_T("警告"),MB_OK|MB_ICONEXCLAMATION)

  return

 }

 OPENFILENAME *ofn=new OPENFILENAME

 TCHAR szFile[MAX_PATH]

 ZeroMemory(szFile,sizeof(szFile)/sizeof(TCHAR))

 ZeroMemory(ofn,sizeof(OPENFILENAME))

 ofn->lStructSize=sizeof(OPENFILENAME)

 ofn->hwndOwner = m_hWnd  

 ofn->lpstrFile = szFile 

 ofn->lpstrFile[0] = _T('\0')  

 ofn->nMaxFile = sizeof(szFile)

 ofn->lpstrFilter = _T("文本文件\0*.txt\0")

 ofn->nFilterIndex = 1  

 ofn->lpstrFileTitle = NULL  

 ofn->nMaxFileTitle = 0  

 ofn->lpstrInitialDir = _T("Record//")  

 ofn->Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST  

 CString strFile

 // 显示打开选择文件对话框。  

 if ( GetSaveFileName(ofn))  

 {  

  //显示选择的文件。  

  strFile.Format(_T("%s"),szFile)

 }else

 {

  return

 }

 delete ofn

 ofn=NULL

 CString tmp

 int len=strFile.GetLength()

 int lastdir=0

 for (int i=len-1i>=0i--)

 {

  if (((int)strFile.GetAt(i))!=-1)

  {

   lastdir=i//反射查找

   break

  }

 }

 tmp=strFile.Right(4)

 int pos=tmp.Find(_T(".txt"))//找后缀名

 if (pos==-1)

 {

  strFile+=_T(".txt")

 }

 CStdioFile RecFile

 CFileException fileException

 if (RecFile.Open(strFile,CFile::typeText|CFile::modeCreate|CFile::modeWrite|CFile::shareExclusive),&fileException)

 {

  m_HandleProgress.SetPos(0)

  char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) ) 

  setlocale( LC_CTYPE, "chs" )//设定中文

  RecFile.WriteString(_T("  序号\t  AA  \t     BB  \t\t      CC\t\t DD\t EE \t FF\t GG\r\n"))

  RecFile.WriteString(_T("=========================================================================================================\r\n"))

  for (int i=0i<item_counti++)

  {

   RecFile.WriteString(m_ListCtrl.GetItemText(i,0))

   RecFile.WriteString(_T("\t"))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,1))

   RecFile.WriteString(_T("\t  "))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,2))

   RecFile.WriteString(_T("  \t"))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,3))

   RecFile.WriteString(_T("\t"))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,4))

   RecFile.WriteString(_T("\t  "))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,5))

   RecFile.WriteString(_T("\t"))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,6))

   RecFile.WriteString(_T("\t"))

   RecFile.WriteString(m_ListCtrl.GetItemText(i,7))

   RecFile.WriteString(_T("\r\n"))

  }

  setlocale( LC_CTYPE, old_locale ) 

  free( old_locale )//还原区域设定

  RecFile.Close()

 }

}

int i = 56789

CString str

str.Format(_T("%d"),i)

file.Write(str.GetBuffer(),str.GetLength())

str.ReleaseBuffer()

file.Close()int类型变量,直接写入文件,是16进制格式,占4个byte(char)大小。

要想将int写入文本文件并直观可见,需要先转换为字符串,再写入文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/8004165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存