我用下面的函数搜索文件夹下的bmp文件,一般搜索是没问题的。
但是我在前面的窗口弹出选择文件对话框导入图片后,进入下个窗体,执行这个函数搜索文件夹这个函数就不起作用了,如果没有弹出导入图片对话框,直接进入下个窗体执行搜索就没问题。
HANDLE handle = FindFirstFile((LPCSTR)cs,&data); 返回就为-1了!我想不明白,不导入图片用这个函数就没问题,只要弹出了导入对话框以后,就不行了,快郁闷死了,请帮忙解决一下1BOOL EmuArtTemp(const char  *  path)   

CString fType;
CString  cs(path);   
WIN32_FIND_DATA  data;   
cs += "\\*.*";   
HANDLE handle = FindFirstFile((LPCSTR)cs,&data);   
BOOL ret = (BOOL)handle;  while(ret)   
{   
if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)   
{   
if(data.cFileName[0] != '.')   
{   
// cs = path;   
// cs +="\\";   
// cs += data.cFileName;   
// EmuFiles((LPCSTR)cs);   //递归遍历子文件夹
}   

}   
else     //is a file   
{   
cs = path;   
cs += data.cFileName;  
fType = cs.Right(3);
if( fType=="bmp" || fType=="Bmp" || fType=="bMp" || fType=="bmP" ||
fType=="BMp" || fType=="BmP" || fType=="bMP" || fType=="BMP")
{
ArtTempList.push_back(cs);
} }   
ret = FindNextFile(handle,&data); 
}   
FindClose(handle);  return true ;
}

解决方案 »

  1.   

    调试程序,看看搜索以前的变量值:(LPCSTR)cs,&data
    cs 和 data 的值。
      

  2.   

    CFileDialog的问题. 默认情况下,它会改变当前目录路径在调用CFileDialog时加上OFN_NOCHANGEDIR标记
      

  3.   

    这个不用这么麻烦
    if( fType=="bmp" || fType=="Bmp" || fType=="bMp" || fType=="bmP" ||
    fType=="BMp" || fType=="BmP" || fType=="bMP" || fType=="BMP")
    用CString的方法把fType的内容全部转变成大写或小写在判断
      

  4.   

    谢谢 jasonshark(没暑假了...) 
    可以加我QQ吗?57562820,方便讨教!