我正在使用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)) ...