MFC读取文件中利用CFileDialog类打开文件,出现对话框后,点击取消出现问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC读取文件中利用CFileDialog类打开文件,出现对话框后,点击取消出现问题相关的知识,希望对你有一定的参考价值。
代码如下:
CString fileName;
CFileDialog dlg(true,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"TxT file(*.txt)|*.txt");
if (dlg.DoModal()==IDOK)
fileName=dlg.GetPathName();
CStdioFile myFile;
CFileException fileException;
int order=1;
double *pBuf;
pBuf=new double[order+100];
double nBuf;
if(myFile.Open(fileName,CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeReadWrite),&fileException)
CString strContent;
while(myFile.ReadString(strContent))
nBuf=atof(strContent);
pBuf[order]=nBuf;
order=order+1;
UpdateData(TRUE);
m_Path=fileName;
m_Check=pBuf[9];
UpdateData(FALSE);
delete []pBuf;
pBuf=NULL;
else
TRACE("Can't open file");
myFile.Close();
点击取消出现问题:
CFileDialog dlg(true,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"TxT file(*.txt)|*.txt");
if (dlg.DoModal()==IDOK)
fileName=dlg.GetPathName();
之后加上一个判断,如:
if(fileName.IsNull)return; 参考技术B 点击取消就是什么都不做 程序应该返回 在if(IDOK == )后加个else return;追问
我用MFC把已有的两个数组里面的数据读入到新建的EXCEL表格的两列,怎么操作啊?
用的是MFC读取EXCEL的Automation,接口。有excel.h等两个函数。
我现在按照MFC中使用EXCEL方法及源码.,这篇文章,只能实现一列的输出,怎么实现两列的输出?
这玩意儿百度一大把现成的 不再说了.
参考技术C 用OLE的方式你想实现的是什么什么?双列读出?双列写入?注意Range的成员函数GetValue2、SetValue2追问
恩,就是的,我现在想的是多列输出,要用range[0].......range[7]吗,但是这是不是就要多个数组与之对应了啊?这是不是有点麻烦?
追答Eg:
int i=2; //题标行一般不会写
while (i<=1000)
CString strIndex = "A"; //写第一列
strBuf.Format("%d",i);
strDanYuanGe = strIndex + strBuf;
range=sheet.GetRange(COleVariant(strDanYuanGe),COleVariant( strDanYuanGe)); //选中要操作的单元格
CString strWtire = "1";
range.SetValue2(COleVariant(strWtire));
strIndex = "B"; //写第二列
strBuf.Format("%d",i);
strDanYuanGe = strIndex + strBuf;
range=sheet.GetRange(COleVariant(strDanYuanGe),COleVariant( strDanYuanGe));
CString strWtire = "2";
range.SetValue2(COleVariant(strWtire));
i++;
Eg:
int i=1; //如果不读第一行(标题行),应设置为2.
while (i<=1000)
CString str;
CString strIndex = "A"; //读Ai单元格
strBuf.Format("%d",i);
strDanYuanGe = strIndex + strBuf;
range=sheet.GetRange(COleVariant(strDanYuanGe),COleVariant( strDanYuanGe)); //选中要操作的单元格
rValue=COleVariant(range.GetValue2());
rValue.ChangeType(VT_BSTR);
str = CString(rValue.bstrVal); //读出来的值
strIndex = "B"; //读Bi单元格,其他的的列,也可以这样设置
strBuf.Format("%d",i);
strDanYuanGe = strIndex + strBuf;
range=sheet.GetRange(COleVariant(strDanYuanGe),COleVariant( strDanYuanGe));
rValue=COleVariant(range.GetValue2());
rValue.ChangeType(VT_BSTR);
str = CString(rValue.bstrVal); //读出来的值
i++;
用的是MFC读取EXCEL的Automation,接口。有excel.h等两个函数。
我现在按照MFC中使用EXCEL方法及源码.,这篇文章,只能实现一列的输出,怎么实现两列的输出?
Excel 的ATL接口里面有个Range接口,用它可以写多列数据。你可以查查它的用法。
MFC CFileDialog派生类在编译过程出现“error 没有与参数列表匹配的构造函数......”的问题
CFileDialog派生类在编译过程出现“error 没有与参数列表匹配的构造函数实例参数类型为(int,const char[4],const char[6],int,const char[36],int) .的问题
解决办法
右击项目---属性----配置属性-----常规-----字符集 选择“使用多字节字符集”即可~~~~撒花~~
以上是关于MFC读取文件中利用CFileDialog类打开文件,出现对话框后,点击取消出现问题的主要内容,如果未能解决你的问题,请参考以下文章
MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile
如何在 MFC 中使用 CfileDialog 选择特定文件