用过滤器打开文件对话框

Open file dialog with filter

本文关键字:文件 对话框 过滤器      更新时间:2023-10-16

我正在使用c++和MFC。我需要修改打开文件对话框,所以只有文件夹包含*.txt文件必须是可见的。什么好主意吗?

我没有使用MFC编程的任何经验,但这些是我的疑问。

没有理由这样做,特别是如果你要在所有可能的级别上过滤文件夹。想象一下,用户打开C:,程序开始扫描整个磁盘。如果这个磁盘是通过网络连接的,情况会更糟。

这就是为什么我怀疑在MFC中有这样的能力,所以你必须写这样一个对话框,只有当你决定只使用一些固定的嵌套级别来过滤文件夹时,这是可能的。

使用GetOpenFileName并适当设置OPENFILENAME结构体实例的过滤器成员

char szFile[MAX_PATH];
OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "Text*.TXT";
ofn.nFilterIndex = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn)) ...