
MFC 从对话框打开文件 然后取得给文件的句柄 应该怎样做
我要运行程序后,从对话框打开选择的窗口,然后选取文件,然后再取得该文件的句柄,因为用readfile()来读这个文件,应该怎样做呢?句柄的问题已解决。新问题:create...
我要运行程序后,从对话框打开选择的窗口,然后选取文件,然后再取得该文件的句柄,因为用readfile()来读这个文件,应该怎样做呢?
句柄的问题已解决。
新问题:createfile创建一个新的txt文件,txt的文件名可以变化
比如说,我从一个名为1的文件读,然后新建的txt文件名为1.txt
从2的文件读,则新建的txt文件名为2.txt 展开
句柄的问题已解决。
新问题:createfile创建一个新的txt文件,txt的文件名可以变化
比如说,我从一个名为1的文件读,然后新建的txt文件名为1.txt
从2的文件读,则新建的txt文件名为2.txt 展开
2个回答
展开全部
CFileDialog获取的是文件名和路径;
通过OpenFile从文件名打开获取文件句柄;
创建文件这个没明白你的意思,是需要自动命名还是同名改扩展名
如果是改扩展名,从CFileDialog那里获取CString CFileDialog::GetFileName( ),然后字符串拼接就可以了;
如果自动命名,那么通过CString::Format("XXX%d.txt",iIndex);批量命名。
通过OpenFile从文件名打开获取文件句柄;
创建文件这个没明白你的意思,是需要自动命名还是同名改扩展名
如果是改扩展名,从CFileDialog那里获取CString CFileDialog::GetFileName( ),然后字符串拼接就可以了;
如果自动命名,那么通过CString::Format("XXX%d.txt",iIndex);批量命名。
追问
1.GetFileName()取得的文件名是带后缀的,有什么办法把后缀去掉吗?我用memcpy来复制切断,但是后面给我加了几个乱码
2,我想用获得的文件名来为新建的txt命名
比如,我在GetFileName获得的文件名为123,那么我新建的txt名字为123.txt,或者file123.txt
注意,我新建文件的时候,用的是creatfile()函数。
txt的名称也可以先随便给,但是我要在程序结束前更改它的名字为对应的。
追答
既然用了MFC的东西,就不要各种都用,会产生诸多类似编码不匹配的问题。
如果你用了CFileDialog,那么推荐你只使用CFile CString,其它的API和RTTI一概不用。
示例:
CString str = fDialog.GetFilePath();
str = str.Left(str.ReverseFind('.'));//去掉扩展名的完整文件路径
str += ".txt";//txt文件名包含完整路径
CFile file;
file.Open(str,CFile::modeCreate|CFile::modeWrite);
file.Write(strData,strData.GetLength());
file.Close();
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询