如果未设置 Archive 属性且设置了 Index 属性,CComboBox::Dir 函数不会列出目录
我正在使用 CComboBox::Dir(DDL_READWRITE, path) 来填充组合框的内容。一切都很好,但是当我重置 Archive 标志并设置 Index 标志时,Dir() 不返回任何文件。 使用
attrib -A *.*
attrib +I *.*
我正在列出的目录中 。我尝试将第一个参数更改为 Dir() 函数,但没有帮助。我已经尝试过 FindFirstFile()/FindNextFile() 并且它们工作正常 有
什么想法可以解释这种行为的原因吗? 这可能是 Dir() 函数中的错误吗?如果有的话,它还能起到什么其他作用? 如何解决这个问题呢?
I am using CComboBox::Dir(DDL_READWRITE, path) to populate the contents of a combobox. Everything is fine, but when I reset the Archive flag and set the Index flag, the Dir() returns no files. I am using
attrib -A *.*
attrib +I *.*
in the directory I am listing. I have tried changing the first parameter to Dir() function but it does not help. I have tried FindFirstFile()/FindNextFile() and they are working fine
Any ideas to explain the reason of this behavior?
Could this a bug in the Dir() function? If yes, what other functions could it effect?
How to solve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个非常有趣的问题。我在 Win 7 64 位上将其调试到 comctl32.dll
ListBox_DirHandler
汇编代码中,发现 Windows 正在执行类似的操作(只是一些简化的代码):问题是您的文件返回时带有 <代码>finddata.dwFileAttributes==FILE_ATTRIBUTE_NOT_CONTENT_INDEXED。在函数入口处 attr 被更改,以便它永远不会设置 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,因此循环内的 if 永远不会为 true,并且文件名永远不会添加到控件中。
抱歉,但据我所知,您将不得不等待 MS 错误修复或自己完成工作。
This is quite an interesting issue. I debugged it on Win 7 64 Bit down into comctl32.dll
ListBox_DirHandler
assembler code and found out that Windows is doing something like this (just some simplified code):The problem is that your file is returned with
finddata.dwFileAttributes==FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
. At entry of the function attr is changed so that it can never haveFILE_ATTRIBUTE_NOT_CONTENT_INDEXED
set, so the if inside the loop will never be true and the file name never be added to the control.Sorry, but as far as I can see you will have to wait for an MS bugfix or do the work yourself.