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

求具体代码。... 求具体代码。 展开
 我来答
paradise300
2013-12-12 · TA获得超过3561个赞
知道大有可为答主
回答量:2589
采纳率:84%
帮助的人:503万
展开全部

假设你的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-1;i>=0;i--)
 {
  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=0;i<item_count;i++)
  {
   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();
 }
}
归悦欣cf
2013-12-12 · TA获得超过1444个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1329万
展开全部
把列表控件里面的内容读出组合成一个字符串,然后把字符串写进文件即可.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kepomsc
2013-12-13 · TA获得超过269个赞
知道小有建树答主
回答量:455
采纳率:100%
帮助的人:209万
展开全部
void fnOutPutToFile(CListCtrl *pList)
{
CString sFile="d:\\文件名.txt";
CString sContent="";//文件内容存储
int iRowCount= pList->GetItemCount();
int iCellCount=pList->GetHeaderCtrl()->GetItemCount(); //取得列数
for(int iRow=0;iRow<iRowCount;iRow++) //遍历行
{
////遍历列
CString sLine ;//行文本
for(int iCell=0;iCell<iCellCount;iCell++)
{
sLine+=pList->GetItemText(iRow,iCell);
sLine+= "\t" ;//行分隔定义,这里是制表符

}
//行结束,存储到总文本中

sContent+=sLine;

sContent+="\r\n";

}

}
运行的时候将对象地址放入即可
::fnOutPutToFile(&mcList);//mcList是CListCtrl控件对象名.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式