MFC读取文件中利用CFileDialog类打开文件,出现对话框后,点击取消出现问题

代码如下:CStringfileName;CFileDialogdlg(true,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"... 代码如下:
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();
点击取消出现问题:
展开
 我来答
tmqonline
2013-08-22 · TA获得超过3392个赞
知道大有可为答主
回答量:2989
采纳率:59%
帮助的人:728万
展开全部
CString fileName;
CFileDialog dlg(true,"","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"TxT file(*.txt)|*.txt");
if (dlg.DoModal()==IDOK)
{
fileName=dlg.GetPathName();
}
之后加上一个判断,如:
if(fileName.IsNull)return;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pgyepssq
2013-08-21
知道答主
回答量:18
采纳率:0%
帮助的人:17万
展开全部
点击取消就是什么都不做 程序应该返回 在if(IDOK == )后加个else return;
追问
我用MFC把已有的两个数组里面的数据读入到新建的EXCEL表格的两列,怎么操作啊?
用的是MFC读取EXCEL的Automation,接口。有excel.h等两个函数。
我现在按照MFC中使用EXCEL方法及源码.,这篇文章,只能实现一列的输出,怎么实现两列的输出?
追答
这玩意儿百度一大把现成的 不再说了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ttyyuu20111201
2013-08-22 · TA获得超过1362个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:278万
展开全部
用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++;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
任明星Ming
2013-08-21 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1147万
展开全部
fgets.c文件报了个警告错误,在代码第60行。警告意思是:你传入的str变量是空的,但实际要求str不为空。走读下fgets.c的执行情况吧。
追问
用的是MFC读取EXCEL的Automation,接口。有excel.h等两个函数。
我现在按照MFC中使用EXCEL方法及源码.,这篇文章,只能实现一列的输出,怎么实现两列的输出?
追答
Excel 的ATL接口里面有个Range接口,用它可以写多列数据。你可以查查它的用法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式