
1. 传统的数据存储,将数据定义到一个结构体中,用CFile的方式循环读写数据结构体
![]()
struct SData
{
UINT nNumb;
TCHAR sName[20];
COleDateTime date;
};
void CfffDlg::OnBnClickedSave()
{
//另存为对话框
CFileDialog fd(FALSE, _T("*.fff"), _T("example"), OFN_OVERWRITEPROMPT, _T("信息文件(*.fff)|*.fff|所有文件|*.*||"), NULL);
if (IDCANCEL == fd.DoModal())
return;
CFile file;
if (!file.Open(fd.GetPathName(), CFile::modeCreate | CFile::modeWrite))
{
MessageBox(_T("保存文件出错!"), _T("Tip"));
return;
}
SData s;
for (int i = 0; i < m_list.GetItemCount(); ++i)
{
s.nNumb = _ttoi(m_list.GetItemText(i,0));
m_list.GetItemText(i, 1, s.sName, sizeof(s.sName) / sizeof(s.sName[0]));
s.date.ParseDateTime(m_list.GetItemText(i, 2));
file.Write(&s, sizeof(s));
}
}
void CfffDlg::OnBnClickedLoad()
{
// TODO: 在此添加控件通知处理程序代码
LPCTSTR szFilter = _T("信息文件(*.fff)|*.fff|所有文件|*.*||");
//打开对话框
CFileDialog fd(TRUE, _T("*.fff"), NULL, OFN_FILEMUSTEXIST, szFilter, NULL);
if (IDCANCEL == fd.DoModal())
return;
CFile file;
if (!file.Open(fd.GetPathName(), CFile::modeRead))
{
MessageBox(_T("打开文件失败!"));
return;
}
SData s;
CString str;
m_list.DeleteAllItems();
for (int i = 0; file.Read(&s, sizeof(s)) == sizeof(s); ++i)
{
str.Format(_T("%d"), s.nNumb);
m_list.InsertItem(i, str);
m_list.SetItemText(i, 1, s.sName);
m_list.SetItemText(i, 2, s.date.Format(VAR_DATEVALUEONLY));
}
}
View Code