https://blog.youkuaiyun.com/qq_38611124/article/details/82760622 SaveOrOpen类
文件菜单栏选项:
类向导---命令----对应的ID函数
打开文件:
void CNoteDlg::OnFileOpen()
{
SaveOrOpen sp;
if (IDCANCEL == sp.OpenFileDialog())
return;
m_Path = sp.GetPath(); //获取文件路径
CString szData = sp.Open(m_Path); //打开文件,并获取里面的数据
SetDlgItemText(IDC_EDIT, szData); //将数据设置到对应的控件
//将获取的文件名设置为标题
SetWindowText(sp.GetFileName() + _T("-记事本")); //将文件名设置到标题栏上
}
文件保存:
void CNoteDlg::OnFileSave()
{
SaveOrOpen sp;
CString str;
GetDlgItemText(IDC_EDIT, str); //从控件上获取数据
//在选择取消时,把获取的数据重新设置窗口上
if (IDCANCEL == sp.SaveFileDialog())
{
SetDlgItemText(IDC_EDIT, str);
return;
}
CString Path = sp.GetPath(); //获取保存的路径
sp.Save(Path, str, ANSI); //ANSI是保存为多字节文件
//当文件修改后,点击保存后,在点击退出。不会提示
CEdit *e = (CEdit*)GetDlgItem(IDC_EDIT);
e->SetModify(FALSE);
}
退出:
void CNoteDlg::OnFileExit()
{
SendMessage(WM_CLOSE); //菜单的关闭消息,发送给系统的关闭
}
系统关闭:
void CNoteDlg::OnClose()
{
SaveOrOpen sp;
//在退出时,文件修改后没有保存,就提示保存
CEdit *e = (CEdit*)GetDlgItem(IDC_EDIT);
if (e->GetModify())
{
CString str = sp.GetPath();
int nResult;
//文件名为空,就创建一个新的文件,否则的话,直接保存
if (m_Path.IsEmpty())
{
m_Path = _T("./无标题");
nResult = AfxMessageBox(_T("是否保存到 无标题"), MB_OKCANCEL);
}
else
nResult = AfxMessageBox(_T("是否保存到\r\n") + m_Path, MB_OKCANCEL);
if (IDOK == nResult)
OnFileSave();
}
CDialogEx::OnClose();
}