BROWSEINFO結構體,主要是對目錄對話框的設計,包括以下幾個成員:
typedef struct _browseinfo {
HWND hwndOwner; //設定對話框的父窗口
LPCITEMIDLIST pidlRoot; //指定對話框中要顯示的root目錄,如果爲空則顯示桌面上的root目錄
LPSTR pszDisplayName; //存儲用戶選擇路徑的buffer,大小可以設置爲MAX_PATH
LPCSTR lpszTitle; //對話框中的標題(提示信息)
UINT ulFlags; //選擇目錄的模式,比如可以只能選擇計算機,只能選擇目錄或能選擇具體的文件等
BFFCALLBACK lpfn; //當被創建時調用的函數指針,經常設置爲null
LPARAM lParam; //函數的參數
int iImage; //存儲與被選擇的文件夾相關的image的變量
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi)顯示選擇目錄對話框並返回用戶選擇的路徑,該路徑被放在結構體ITEMIDLIST中
BOOL SHGetPathFromIDList(
LPCITEMIDLIST pidl,
LPSTR pszPath
)將pidl中存儲的路徑信息存儲到pszPath中,這樣就得到了用戶選擇的路徑
//得到目錄中的文件(遍歷文件夾,如果裏面還含有文件夾,這種方法還要添加其他判斷語句)
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
cout << (LPCTSTR) finder.GetFileName() << endl;
}