Windows编程基础--第14节 MFC之文件对话框CFileDialog

第14节 MFC之文件对话框CFileDialog


今天我们学习两个打开文件对话框、保存文件对话框,应用程序难免需要加载文件,或者打开配置文件等,这就用到打开或者保存对话框,例如windows文本编辑器中保存对话框就属于其中一种:
这里写图片描述


1. 新建项目

新建一个基于对话框项目“day16”,布局如下,自行处理:
这里写图片描述
拖动一个EDIT到界面,并修改如下属性:

属性修改值解释
IDIDC_EDIT_TXT控件ID
Want ReturnTRUE允许回车
MultilineTRUE允许多行
Horizontal ScollTRUE水平滚动天
Vertical ScollTRUE垂直滚动条

2. 添加菜单资源

切换到资源视图,添加菜单资源如下:
这里写图片描述
若不知道怎么添加菜单请参考Windows编程基础–第10节 MFC菜单

注意:菜单选项最后加上&符号可以设置快捷键,如“文件(&F)”,当程序运行时可以通过ALT + F快捷打开文件菜单选项;

将菜单绑定到主界面:
这里写图片描述

3. 实现文件打开对话框

右击菜单中“打开”选项,选择“添加事件处理处理程序”,添加处理程序,如图:
这里写图片描述其中行数处理程序名称:OnFileOpen,类列表选择:Cday16Dlg,添加编辑:
函数代码如下:

void Cday16Dlg::OnFileOpen()
{
    // TODO: 在此添加命令处理程序代码
    CFileDialog dlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST,_T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"),this);
    dlg.m_ofn.lpstrInitialDir = _T("C:\\");
    if (dlg.DoModal()  == IDOK)
    {
        CStdioFile inFile;
        inFile.Open(dlg.GetPathName(),CFile::modeRead);
        CString text;
        CString temp;
        while(inFile.ReadString(text))
        {    
            GetDlgItemText(IDC_EDIT_TXT,temp);
            if (temp.GetLength() > 0)
            {
                SetDlgItemText(IDC_EDIT_TXT,temp +"\r\n"+ text);
            }
            else
            {
                SetDlgItemText(IDC_EDIT_TXT,text);
            }

        }

        inFile.Close();
    }
}

代码解释:

  1. 创建一个txt文件对话框;
  2. 如文件对话框确定按钮被点击,则打开文件位置,文件全路径就是dlg.GetPathName();
  3. 循环读取文件,知道文件读取结束;每读一行就先获取界面文本框的内容加上新读取的文本,重新设置到界面;
  4. 关闭文件

这样一个打开文件对话框就完成了,效果图如下:
这里写图片描述

3. 实现文件保存对话框

右击菜单中“保存”选项,选择“添加事件处理处理程序”,添加处理程序,如图:
这里写图片描述
名称:OnSaveFile,类列表选择:Cday16Dlg,添加编辑:
函数代码如下

void Cday16Dlg::OnSaveFile()
{
    // TODO: 在此添加命令处理程序代码
    CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST,_T("文本文件(*.txt)|*.txt||"),this);
    if (dlg.DoModal()  == IDOK)
    {
        CFile file;  //建立一个CFile对象
        //打开文件,如果不存在该文件就创建文件
        if(!file.Open(dlg.GetPathName(),CFile::modeCreate|CFile::modeWrite))
        {
            AfxMessageBox( "can   not   Create   file! ");
            return;
        } 

        CString output;
        GetDlgItemText(IDC_EDIT_TXT,output);
        file.Write(output,strlen(output));
        file.Flush();    //将在缓冲区中的字符写入文件中
        file.Close();   //关闭文件
        AfxMessageBox( "保存成功!");
    }
}

代码解释:

  1. 创建一个txt文件保存对话框;
  2. 如文件对话框确定按钮被点击,则获取文件位置,文件全路径就是dlg.GetPathName();
  3. 先获取界面文本框的内容,将内容写到文件中;
  4. 关闭文件
    效果图:
    这里写图片描述

好了,这节我们演示了如何创建文件打开和保存对话框,希望对大家有作用,今天就到这了。

项目源码可以访问我的码云

>>>我的私人博客<<<

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ MFC中的文件打开和保存对话框可以通过CFileDialog类来实现。CFileDialog类是MFC提供的一个对话框类,用于选择文件的打开和保存操作。 要使用CFileDialog类,首先需要包含头文件<afxdlgs.h>。然后可以创建一个CFileDialog对象,并使用DoModal()函数来显示对话框。 下面是一个简单的示例代码,演示如何使用CFileDialog类来实现文件的打开和保存对话框: ```cpp #include <afxdlgs.h> // 文件打开对话框示例 void OpenFile() { CFileDialog dlg(TRUE); // 创建一个打开文件对话框 if (dlg.DoModal() == IDOK) // 显示对话框并检查用户是否点击了“打开”按钮 { CString filePath = dlg.GetPathName(); // 获取用户选择的文件路径 // 在这里可以对文件进行处理,比如读取文件内容等 } } // 文件保存对话框示例 void SaveFile() { CFileDialog dlg(FALSE); // 创建一个保存文件对话框 if (dlg.DoModal() == IDOK) // 显示对话框并检查用户是否点击了“保存”按钮 { CString filePath = dlg.GetPathName(); // 获取用户选择的文件路径 // 在这里可以将数据保存到文件中 } } ``` 在上面的示例代码中,OpenFile()函数演示了如何使用CFileDialog类来实现文件的打开对话框。首先创建一个CFileDialog对象,参数TRUE表示打开文件对话框。然后调用DoModal()函数显示对话框,并检查用户是否点击了“打开”按钮。如果用户点击了“打开”按钮,可以通过GetPathName()函数获取用户选择的文件路径。 SaveFile()函数演示了如何使用CFileDialog类来实现文件的保存对话框。与打开对话框类似,首先创建一个CFileDialog对象,参数FALSE表示保存文件对话框。然后调用DoModal()函数显示对话框,并检查用户是否点击了“保存”按钮。如果用户点击了“保存”按钮,可以通过GetPathName()函数获取用户选择的文件路径。 需要注意的是,CFileDialog类还提供了其他一些函数来设置对话框的标题、过滤器、默认文件名等属性,可以根据实际需求进行设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值