在做图像处理中通常要对图像文件连续读取,因此需要遍历整个文件夹中的文件。在VC环境下CFileDialog是不能得到所有文件信息,如果要遍历文件夹内所有文件,应该怎样办呢?不要着急在IO.H、WCHAR.H中提供了_finddata_t, _wfinddata_t, _wfinddatai64_t 结构,通过_findfirst可以得到满足条件的第一个文件的句柄,如下:
long _findfirst( char *filespec, struct _finddata_t *fileinfo ),然后你可以使用_findnext函数得到用_findfirst的句柄后的文件指针,如此就可以遍历所有满足条件的文件。其中_finddata_t 结构包括了文件的相关信息:文件名,创建日前等属性,你可以从你的机器中的IO.H文件中查找相应的定义。当然不要忘了,使用_findclose 函数关闭相应句柄 例如:下面程序实现把文件夹中的文件名字显示在窗口的标题栏中。
CString pathWild ="你的目录//
*.jpg
" ;
struct _finddata_t c_file;
long hFile;
long hFile;
if( (hFile = _findfirst( LPCTSTR(pathWild), &c_file )) == -1L )
{
::AfxMessageBox("No image files in current directory!/n" ) ;
}
{
::AfxMessageBox("No image files in current directory!/n" ) ;
}
else
{
do {
{
do {
AfxGetMainWnd()->SetWindowText(c_file.name);
} while (_findnext(hFile, &c_file) == 0);
}
_findclose(hFile);
}
_findclose(hFile);
对了,别忘了在你的工程中包括头文件IO.H