C++ Windows API DLGDRIST有时不返回正确的列表

C++ Windows API DLGDRIST有时不返回正确的列表,c++,winapi,listbox,directory-listing,file-listing,C++,Winapi,Listbox,Directory Listing,File Listing,我有两个列表框,一个总是列出路径中的目录,另一个列出所选目录中的文件 第一次选择目录时,文件会正确显示,但如果选择另一个目录,则不会列出任何内容 这是我当前的main.cpp,所有GUI内容都发生在这里: 列表框代码从第31行到第45行,从第150行到第165行 提前谢谢 -------------------------编辑-------------------------------- 我在sel字符串上放了一个简单的std::cout,结果是在我选择的第一个目录上,它是,然后它变成了Dir

我有两个列表框,一个总是列出路径中的目录,另一个列出所选目录中的文件

第一次选择目录时,文件会正确显示,但如果选择另一个目录,则不会列出任何内容

这是我当前的main.cpp,所有GUI内容都发生在这里:

列表框代码从第31行到第45行,从第150行到第165行

提前谢谢

-------------------------编辑--------------------------------


我在sel字符串上放了一个简单的std::cout,结果是在我选择的第一个目录上,它是,然后它变成了DirectoryName\,我尝试将sel字符串更改为./DirectoryName,但没有成功,仍然出现\但这不是困扰我的,真正奇怪的是第一个选择返回到sel字符串

我认为DlgDirList函数的文档中有线索:

如果lpPathSpec指定一个目录,DLGDIRLISTCOMBOX将更改 在填充列表之前,将当前目录添加到指定目录 盒子


我本人从未使用过这些函数,但我敢打赌,您的当前目录正在被修改,因此后续对DlgDirList的调用出现在错误的位置。

是的,第一个列表中的当前目录正在不断更改,但这些更改正在第31到45行处理。@Conflux如何处理?我没有看到任何调用SetCurrentDirectory会将其设置回原始位置。好的,这开始有意义了。但我已经尝试将其设置为相对路径,但效果不好,正如您在我的编辑中看到的那样。在填充第一个列表行150到165之后,我尝试撤消相对路径并使用SetCurrentDirectorydir,但实际上没有任何更改。在选择更改处理程序上执行此操作对我来说没有任何意义。我认为如果您在第一次更改后返回父路径,它应该可以工作,例如SetCurrentDirectoryL。。;,尽管您也可以使用绝对路径,以避免混淆。