【问题标题】:How to write string from EditControl to a text file in Visual Studio 2008 , using the "Save To.." dialog?如何使用“保存到..”对话框将字符串从 EditControl 写入 Visual Studio 2008 中的文本文件?
【发布时间】:2026-01-15 14:55:02
【问题描述】:

我正在 MFC 中编写我的第一个应用程序,我希望包含一个非常简单的功能:包含一个“保存到文件”按钮,单击该按钮会弹出熟悉的“另存为..”对话框和最终将数据保存在文本文件中。我找不到如何调用此对话框 - 有人可以指出正确的方法吗?

【问题讨论】:

    标签: visual-studio-2008 visual-c++ mfc file-io savefiledialog


    【解决方案1】:

    你需要的是 CFileDialog :

    CFileDialog d(FALSE);
    if(IDOK == d.DoModal())
    {
        CString sFileName = dlg.GetPathName();
    
        // ... Save your text to the file
    
    }
    

    CFileDialog 构造函数中有许多参数可以更改以影响对话框的行为,请查看 MSDN 文档了解详细信息。

    【讨论】:

    • 那么,我是否必须将 CFileDialog 对象作为我的类的成员,还是可以将整个声明和用法放在 OnBtnClicked() 事件处理程序下?
    • 你可以在你的事件处理程序中声明和使用它。
    【解决方案2】:

    对于您所描述的内容,您可能应该只使用CEditView 而不是编写自己的代码。它是预先编写的、经过测试的等等。

    对于大多数其他情况,您应该意识到 MFC 本身通常会处理创建 Save As... 对话框等的细节,因此您通常只需将代码放入文档类的 Serialize() 成员函数中即可读取并写入您的文档数据。它传递了对CArchive 对象的引用,因此您所要做的就是为您的文档对象写入或读取数据。

    【讨论】:

    • 我查看了 CEditView,我猜它有很多我不想要的功能 - 我的对话框中有一个 EditControl,当用户单击时我想保存它的内容“另存为”按钮。我找到了一个类(SaveFileDialog),它可能会解决我的问题,但我无法在网上找到一个很好的例子来展示如何使用它。我没有 MFC 书,所以我只有谷歌!我告诉你这个是因为从你的回复中,你看起来是一个对 MFC 非常有经验的人,也许可以给我举一个这样的例子。谢谢!!