【问题标题】:C++ MFC CFileDialog won't saveC ++ MFC CFileDialog不会保存
【发布时间】:2015-04-11 23:08:05
【问题描述】:

我创建了一个带有保存文件的菜单选项的 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);
}

bool 结果,纯粹是为了检查是否有问题/错误。

【问题讨论】:

  • 好吧,你必须编写代码将数据保存到 CFileDialog 返回给你的文件路径中。
  • DoModal 返回的不是布尔值,而是IDOKIDCANCEL

标签: c++ mfc cfiledialog


【解决方案1】:

文件保存对话框被称为“文件保存对话框”,因为它的标题是“保存文件”,它只允许您选择一个文件。这并不意味着它实际上会保存任何文件。它只是将用户选择的文件名返回给您。您仍然有责任编写将使用此文件名保存文件的代码。

【讨论】:

  • 谢谢!不知道..当我用谷歌搜索上面的代码时,几乎所有的答案都在上面,因为这是我第一次用 MFC 保存,我认为它应该可以工作。
  • 旁注:如果您将正确的标志传递给它,您可以使用CFileDialog 选择多个文件。
【解决方案2】:

CFileDialog 不会为您保存文件,它只是为您提供一个对话框,让用户确定文件应该保存在哪里(以及是否!)。在继续保存之前,应将 DoModal() 的返回值与 IDOK 进行比较。从对话框的成员函数中,您可以获得用户选择的路径和文件名。有了它,您可以创建/打开一个文件并保存您的数据。

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 2015-12-16
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2015-12-23
    • 2013-02-01
    相关资源
    最近更新 更多