//有局限(一次只能选几个),可进行改善
//选择多个文件对话框
void CSelectFileDlgDlg::SelectFileDlg( vector<CString>& vctData )
{
CFileDialog dlg(TRUE, _T("*.txt"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T("TXT File(*.txt)|*.txt|"), NULL);
dlg.m_ofn.lpstrTitle = _T("选择多个文件");
CString filename;
if(dlg.DoModal() == IDOK)
{
POSITION fileNamesPosition = dlg.GetStartPosition();
while(fileNamesPosition != NULL)
{
filename = dlg.GetNextPathName(fileNamesPosition);
vctData.push_back(filename);
}
}
}
//改进
//选择多个文件对话框
void CSelectFileDlgDlg::SelectFileDlg( vector<CString>& vctData )
{
CFileDialog FileDlg(TRUE, _T("*.txt"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY/*|OFN_FILEMUSTEXIST*/|OFN_ENABLESIZING , _T("TXT File(*.txt)|*.txt|"), NULL);
FileDlg.m_ofn.lpstrTitle = _T("选择多个文件");
FileDlg.m_ofn.nMaxFile = 512*MAX_PATH; //扩容
char* pBuffer = new TCHAR[FileDlg.m_ofn.nMaxFile];
FileDlg.m_ofn.lpstrFile = pBuffer;
ZeroMemory(FileDlg.m_ofn.lpstrFile, sizeof(TCHAR)*FileDlg.m_ofn.nMaxFile);
CString strFileName;
if(FileDlg.DoModal() == IDOK)
{
POSITION fileNamesPosition = FileDlg.GetStartPosition();
while(fileNamesPosition != NULL)
{
strFileName = FileDlg.GetNextPathName(fileNamesPosition);
vctData.push_back(strFileName);
}
}
delete [] pBuffer;
pBuffer = nullptr;
}
MFC 选择多个文件对话框
于 2022-07-28 22:37:25 首次发布