用过滤器打开文件对话框

时间:2013-01-09 16:43:53

标签: c++ windows mfc

我正在使用C ++和MFC。我需要修改“打开文件”对话框,因此只有文件夹包含* .txt文件必须可见。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:-1)

使用GetOpenFileName并相应地设置OPENFILENAME结构实例的过滤器成员。

char szFile[MAX_PATH];

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

if (GetOpenFileName(&ofn)) ...