这是一个相当有趣的问题。我在 Win 7 64 位上将它调试到 comctl32.dllListBox_DirHandler
汇编代码中,发现 Windows 正在做这样的事情(只是一些简化的代码):
// attr is the low word of the parameter passed to CComboBox::Dir.
attr &= FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL;
attr |= FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_READONLY;
WIN32_FIND_DATA finddata;
FindFirstFile(..., &finddata)
while(...) {
if(finddata.dwFileAttributes == FILE_ATTRIBUTE_COMPRESSED)
finddata.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
if(finddata.dwFileAttributes & attr) {
// some more checks and then might add the file name to the control;
}
FindNextFile(..., &finddata);
}
问题是您的文件以finddata.dwFileAttributes==FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
. 在函数的入口处, attr 被更改,因此它永远不会被FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
设置,因此循环内的 if 永远不会为真,并且文件名永远不会添加到控件中。
抱歉,但据我所知,您将不得不等待 MS 错误修复或自己完成工作。