如何在MFC中让一个按钮实现打开文件(弹出选择文件窗口)的功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MFC中让一个按钮实现打开文件(弹出选择文件窗口)的功能?相关的知识,希望对你有一定的参考价值。
做了个MFC小程序,是将html文件转成源代码txt文件的,具体代码是
ifstream fin("a.html");
ofstream fout("a.txt");
char c;
int flag;
while(fin>>c)
if(c=='<')
flag=0;
if(flag)
fout<<c;
if(c=='>')
flag=1;只能提取名字固定为a.html且必须是在程序所在文件的文件,如何通过一个按钮来实现可以随意选择html文件来处理的功能?(最好能详细点,新手)
1、打开软件。
2、新建工程,名字“canshuchuandi”。制作界面如图。编辑框变量设置为“m_a1”。
3、在资源视图,右键插入类“Cshow”制作界面,变量设置为“m_a2”。
4、双击原界面的“打开并传输”按钮,编辑事件处理程序如图。
5、双击新建的界面的“返回第一个对话框+6”按钮,编辑事件处理程序如图。
6、退出就完成了,点击按钮就可以弹出新窗口了。
参考技术A 添加一个按钮,把这段代码添加到按钮事件里面就可以了,刚写好的,试过了,可以用!CString filename;//保存路径
CFileDialog opendlg (TRUE,_T("*"),_T("*.html"),OFN_OVERWRITEPROMPT, _T("所有文件(*.*;)|*.*||"),NULL);
if (opendlg.DoModal()==IDOK)
filename=opendlg.GetPathName();
ifstream fin(filename);
ofstream fout("a.txt");
char c;
int flag;
while(fin>>c)
if(c=='<')
flag=0;
if(flag)
fout<<c;
if(c=='>')
flag=1;
本回答被提问者采纳
从 MFC 中的文件打开对话框中选择文件后 fopen() 不起作用
【中文标题】从 MFC 中的文件打开对话框中选择文件后 fopen() 不起作用【英文标题】:fopen() does not work after choosing file from file open dialog in MFC 【发布时间】:2012-09-20 11:34:29 【问题描述】:在 MFC 应用程序中,我有一个文件浏览按钮。当我单击它并选择一个文件时,该文件已加载并且一切正常。
在此之后我有一个函数,它尝试使用fopen(),
打开另一个文件,但尽管文件存在,但无法打开该文件。如果我在文件浏览对话框中选择取消,fopen()
可以正常工作,但一旦我使用文件浏览对话框选择文件,fopen 就不起作用。
有人能说出为什么会这样吗?
【问题讨论】:
能否分享一下代码。调试问题很困难,但代码更容易阅读。 无关,但我很好奇你为什么用fopen
而不是fstream
?
可能像权限问题一样简单...检查 errno 以获取线索
我只需要检查文件是否存在所以我在做 FilePopinter = fopen("filename"); if(FilePopinter )...else... 但它不起作用。正如 Joachim Pileborg 所说,我尝试使用 ofstream::good() 并且它的工作正常我不知道如何:|总之谢谢大家。
fopen()
的第二个参数是什么?因为它通常需要其中 2 个(一个用于文件名,一个用于模式)
【参考方案1】:
也许您通过相对路径指定第二个文件,并且在使用对话框打开第一个文件后,工作目录已更改。当您按Cancel
时,工作目录不会更改并且可以正常工作。
此问题的解决方案是例如使用完整的非相对路径指定第二个文件。
【讨论】:
我尝试使用非相对路径,但它不起作用。相反,我使用 fsteam::good 检查文件是否存在并且工作正常。我不知道 fopen 出了什么问题,但 fstream 工作正常。无论如何,谢谢 Psur。以上是关于如何在MFC中让一个按钮实现打开文件(弹出选择文件窗口)的功能?的主要内容,如果未能解决你的问题,请参考以下文章
怎么在MFC中打开一个文件,如单击一个按钮,然后弹出选择文件的框框,我需要打开这个文件!