C++ MFC CFileDialog 不会保存

C++ MFC CFileDialog won't save

我创建了一个 MFC 程序,其中包含用于保存文件的菜单选项。当我单击它时,它会显示 CFileDialog,我可以选择要保存文件的位置。当我在对话框中单击保存时,它会关闭对话框,但之后它什么也不做。而且它没有保存我的文件。我做错了什么?

这是代码

CFileDialog *dlg = new CFileDialog(FALSE, L"dr", NULL, NULL,
                   L"Drawings (*.dr)|*.dr|"
                   L"All Files||");

bool result = dlg->DoModal();

if(result)
{
    MessageBox(0, dlg->GetPathName(), L"Draw", 0);
}

布尔结果,纯粹是为了检查是否没有problem/error。

文件保存对话框称为 "file save dialog",因为它的标题为 "Save File",它只允许您 select 一个文件。这并不意味着它实际上对文件进行了任何保存。它只是 returns 给你用户编辑的文件名 select。您仍然负责编写将使用此文件名保存文件的代码。

CFileDialog 不会为您保存文件,它只为您提供一个对话框,供用户确定(以及是否!)文件应保存在何处。在继续保存之前,应将 DoModal() 的 return 值与 IDOK 进行比较。从对话框的成员函数中,您可以获得用户选择的路径和文件名。这样,您就可以 create/open 一个文件并保存您的数据。