方法一:
1. 在文件开头添加引用文件
#include <fstream>
using namespace std;
2. 在保存消息函数内添加如下代码:
void CConfigure::OnBnClickedBtnSave()
{
// TODO: Add your control notification handler code here
CString str;
// 创建另存对话框
CFileDialog saveDlg(FALSE,".txt",
NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"文本文件(*.txt)|*.txt|""文档文件(*.doc)|*.doc|""表格文件(*.xls)|*.xls|""All Files(*.*)|*.*||");
saveDlg.m_ofn.lpstrInitialDir = "c:\\"; // 另存对话框默认路径为c盘
// 进行保存动作
if (saveDlg.DoModal() == IDOK)
{
ofstream ofs(saveDlg.GetPathName());
CStatic * pst = (CStatic*)GetDlgItem(IDC_EDIT_FILE); // 获取要保存编辑框控件内的数据
// IDC_EDIT_FILE是编辑框控件句柄
pst->GetWindowTextA(str);
ofs << str;
}
}
保存多种类型的文件,保存对话框的设置,可参考此例。
方法二:
在save消息函数中添加如下代码:
CFileDialog tDlg(false,"txt",NULL,0,"Excel文件(*.txt)|*.txt||");
if (tDlg.DoModal()==IDOK)
{
CString nFilename;
nFilename=tDlg.GetPathName();
CFile nFile(nFilename, CFile::modeCreate|CFile::modeReadWrite);
CStatic*pst=(CStatic*)GetDlgItem(IDC_EDIT_PELTIER1);
CString str;
pst->GetWindowText(str);
CArchive save(&nFile, CArchive::store|CArchive::bNoFlushOnDelete);
save<<str;
save.Close();
}
用此方法保存的文件,总会在文件开头添加一字符,方法一则不会。
方法三:
// 创建另存对话框
CFileDialog saveDlg(FALSE,".txt",
NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"文本文件(*.txt)|*.txt|""文档文件(*.doc)|*.doc|""表格文件(*.xls)|*.xls|""All Files(*.*)|*.*||",
NULL,0,TRUE);
// saveDlg.m_ofn.lpstrInitialDir = "c:\\"; // 另存对话框默认路径为c盘
// 进行保存动作
if (saveDlg.DoModal() == IDOK)
{
CFile nFile(saveDlg.GetPathName(),CFile::modeCreate | CFile::modeReadWrite); // 创建文件,用选取的文件名
nFile.Write(sStatus,sStatus.GetLength()); // 将要保存的数据写入文件 (CString sStatus为要写入的内容)
nFile.Close(); // 完成文件写入
}
方法一缺点,在连续更新字符添加"\r\n"后,以excel格式保存,会多出一个回车键,而以txt格式保存则不会。
方法二缺点,在文件开头会多出乱码。
方法三最好。
CFile使用参考:
http://blog.youkuaiyun.com/phenixyf/article/details/42915591
改变保存对话框样式,参考下面网址:
http://msdn.microsoft.com/zh-cn/library/43xtah3y
CFileDialog 的定义,参考下面网址: