MFC怎么获取指定类型文件命
时间: 2023-10-04 18:05:00 浏览: 42
令?
MFC中可以使用CFileDialog类来打开文件对话框,然后设置文件类型过滤器,只显示指定类型的文件,示例代码如下:
```c++
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Text files (*.txt)|*.txt|All files (*.*)|*.*||"));
dlg.DoModal();
CString strFilePath = dlg.GetPathName();
```
上述示例代码中,第四个参数是文件类型过滤器,只显示txt类型的文本文件。你可以根据自己的需要修改文件类型过滤器。如果需要获取文件名,可以调用GetFileName()方法,如果需要获取文件路径,可以调用GetPathName()方法。
相关问题
MFC 获取文件夹下某个类型文件的个数简单的方法
你可以使用以下代码来获取文件夹下某个类型文件的个数:
```cpp
int GetFileCount(LPCTSTR lpszFolder, LPCTSTR lpszExt)
{
CString strFolder = lpszFolder;
if (strFolder.Right(1) != _T("\\"))
strFolder += _T("\\");
strFolder += _T("*.") + CString(lpszExt);
CFileFind finder;
BOOL bWorking = finder.FindFile(strFolder);
int nCount = 0;
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
continue;
if (finder.IsDirectory())
continue;
++nCount;
}
finder.Close();
return nCount;
}
```
使用时,将文件夹路径和文件类型作为参数传递给该函数即可。例如,要获取文件夹 "D:\Test" 中所有的 ".txt" 文件数量,可以这样调用函数:
```cpp
int nCount = GetFileCount(_T("D:\\Test"), _T("txt"));
```
该函数使用了 MFC 的 CFileFind 类来查找符合条件的文件。它遍历了文件夹下的所有文件,如果文件名的后缀和指定的文件类型相同,则将文件数量加 1。最后返回统计出的文件数量。
MFC结构体OPENFILENAME
OPENFILENAME是Windows API中的一个结构体,用于在文件对话框中指定文件名和路径等信息。在MFC中,CFileDialog类是对OPENFILENAME的封装,提供了一些常用操作。OPENFILENAME结构体的成员变量包括:
- lStructSize:结构体大小,必须设置为sizeof(OPENFILENAME)。
- hwndOwner:父窗口句柄。
- hInstance:应用程序实例句柄。
- lpstrFilter:文件类型过滤器,例如"Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0"。
- lpstrCustomFilter:自定义文件类型过滤器。
- nMaxCustFilter:自定义文件类型过滤器的最大长度。
- nFilterIndex:默认选中的文件类型过滤器的索引。
- lpstrFile:接收选中文件名的缓冲区。
- nMaxFile:接收选中文件名的缓冲区大小。
- lpstrFileTitle:接收选中文件名(不包括路径)的缓冲区。
- nMaxFileTitle:接收选中文件名(不包括路径)的缓冲区大小。
- lpstrInitialDir:初始目录。
- lpstrTitle:对话框标题。
- Flags:标志位,例如OFN_FILEMUSTEXIST表示文件必须存在,OFN_OVERWRITEPROMPT表示询问是否覆盖已存在的文件等。
- nFileOffset:选中文件名在lpstrFile中的偏移量。
- nFileExtension:选中文件名的扩展名在lpstrFile中的偏移量。
- lpstrDefExt:默认文件扩展名。
<<引用:m_ofn是OPENFILENAME结构体的一个对象,CFileDailog只是对OPENFILENAME的傻瓜式封装,提供了一些常用操作。>>