wxWidgets - 将所有文件夹写入列表框
wxWidgets - Write all folders into a listbox
我知道有一个线程有类似的问题,但它没有按照应有的方式工作。我对 c++ 和 wxWidgets 相当陌生,所以请尽可能简单。
void dlgMain::getAllDirectories(wxString Path)
{
wxDir dir(Path);
wxString dirName = dir.GetName();
wxArrayString dirList;
dir.GetAllFiles(dirName, &dirList, wxEmptyString, wxDIR_DIRS | wxDIR_FILES);
m_lbDir->Clear();
for (int i = 0; i < dirList.size(); i++)
{
//wxMessageBox(dirList[i].c_str());
m_lbDir->Append(dirList[i].c_str());
}
}
路径包含目录的路径(即"C:\Folder1\")。我想在我的列表框中列出文件夹1中的所有文件夹(不是文件)。我的问题是它不能按照我想要的方式与 GetAllFiles() 一起工作。它返回所有目录,子目录和文件,并列出它们的完整路径。我试过只使用 wxDIR_DIRS 作为过滤器,但这不会返回任何内容?有什么想法吗?
如果您只想获取目录,而不是子目录或文件,则可以创建一个派生自wxDirTraverser
的类来执行此操作,如下所示:
#include <wx/dir.h>
class wxDirectoriesEnumerator : public wxDirTraverser {
public:
wxArrayString *dirs;
wxDirectoriesEnumerator(wxArrayString* dirs_) {
dirs=dirs_;
}
//This function will be called when a file is found
virtual wxDirTraverseResult OnFile(const wxString& filename) {
//Do nothing, continue with the next file or directory
return wxDIR_CONTINUE;
}
//This function will be called when a directory is found
virtual wxDirTraverseResult OnDir(const wxString& dirname) {
//Add the directory to the results
dirs->Add(dirname);
//Do NOT enter this directory
return wxDIR_IGNORE;
}
};
然后,您可以按如下方式使用它:
wxArrayString dirList;
wxDirectoriesEnumerator traverser(&dirList);
wxDir dir("C:\Folder1");
if (dir.IsOpened()) {
dir.Traverse(traverser);
ListBox1->Clear();
for(unsigned int i=0; i<dirList.GetCount(); i++) {
//The name is what follows the last or /
ListBox1->Append(dirList.Item(i).AfterLast('').AfterLast('/'));
}
}
我想你会想用m_lbDir
替换ListBox1
,如果这是你的列表框的名称。
相关文章:
- 如何将更多文件夹添加到c++include路径
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在文档文件夹中创建目录
- 使用GCC的C makefile - 从子文件夹列表中生成源文件列表
- 如何使用 Win API 获取文件夹中的文件列表(带过滤器)
- QDIR入口列表可以使用文件夹快捷方式透明地工作
- 读取文件夹中的文件列表时获取分段折叠
- wxWidgets - 将所有文件夹写入列表框
- 如何在Windows中为当前用户获取库文件夹列表
- 按最顶端合并文件夹列表
- 如何获取给定文件夹中具有特定扩展名的文件列表
- 如何在Windows平台中获取远程Windows服务器的共享文件夹的文件列表
- 如何获得ftp服务器中所有文件和文件夹的列表(c++)
- 如何在c++中用一个目录中的所有文件夹填充一个列表框
- Linux dient:获取目录中所有文件夹的列表
- 获取用户计算机上文件名按文本行筛选的文件和文件夹列表
- 获取受UAC保护的文件夹列表
- 获取文件夹中文件的有序列表