1. 程式人生 > >MFC 使用CFileDialog開啟多個檔案

MFC 使用CFileDialog開啟多個檔案

void CNDTDisplayDlg::OnBnClickedOpendata()
{
	CFileDialog fDlgGetTxt(TRUE);//開啟檔案對話方塊
	fDlgGetTxt.m_ofn.lpstrFilter = "(*.txt)\0*.txt\0\0";//只顯示txt檔案格式:顯示內容\0 過濾條件\0 ... 最後以\0結尾
	fDlgGetTxt.m_ofn.lpstrTitle = "開啟txt檔案";
	fDlgGetTxt.m_ofn.Flags |= OFN_ALLOWMULTISELECT;//允許選擇多個檔案

	fDlgGetTxt.m_ofn.nMaxFile = 20 * 101;//最多可以開啟20個檔案,每個檔名的字元數<=100

	//設定一個檔名快取,因為CFileDialog內建的檔名快取長度只有200,但是很多時候,
	//檔案的路徑遠大於這個數,為了保險起見,所以要自己設定一個檔名快取

	char fileNameBuffer[20*101] = {0};//初始化為零,否則會發生意外錯誤
	fDlgGetTxt.m_ofn.lpstrFile = fileNameBuffer;//設定一個檔名快取

	CStringArray strArrFilePaths;//將檔案路徑儲存到CStringArray物件中

	if (fDlgGetTxt.DoModal() == IDOK)
	{
		POSITION pos = fDlgGetTxt.GetStartPosition();//獲取第一個檔名的位置

		while (pos != NULL) //GetNextPathName()返回當前pos的檔名,並將下一個檔名的位置儲存到pos中
			strArrFilePaths.Add(fDlgGetTxt.GetNextPathName(pos));
	}
}