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

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

 

 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('\0')); 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 == '\0') 31 { 32 if (*(++pBeginPos) == '\0') 33 break; 34 _arrayFilePath.Add(strPath+_T('\\')+pBeginPos); 35 } 36 else 37 { 38 pBeginPos++; 39 } 40 }
41 } 42 43 }

 

posted @ 2021-04-13 16:38  youlj  阅读(282)  评论(0编辑  收藏  举报