CFileDialog的用法,有趣的段子拍摄技巧视频

CFileDialog是MFC中的一个类,它实现了文件打开和文件保存对话框的功能,可以让用户选择文件或者指定文件保存的路径和名称。这个类非常方便,应用范围广泛,比如在图像处理、文本编辑、音视频播放等应用中都可以用到。下面我们就来具体介绍一下它的用法。

一、CFileDialog的基本概念

CFileDialog是MFC中的一个类,它继承自CCommonDialog,实现了文件打开和文件保存对话框的功能。使用CFileDialog类,可以很方便地在对话框中选择或指定文件的路径或名称。CFileDialog包括以下几个主要的成员函数:

1. CFileDialog::CFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL);  

该函数是构造函数,用于初始化CFileDialog对象,并设置打开文件还是保存文件的操作。

2. INT_PTR CFileDialog::DoModal();

该函数用于显示打开或保存文件的对话框,并返回用户在对话框中所选择的文件路径或名称。

3. CString CFileDialog::GetPathName() const;

该函数用于获取用户所选择的文件的完整路径名,并返回一个CString对象。

4. CString CFileDialog::GetFileName() const;

该函数用于获取用户所选择的文件的文件名(不包含路径),并返回一个CString对象。

5. CString CFileDialog::GetFileExt() const;

该函数用于获取用户所选择的文件的扩展名,并返回一个CString对象。

6. CString CFileDialog::GetFileTitle() const;

该函数用于获取用户所选择的文件的文件名(不包含扩展名),并返回一个CString对象。

二、CFileDialog的常用操作

CFileDialog的常用操作包括设置过滤器、设置初始目录、设置默认文件名等。下面我们就来一一介绍。

1. 设置过滤器

设置过滤器可以控制在对话框中显示的文件类型,只有符合过滤器规定的文件才会在对话框中显示出来。过滤器的格式是一些以NULL结尾的字符串,每两个字符串表示一对(例如:L"Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0"),其中,第一个字符串表示在对话框中所显示的文件类型名称,第二个字符串表示对应的文件类型,可以是文件扩展名,也可以是文件类型描述。注意,每一对字符串必须以NULL结尾。这个字符串可以通过CFileDialog的构造函数或者SetFilter函数来设置。

下面是一个例子:

```c++

CFileDialog dlg(TRUE, _T("*.txt"), NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), this);

```

其中,第一个参数TRUE表示打开文件对话框,第二个参数"\*.txt"表示默认显示的文件类型。第三个参数为NULL表示不指定初始文件名,第四个参数用于设置一些标志位,这里设置为OFN_FILEMUSTEXIST和OFN_HIDEREADONLY,表示文件必须存在且只读。第五个参数是一个过滤器字符串。

2. 设置初始目录

设置初始目录可以控制对话框显示的起始目录,可以通过CFileDialog的SetCurrentDirectory函数来设置。例如:

```c++

CString strFolder = "C:\\MyFolder";

dlg.SetCurrentDirectory(strFolder);

```

其中,strFolder是一个CString对象,表示初始目录的完整路径名。

3. 设置默认文件名

设置默认文件名可以控制对话框中默认显示的文件名。可以通过CFileDialog的SetFileName函数来设置。例如:

```c++

CString strFile = "MyFile.txt";

dlg.SetFileName(strFile);

```

其中,strFile是一个CString对象,表示默认的文件名。

三、CFileDialog的示例应用

下面我们就来用实际的代码来演示一下CFileDialog的用法。为了方便起见,我们就以MFC的SDI应用为例,演示如何使用CFileDialog打开和保存文件。

1. 打开文件

在OnOpen函数中,我们首先创建一个CFileDialog对象,将它的第一个参数设置为TRUE表示打开文件对话框,第二个参数指定过滤器,第三个参数设置为NULL表示不指定初始文件名,第四个参数设置标志位OFN_FILEMUSTEXIST和OFN_HIDEREADONLY,表示文件必须存在且只读。然后调用DoModal函数来显示对话框,获取用户所选择的文件路径,最后将文件内容读入程序。

```c++

void CMFCDoc::OnOpen()

{

CString strFilter = _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||");

CFileDialog dlg(TRUE, _T("*.txt"), NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, strFilter, NULL);

if (dlg.DoModal() == IDOK)

{

CString strPathName = dlg.GetPathName();

CFile file(strPathName, CFile::modeRead | CFile::shareDenyNone);

DWORD dwFileSize = (DWORD)file.GetLength();

char* pBuffer = new char[dwFileSize + 1];

memset(pBuffer, 0, dwFileSize + 1);

file.Read(pBuffer, dwFileSize);

SetWindowText(pBuffer);

delete[] pBuffer;

file.Close();

}

}

```

2. 保存文件

在OnSave函数中,我们首先创建一个CFileDialog对象,将它的第一个参数设置为FALSE表示保存文件对话框,第二个参数指定过滤器,第三个参数设置为NULL表示不指定初始文件名,第四个参数设置标志位OFN_HIDEREADONLY,表示不可写入。然后调用DoModal函数来显示对话框,获取用户所选择的文件路径,最后将文件内容写入程序。

```c++

void CMFCDoc::OnSave()

{

CString strFilter = _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||");

CFileDialog dlg(FALSE, _T("*.txt"), NULL, OFN_HIDEREADONLY, strFilter, NULL);

if (dlg.DoModal() == IDOK)

{

CString strPathName = dlg.GetPathName();

CString strContent;

GetWindowText(strContent);

CFile file(strPathName, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyNone);

file.Write(strContent, strContent.GetLength());

file.Close();

}

}

```

四、CFileDialog的总结

CFileDialog是MFC中实现打开和保存文件对话框的一个非常方便的类,它允许用户选择文件、指定文件名和文件路径等操作,非常适合用于图像处理、文本编辑、音视频播放等应用。要使用CFileDialog,我们需要掌握设置过滤器、设置初始目录、设置默认文件名等常用操作,非常容易上手。

购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!

网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!

点赞(42) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部