FindFirstFile的用法 08.12.25

来源:互联网 发布:网络拍卖新版 编辑:程序博客网 时间:2024/04/30 06:26
 void CFindFilesDlg::OnBnClickedButton1()
{
 CString c1;
 CString stredit;
 CString strtemp;
 HANDLE hFile;
 WIN32_FIND_DATA fileinfo;
 DWORD errorcode = 0;
 m_Edit1.GetWindowText(c1);   
 if(!c1.IsEmpty())
 {
     hFile=FindFirstFile("f://*.*",&fileinfo);
    while(hFile!=INVALID_HANDLE_VALUE&&errorcode!=ERROR_NO_MORE_FILES)
    {
   strtemp=fileinfo.cFileName;
   stredit=stredit+"/r/n";
   stredit=stredit+strtemp;
   FindNextFile(hFile,&fileinfo);
   errorcode=GetLastError();
    }
    if(errorcode==ERROR_NO_MORE_FILES)
    {
     m_cedit1.SetWindowText(stredit);
     MessageBox("检索结束");
    }
    CloseHandle(hFile);
 }
}

说明:
在上述代码中FindFirstFile第一个参数需要一个路径,但要写*.*,表示从所有文件中找到的第一个.但写f:或者f:双斜杠都返回无效句柄.

如果f://1.txt 则对特定文件进行搜索,返回找到的第一个,找到的文件的文件结构被记录在WIN32_FIND_DATA结构体里

FindNextFile第一个参数是FindFirstFile的返回值,可以接着上次结果继续寻找

FindFirstFile的返回值若是INVALID_HANDLE_VALUE, 表示所找的文件未找到。