MFC 选择多个文件对话框

//有局限(一次只能选几个),可进行改善
//选择多个文件对话框
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;

}



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值