MFC的CFileDialog和CFile的影响?

CFileDialogsaveDlg(TRUE);saveDlg.m_ofn.lpstrTitle=str.GetBuffer(1);saveDlg.DoModal();... CFileDialog saveDlg(TRUE);
saveDlg.m_ofn.lpstrTitle=str.GetBuffer(1);
saveDlg.DoModal();
//fileName=saveDlg.GetFileName();
str.Format("D:\\abc.txt");
RecvFile=new CFile(str, CFile::modeWrite |CFile::modeCreate);//RecvFile是我定义的CFile成员变量
saveDlg.DoModal();的加入会导致RecvFile=new CFile(str, CFile::modeWrite |CFile::modeCreate);失败,不知道为什么,求大神解释。
这之前我还有代码如下:
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=str.GetBuffer(1);
fileDlg.DoModal();
fileName=fileDlg.GetFileName();
pathName=fileDlg.GetPathName();
SourFile=new CFile(pathName,CFile::modeRead | CFile::shareDenyNone |CFile::typeBinary);
运行正常,唯一不同的就是此处SourFile为局部变量,而RecvFile是类的成员变量
展开
 我来答
437384801
2011-08-13 · TA获得超过1867个赞
知道小有建树答主
回答量:1299
采纳率:0%
帮助的人:511万
展开全部
大哥不要new,直接构造,CFile recv(里面参数一致和你的);用MFC的类重来都没new过;可以用CFile recv;
然后recv.Open();参数和构造函数差不多,这样ok了
追问
new是我在MSDN2001中查到的一种标准用法。。囧,我试试吧,不用new试试。谢谢你哈,对了,我发现如果我将new放到domodal前就不会有任何问题。

事实上,直接定义类还是是不行的,一样的会再domodal直接返回
何处淬吴钩
2011-08-12 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2409万
展开全部
CFileDialog saveDlg(TRUE);
saveDlg.m_ofn.lpstrTitle=str.GetBuffer(1);
saveDlg.DoModal();
之后添加语句:
str.ReleaseBuffer();
看看。
追问
貌似不行,会因为new CFile不成功而出现access violention,我发觉saveDlg的hWnd=0,这个是正常的么?我仔细运行发现,不是domodal导致new失败,而是调用domodal过后,执行完domodal程序就自动return,不在往下面继续执行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式