WTL CFileDialog选中多个文件并获取每个文件具体路径

m_szFileName 是一个TCHAR 数组,用来保存选择的文件名。如果选择了多个文件,它的结构为: 路径第一个文件名第二个文件名第三个文件名 (表示结束)

 1 CSimpleArray<CString>     _arrayFilePath;//存放选中文件的具体目录
 2 const CString STR_FILE_EXTEND = _T("工程文件(*.zwqd)\*.zwqd\\");
3 void CFileUploadShzwYjDlg::onBrowserBtnClicked() 4 { 5 CString strFileExtend = STR_FILE_EXTEND; 6 strFileExtend.Replace(_T('\'), _T('')); 7 8 CFileDialog fileDlg(TRUE, NULL, NULL,OFN_EXPLORER | OFN_HIDEREADONLY |OFN_ENABLESIZING 9 |OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT,strFileExtend); 10 fileDlg.m_ofn.lpstrTitle = _T("选择工程文件"); 11 if (fileDlg.DoModal() != IDOK) 12 return; 13 14 _arrayFilePath.RemoveAll(); 15 16 TCHAR* pBeginPos = fileDlg.m_szFileName; 17 CString strPath=pBeginPos; 18 19 /** 20 * 获取选中文件具体目录并存放起来 21 */ 22 if (strPath.Right(5) == _T(".zwqd"))//选中一个文件 23 { 24 _arrayFilePath.Add(strPath); 25 } 26 else//选中多个文件 27 {

       //核心代码
28 while (1) 29 { 30 if (*pBeginPos == '') 31 { 32 if (*(++pBeginPos) == '') 33 break; 34 _arrayFilePath.Add(strPath+_T('\')+pBeginPos); 35 } 36 else 37 { 38 pBeginPos++; 39 } 40 }
41 } 42 43 }
原文地址:https://www.cnblogs.com/YLJ666/p/14653943.html