如何用CFileDialog类

loadtee 2010-05-04 06:26:33
if(findfile(...))
{
CFileDialog filedlg(false,NULL,NULL,...);
if(filedlg.DoModal()==IDOK)
{
.......
}
}
domodal()之后的代码该怎么写?我的原意是:当找到目标文件的时候,让他另存为一个文件(为xls文件),可是用这个类,好像另存为不了啊?这是怎么回事?
...全文
345 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
FireBurn 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 loadtee 的回复:]
引用 8 楼 yincheng01 的回复:
C/C++ code
BOOL blModified;
CString strFileName; // 文件的主名
CString strFilePath;
CString strFileExtName;
static char szFilter[] = "RTF 格式 (*.rtf)|*.rtf|" ……

这种方法有没有可以直接保存……
[/Quote]
没有那么简单的办法,你要自己解析html文件,保存成excel文件的话用CSpreadSheet类。这个类的下载和用法你搜索一下就可以找到。
loadtee 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 helonsy 的回复:]
下面是我以前写的一段代码,旁边附有解释,希望在你分析的时候有用,你可以用csdn查下我用的各个函数的功能,然后再连串起来,我想你应该会有所收获的。

void CWenLiFenXiDlg::OnBtnOpenFile()
{
CAddSampleDlg FileDlg(TRUE, "", NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT ……
[/Quote]
你这是针对文件的操作吧,把一个图一个图的加载到指定位置
疯癫小程序 2010-05-11
  • 打赏
  • 举报
回复
下面是我以前写的一段代码,旁边附有解释,希望在你分析的时候有用,你可以用csdn查下我用的各个函数的功能,然后再连串起来,我想你应该会有所收获的。

void CWenLiFenXiDlg::OnBtnOpenFile()
{
CAddSampleDlg FileDlg(TRUE, "", NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT,
"BMP人脸图像(*.bmp)|*.bmp|所有文件(*.*)|*.*||",
AfxGetMainWnd());//打开对话框.

CString strFile;
if (FileDlg.DoModal () != IDOK)
return;

POSITION pos = FileDlg.GetStartPosition();//选定多选的第一个
strFile = FileDlg.GetNextPathName(pos);//跳到下一个并返回上一个选定的位置
m_HuiDuJuZheng.LoadImage(strFile);//加载位图

SetCursor(LoadCursor(NULL,IDC_WAIT));//图片未显示之前光标换成等待形状
//获取像素的值
ConstructBitmap();//画图,并且将其贴到指定位置显示出来.
SetCursor(LoadCursor(NULL,IDC_ARROW));//图片显示好后光标形状回复正常.
}
loadtee 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yincheng01 的回复:]
C/C++ code
BOOL blModified;
CString strFileName; // 文件的主名
CString strFilePath;
CString strFileExtName;
static char szFilter[] = "RTF 格式 (*.rtf)|*.rtf|" ……
[/Quote]
这种方法有没有可以直接保存成EXCEL表啊,我不需要TXT格式的
loadtee 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 visualeleven 的回复:]
引用楼主 loadtee 的回复:
if(findfile(...))
{
CFileDialog filedlg(false,NULL,NULL,...);
if(filedlg.DoModal()==IDOK)
{
.......
}
}
domodal()之后的代码该怎么写?我的原意是:当找到目标文件的时候,让他另存为一个文件(为xls文件),可是用这个类,好像另存为不了啊……
[/Quote]
得到文件名称和路径是小事情了,关键是对这个文件进行操作。这个文件后缀是XLS(但如果用记事本打开就会显示<table> <th>...</th><td>...</td></table>),要从每个单元格内读出数据然后再保存到真正的EXCEL表中
Eleven 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 loadtee 的回复:]
if(findfile(...))
{
CFileDialog filedlg(false,NULL,NULL,...);
if(filedlg.DoModal()==IDOK)
{
.......
}
}
domodal()之后的代码该怎么写?我的原意是:当找到目标文件的时候,让他另存为一个文件(为xls文件),可是用这个类,好像另存为不了啊?这是怎么回事?
[/Quote]
DoModal()函数返回以后,你fileDlg.GetPathName();得到你的保存文件的路径,然后,你就可以使用CopyFile/SHFileOperation()来拷贝文件到你选择的路径下。或者使用CFile、CStdioFile自己读取文件,得到文件内容,再将文件写入你选择的路径的文件中去。CFile::modeCreate|CFile::modeWrite
郑大钱 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yincheng01 的回复:]
C/C++ code
BOOL blModified;
CString strFileName; // 文件的主名
CString strFilePath;
CString strFileExtName;
static char szFilter[] = "RTF 格式 (*.rtf)|*.rtf|" ……
[/Quote]

顶啊~
Terryjia 2010-05-04
  • 打赏
  • 举报
回复
重载OnSaveDocument()方法
尹成 2010-05-04
  • 打赏
  • 举报
回复
BOOL   blModified;   
CString strFileName; // 文件的主名
CString strFilePath;
CString strFileExtName;
static char szFilter[] = "RTF 格式 (*.rtf)|*.rtf|"
"文本文件 (*.txt)|*.txt|"
"Web 页 (*.htm)|*.htm|"
"所有文件 (*.*) |*.*||";

blModified = IsModified();

if(blModified != 0)
{ // 内容被修改过
CFileDialog dlgSaveFile(FALSE,".rtf|.txt|.htm", 0,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR ,szFilter, 0);

if(dlgSaveFile.DoModal() == IDOK)
{
strFileName = dlgSaveFile.GetFileName();
strFileExtName = dlgSaveFile.GetFileExt();
strFileExtName.MakeLower();

if(strFileExtName == _T("rtf"))
{
strFilePath = dlgSaveFile.GetPathName();
OnSaveDocument(strFilePath);
}
else if(strFileExtName == _T("txt"))
{
strFilePath = dlgSaveFile.GetPathName();
SaveAsTxt(strFilePath);
}

SetTitle(strFileName);
SetModifiedFlag(FALSE);
}
wltg2001 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 loadtee 的回复:]
如果像2楼所说的,那这个类对我来说没多大作用啊,我的目的是因为从网上下载下来的XLS都是网页中的那种table,而不是一个XLS,我要另存为一个XLS来覆盖这个table,就实现这个功能,当然不能用copyfile这个函数,否则还是错的
[/Quote]
网页中的Table转成xls?这个必须自己实现转化,copyfile肯定是不行的,另外CFileDialog这个类所做工作只是提供一个你选择的文件名路径,具体转化工作得自己做。
loadtee 2010-05-04
  • 打赏
  • 举报
回复
如果像2楼所说的,那这个类对我来说没多大作用啊,我的目的是因为从网上下载下来的XLS都是网页中的那种table,而不是一个XLS,我要另存为一个XLS来覆盖这个table,就实现这个功能,当然不能用copyfile这个函数,否则还是错的
loadtee 2010-05-04
  • 打赏
  • 举报
回复
实际上设置了,但这上面我没写而已
loadtee 2010-05-04
  • 打赏
  • 举报
回复
那我如果原地覆盖的话,也会提示“覆盖文件”之类的信息,但实际上是没有覆盖的?
ljz888666555 2010-05-04
  • 打赏
  • 举报
回复
你把第五个参数设置一下。
lwd4210 2010-05-04
  • 打赏
  • 举报
回复
找到目标文件,COPY一份到你的目地路径(文件名再改成你想要的)
wltg2001 2010-05-04
  • 打赏
  • 举报
回复
domodal()之后的代码该怎么写?我的原意是:当找到目标文件的时候,让他另存为一个文件(为xls文件),可是用这个类,好像另存为不了啊?
===========
这个类的功能就是弹出一个对话框,然后你选择文件,DoModal之后,它会得到一个文件路径,至于如果处理这个文件,你要自己来完成。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧