MFC中获取多个文件路径的方法,获取的多文件路径无法读取doc->LoadFile()值为非
发布网友
发布时间:2022-07-29 10:27
我来回答
共3个回答
热心网友
时间:2023-11-22 08:52
你好 亲
修改后的应该是这样的
dlgFile.m_ofn.Flags |= OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY;
dlgFile.m_ofn.lpstrFilter = _T("Bin Files(*.bin)\0*.bin\0All Files(*.*)\0*.*\0\0");
const int nMaxFiles = 1000;
const int nMaxPathBuffer = (nMaxFiles * (MAX_PATH + 1)) + 1;
LPSTR pc = (LPSTR)malloc(nMaxPathBuffer * sizeof(WCHAR));
if( pc )
{
dlgFile.GetOFN().lpstrFile = pc;
dlgFile.GetOFN().lpstrFile[0] = NULL;
dlgFile.m_ofn.nMaxFile = nMaxPathBuffer;
if (dlgFile.DoModal() != IDOK)
{
return;
}
UpdateData(TRUE);
POSITION pos = dlgFile.GetStartPosition();//获取第一个文件位置
UpdateData(FALSE);
while (pos)
{
m_FilePathName[i] = dlgFile.GetNextPathName(pos);
if(i == 0)
{
m_TreeMuti1.DeleteAllItems();
/*TiXmlDocument *doc1 = new TiXmlDocument("D:\\sumA.bin");*/
TiXmlDocument *doc1 = new TiXmlDocument(m_FilePathName[0]);
/*CString str;str.Format(_T("%s"),m_FilePathName[0]);AfxMessageBox(str);*/
if (!doc1->LoadFile())
{
/*CString str;str.Format(_T("%s"),m_FilePathName[0]);AfxMessageBox(str);*/
return;
}
TiXmlElement *root1=doc1->RootElement();
TiXmlElement *pNode1=root1;
CrcXmlMuti1(pNode1,TVI_ROOT);
热心网友
时间:2023-11-22 08:53
m_FilePathName[0]在使用之前用format格式化一次,有可能里面存放的数据格式错了。
m_FilePathName[0].Format("%s",m_FilePathName[0]);
TiXmlDocument *doc1 = new TiXmlDocument(m_FilePathName[0]);
热心网友
时间:2023-11-22 08:53
这样试试
//本代码测试环境VS2008 c++ MFC
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
NULL, this);
dlg.m_ofn.lpstrInitialDir = (BSTR)directoryName; //设置对话框默认呈现的路径
CString strFilePath;
if(dlg.DoModal() == IDOK)
{
CArray<CString, CString> aryFilename;
POSITION posFile=dlg.GetStartPosition();
while(posFile!=NULL)
{
aryFilename.Add(dlg.GetNextPathName(posFile));
}
for(int i=0;i<aryFilename.GetSize();i++)
{
if(strFilePath.GetLength()>0)
{
strFilePath.AppendChar(';');//多个文件‘;’分开
}
strFilePath+= aryFilename.GetAt(i);
}
}
仅供参考