使用MFC的CFileDialog實現選擇多個文件

CFileDialog openDlg( TRUE,			/*bOpenFileDialog爲TRUE時爲打開文件,爲FALSE時爲保存文件*/
		   NULL,
		   NULL,
	            OFN_ALLOWMULTISELECT,	/*dwFlags爲OFN_ALLOWMULTISELECT表示可以選擇多個文件*/);
//構建CFielDialog對象時指定了OFN_ALLOWMULTISELECT的情況下,需要在對象DoModal()函數返回之前需要指定足夠大
//的內存空間來存放文件名.如果選擇的多個文件名組成的字符串長度大於指定的內存空間是就會導致DoModal()返回IDCANCEL.
/*申請內存來存放多個文件名組成的字符串*/
const int nMaxFiles = 1000;
const int nMaxPathBuffer = (nMaxFiles * (MAX_PATH + 1)) + 1;
LPWSTR pc = (LPWSTR)malloc(nMaxPathBuffer * sizeof(WCHAR));
if( pc )
{
  openDlg.GetOFN().lpstrFile = pc;							
  openDlg.GetOFN().lpstrFile[0] = NULL;
  openDlg.nMaxFile = nMaxPathBuffer;
  if( openDlg.DoModal() == IDOK )
  {
     POSITION posStart = openDlg.GetStartPosition();
     while( posStart )
     {
        //從pc所指向的內存中解析出每個文件的名字,這裏的fileName所佔的內存不能和pc所佔的內存發生衝突
         CString fileName = openDlg.GetNextPathName();									
     }
  }
  free(pc);
}

發佈了20 篇原創文章 · 獲贊 11 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章