Windows API 提供 FindFirstFile、FindNextFile、FindClose 三個函數實現檔案搜尋,本文給出最簡單的 MFC 對話框實作範例。

HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData):開始搜尋,回傳搜尋控制代碼。BOOL FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData):繼續搜尋下一個。BOOL FindClose(HANDLE hFindFile):關閉搜尋控制代碼。WIN32_FIND_DATA 結構包含檔案名 (cFileName)、屬性、大小、時間等資訊。
void CFileSearchDlg::OnSearch()
{
UpdateData();
if (!m_strFile.GetLength()) {
AfxMessageBox("請輸入要搜尋的檔案");
return;
}
WIN32_FIND_DATA fd;
m_listFile.ResetContent(); // 清空列表方塊
HANDLE hFind = ::FindFirstFile((LPCTSTR)m_strFile, &fd);
if (hFind == INVALID_HANDLE_VALUE) return;
m_listFile.AddString(fd.cFileName); // 第一個結果
while (::FindNextFile(hFind, &fd)) // 迴圈取得後續結果
m_listFile.AddString(fd.cFileName);
::FindClose(hFind); // 釋放資源
}
m_strFile:編輯框輸入的搜尋路徑/檔名 (支援萬用字元 *, ?)。m_listFile:列表方塊顯示結果。ffsco 類別)。掌握三個 API 即可快速加入檔案搜尋功能。完整專案原始碼請下載附件。