编译环境:VC++6.0我在做一个记录用户选择文件路径的程序.我想将用户所选择文件的路径放在一个记事本里.因此我选择了CFileDialog()这个函数CFileDialog dlg(TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT,"All Files(*.*)|*.*||");
dlg.m_ofn.lpstrFile = sBuffer;
dlg.m_ofn.nMaxFile = MAX_PATH;
dlg.DoModal();
POSITION pos = dlg.GetStartPosition();用户可以在这个CFileDialog里选择文件.但当我在编写记录函数的时候,我用了三种方法均无效首先我用了 方法1;CString PathNameBuffer;
CString PathName;while(pos != NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR; StrCat(PathNameBuffer, (LPTSTR)(LPCTSTR)PathName );
StrCat(PathNameBuffer, Enter );
} if((FilePointer = fopen("E:\note.txt","w"))==NULL)
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
} fputs(PathNameBuffer, FilePointer );
fclose(FilePointer);我发现当选择文件的个数大于8个的时候,根本不能建立note.txt,而且也没有AfxMessageBox弹出.我以为是PathNameBuffer太小 于是换了一种方法:方法2:char PathNameBuffer[4000];
CString PathName;while(pos!=NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR;
PathNameSTR = PathNameSTR + PathName + EnterChar;
}
if((FilePointer = fopen(StripPathName,"w"))==NULL)
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
} fputs(PathNameSTR, FilePointer );
fclose(FilePointer);问题是一样的.根本不能建立note.txt,而且也没有AfxMessageBox弹出.这次我以为是fputs()不支持太长的字符
于是我又换了一个方法,每次只存储一个文件信息
方法3:while(pos!=NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR;
if(count == 0)
{
if((FilePointer = fopen(StripPathName,"w"))==NULL)
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
}
fputs(PathName, FilePointer );
fputs("\n",FilePointer );
count = count + 1;
}
else
{
fputs(PathName, FilePointer );
fputs("\n",FilePointer );
}
}
fclose(FilePointer );但发现问题是一样的.我倒了,晕!我觉得是不是CFileDialog()不支持选择太多的文件呀!该怎么办?麻烦各位了.
dlg.m_ofn.lpstrFile = sBuffer;
dlg.m_ofn.nMaxFile = MAX_PATH;
dlg.DoModal();
POSITION pos = dlg.GetStartPosition();用户可以在这个CFileDialog里选择文件.但当我在编写记录函数的时候,我用了三种方法均无效首先我用了 方法1;CString PathNameBuffer;
CString PathName;while(pos != NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR; StrCat(PathNameBuffer, (LPTSTR)(LPCTSTR)PathName );
StrCat(PathNameBuffer, Enter );
} if((FilePointer = fopen("E:\note.txt","w"))==NULL)
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
} fputs(PathNameBuffer, FilePointer );
fclose(FilePointer);我发现当选择文件的个数大于8个的时候,根本不能建立note.txt,而且也没有AfxMessageBox弹出.我以为是PathNameBuffer太小 于是换了一种方法:方法2:char PathNameBuffer[4000];
CString PathName;while(pos!=NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR;
PathNameSTR = PathNameSTR + PathName + EnterChar;
}
if((FilePointer = fopen(StripPathName,"w"))==NULL)
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
} fputs(PathNameSTR, FilePointer );
fclose(FilePointer);问题是一样的.根本不能建立note.txt,而且也没有AfxMessageBox弹出.这次我以为是fputs()不支持太长的字符
于是我又换了一个方法,每次只存储一个文件信息
方法3:while(pos!=NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR;
if(count == 0)
{
if((FilePointer = fopen(StripPathName,"w"))==NULL)
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
}
fputs(PathName, FilePointer );
fputs("\n",FilePointer );
count = count + 1;
}
else
{
fputs(PathName, FilePointer );
fputs("\n",FilePointer );
}
}
fclose(FilePointer );但发现问题是一样的.我倒了,晕!我觉得是不是CFileDialog()不支持选择太多的文件呀!该怎么办?麻烦各位了.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货