请教一个CFILEDIALOG类的问题

图片说明

我用CDIALOGFILE类,做了一个保存对话框,代码如下:
CFileDialog saveD(FALSE, "txt", "未命名", 0, "TXT Files(*.txt)|*.txt|All Files(*.*)|*.*");
请问下我只设置了ALL FILES 和TXT FILES为何 最下面还有一行乱码?请问应该怎么解决。

2个回答

 CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );

参数意义如下:

bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。

lpszDefExt 指定默认的文件扩展名。

lpszFileName 指定默认的文件名。

dwFlags 指明一些特定风格。

lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:

"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,**末尾用 || 指明**。
qq_29670983
qq_29670983 谢谢您的回答
大约 4 年之前 回复
wafstudio
wafstudio 回复qq_29670983: 可能是:文件编码不匹配、文件是二进制的、读文件错了、写文件错了。
大约 4 年之前 回复
qq_29670983
qq_29670983 谢谢您的回答,再请问下如果是读取一个文件,都出现乱码,还有只有最后出现乱码应该怎么解决呢?
大约 4 年之前 回复
wafstudio
wafstudio 末尾用 || 指明
大约 4 年之前 回复

没有设置末尾,就是“||”标志。

qq_29670983
qq_29670983 嗯嗯 ,谢谢您的回答
大约 4 年之前 回复
a1193561652
纵横车 回复qq_29670983: 就是那个"TXT Files(*.txt)|*.txt|All Files(*.*)|*.*",最后加一个“||”。
大约 4 年之前 回复
qq_29670983
qq_29670983 回复qq_29670983: 请问下读取文本文件最后附加乱码也可以这么解决吗
大约 4 年之前 回复
qq_29670983
qq_29670983 请问在哪里设置呀?
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请教CFileDialog的一个问题
我的程序中用CFileDialog获取一个文件路径,代码如下rnCFileDialog fDlg(TRUE,NULL,NULL,OFN_HIDEREANONLY,"*.*||(*.*)",NULL);rnrnCString strPath;rnrnif(fDlg.DoModal()==IDOK)rnrn strPath = fDlg.GetFilePath();rnrn如果选择U盘上的一个文件,U盘就卸载不下来了,只有关闭整个程序才能卸载U盘,怎么样能解决这个rn问题呢?
请教一个CFileDialog的问题
由于对CFileDialog不熟悉,原本想通过CFileDialog的方式得到一个后缀为dat的文件,然后把文件路径写到temp1.file文件中去,最后由foresee这个程序自动读取文件中包含的路径解析执行rn结果采用硬编码方式设置path = “...\test.dat”,不采用CFileDialog方式,ForeSee程序就能运行,而用CFileDialog选择路径却执行不了!rn所以想请教各位高手,我程序中调用CFileDialog的方法错在哪里?谢谢rnrnCString path;rnCFileDialog *dlg = new CFileDialog(true, NULL, NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, NULL , this);rndlg->m_ofn.lpstrFilter = "DAT File (*.dat) \0*.dat\0\0";rnif(dlg->DoModal() == IDOK)rnrn path = dlg->GetPathName();rn if(path.IsEmpty() == 1)rn rn delete dlg;rn return;rn rn delete dlg; rn rnrn tryrn CString pa="C:\\temp1.file";rn CFile file(pa,CFile::modeCreate|CFile::modeWrite);rn file.Write(path,path.GetLength());rn file.Close();rn WinExec("ForeSee.exe",SW_SHOW);rn rn rn catch(...)rn rn MessageBox("建立预览文件失败! ");rn return;rn rn
请教一个CFileDialog的问题。
想做一个CFileDialog保存的对话框,获得保存的文件名:rnrnCFileDialog dlg(FALSE,".dat","new",OFN_ALLOWMULTISELECT,".dat");rnTCHAR * def = dlg.m_szFileTitle;rnrnrn提示错误:rnC2248: 'm_szFileTitle' : cannot access protected member declared in class 'CFileDialog'rnrnrn请大家帮忙看看是什么原因.
CFileDialog类使用的一个问题
我用这个类做打开文件对话框时,如果输入了一个不存在的文件名,点击“打开”按钮后,在关闭这个对话框之前最好能够先弹出一个“警告"消息框,提示重新输入有效的文件名rn请问这个该如何操作?
请教:CFileDialog和多线程的一个问题
最近在做的程序是实现一路麦克风输入,一路音乐文件(例如:1.wav)播放,并进行混音,保存混音后的文件,多线程实现,碰到下面一个问题——rn 打开一个CFileDialog对话框,选择音乐文件后,发现没有混音后的文件(sound.wav)。进行调试,程序中写文件的那些操作还是有执行,文件也有关闭,可是最后就是没有这个文件(sound.wav)存在。rn 如果不用CFileDialog对话框,直接指定音乐文件(1.wav)路径,结果就有混音后的sound.wav文件。请问,这是不是CFileDialog和多线程的消息机制有冲突吗?该怎么解决?谢谢!
请教一个与CFileDialog有关的问题
请问除了CFileDialog之外,还有那些方法可以实现文件选择?rn谢了!
请教一个CFileDialog的奇怪问题
我的代码:rnDialog1, Dialog2, rnrn其中Dialog2 创建了一个CFileDialog型的 dlg,rn并且 dlg.DoModal(),保存 dlg.GetFilePath() 到一个CString的全局变量str;rnrn然后 Dialog1 一个按钮函数将这个全局变量str写入一个文件,rn用的是 rnCStdioFile f1;rnf1.open("xxx",CFile::modeCreate|CFile::modeWrite);rnf1.WriteString(str);rnf1.Close();rnrn结果,用记事本打开文件,发现里面并没有成功写入 str 的内容。rn但是如果不调dlg.DoModal(),直接给str赋值就能成功写入文件。rn真是怪异哦。。。请指点,谢谢咯!
请教一个关于CFileDialog的问题
自定义了一个CFileDialogEx,其 继承于CFileDialog。rn在某个类A中这样使用rnCFileDialogEx dlg;rndlg.Domodal();rn而CFileDialogEx的构造函数这样定义rnrnstatic TCHAR szFilter[]="自定义预打开的文档类型";rnrnCFileDialogEx::CFileDialogEx(LPCTSTR str,DWORD dw, CWnd pParent):CFileDialog(TRUE,NULL,NULL,dw|OFN_HIDEREADONLY,szFilter,pParent)rnrn......rnrn在类A中有一个标志量,想达到这样的效果,当标志量为TRUE时,Domodal时显示过滤条件为szFilter的文件对话框,当标志量为FALSE时,Domodal时显示我自定义的另一过滤条件的文件对话框,请高手指点我应该如何改进呢?
请教:CFileDialog 的一个小问题
在程序中,要弹出打开文件的对话框rnvoid CProductGroupViewMain::OnButtonAdd() rnrnrnCFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"All Files (*.*)|*.*||",AfxGetMainWnd()); rn int flag=mFileDlg.DoModal();rn if (flag==IDOK)rn rn AfxMessageBox("ok");rn rnrnrn但是编译的时候总是报错:rnerror C2065: 'mFileDlg' : undeclared identifierrn不知道错在哪里
难题:CFileDialog 类问题
网上看了个例子rn在打开文件对话框上实现图象预览rnrnhttp://www.vckbase.com/document/viewdoc/?id=1419rnrn可是打开文件对话框,它始终依赖父窗口位置,无法改变位置!rn如果把文件对话框布置在屏幕中央呢???rnrn什么centerwindow .movewindow,setwindowpos 都试了。都不管用。rnrn另外重写了virtual void OnInitDone();在里面修改位置,发现没调用该函数。rnrn不知有什么办法没????rn
有关CfileDialog类的问题
请教要自动遍历所选文件框里的所有文件的方法。从msdn帮助信息里知道要用到GetStartPosition()和GetNextPathName( POSITION &pop )两个函数,但是得到第一个文件后,怎样才能让指针指向下一个文件,并且如何得到下一个文件的路径!我用了指针加一的办法,执行非法(打不开文件)!
再请教有关CFileDialog类的问题
请问nMaxFile这个属于m_ofn的参数是怎样设置的?我在DoMal之前设置,并且设置为2000,但是一旦在文件打开对话框中按确定,程序竟然会自动关闭,究竟是为什么呢?这个参数是不是要配合什么设置的。rn我在在CFileDialog类的构造函数中设置了OFN_ALLOWMULTISELECT|OFN_EXPLORER标记。
CFileDialog类的问题
这几天我们老师留了一个作业,MFC和CFileDialog类在WinCE下操作EDB数据库。在这有一个小问题。rnCFileDialog EDBDialog(TRUE, NULL, NULL, NULL,rn _T("EDB文件(*.vol)"), NULL);rnEDBDialog.DoModal();rn我用的是TRUE参数,执行后会弹出“打开对话框”的窗口,下面会有以个类似于列表部分,请问怎么在这里把想打开的文件显示出来?rn哎,我也不知道说没说明白。我自己都糊涂了。
使用CFileDialog类的问题
在将数据写入到文本文件时,建立代码:rnCFileDialog dlg(FALSE, "*.txt",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.txt"); rnif ( dlg.DoModal()!=IDOK ) return;rn//获取文件的绝对路径rnCString sFileName=dlg.GetPathName();rnCStdioFile out;rn//打开文件rnout.Open(sFileName, CFile::modeCreate|CFile::modeWrite);rn//保存文件rnCString sSql="文本文件内容";rnout.WriteString(sSql);rnout.Close();rn但是编译时出错: error C2664: 'CFileDialog::CFileDialog' : cannot convert parameter 3 from 'const int' to 'const char *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast。rnrn如果把OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT去掉就没错了,这是怎么回事,这个应该是没错的。rn还有一个问题,如果数据是在double aa[]数组中存放的,如何写到文本文件中。rn
关于CFILEDIALOG类的问题
我现在要在弹出的CFILEDIALOG对话框的左边那些网络邻居,我的电脑,我的文档下面添加一个类似的功能一样的按钮,请问应该怎么办?
CFileDialog 问题请教
我的系统有一个读卡器,那个盘符一直存在的rnrn然后我用 CFileDialog, 指向这个读卡器的盘符的时候rnrn如果读卡器里面有存储卡,就能正常工作,显示出里的内容rnrn但是当读卡器里面是空的时候,就会弹出一个对话框说 请插入磁盘到盘符rnrn然后CFileDialog 会打开上一次的目录rnrn请问怎么解决
请教CFileDialog的问题
1rnCFileDialog fd(TRUE,NULL);rnfd.m_ofn.lpstrFilter=_T("*.*");rnif (fd.DoModal()== IDCANCEL ) return;rn2rnCFileDialog fd(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,CString("*.jpg"));rnif (fd.DoModal()== IDCANCEL ) return;rn为什么相应的文件不能显示出来呢?操作系统:ECV4.0 + ppc 2003rn第2种在PC机上是没有问题的.
问一个:CFileDialog类的多重选择问题!
void CMultiFileDialogView::OnInitialUpdate() rnrn CView::OnInitialUpdate();rn rn // TODO: Add your specialized code here and/or call the base classrn rn CStringList m_FileNames; // 用于保存选择的多个文件名(包括路径) rn CString filter = "所有文件(*.*)|*.*|"; rn int count = 0; rn CString s; rnrn CFileDialog files( TRUE, NULL, NULL, OFN_EXPLORER | OFN_FILEMUSTEXISTrn | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, filter); rn rnrn char *bufferFile;rn bufferFile = new char[100000];rnrn bufferFile[0] = NULL;rn rn files.m_ofn.lpstrFile = bufferFile;rn rnrn if (files.DoModal() == IDOK)rn rn POSITION pos = files.GetStartPosition(); rn rn // 每次打开时清空上一次选择的结果 rn if (pos != NULL && !m_FileNames.IsEmpty()) rn m_FileNames.RemoveAll(); rn rn // 保存新选择的那些文件名(包括路径) rn while (pos != NULL) rn rn CString str = files.GetNextPathName(pos); rn m_FileNames.AddTail(str); rn count++; rn rn rn rn s.Format("%d",count); rn MessageBox(s); rn/*在小于14个文件的时候都正确,15个以上以上就不行了:(DoModel()返回初始化错误)。查了一下msdn,注意到一个要求,说,需要用户分派一个空间来保存文件,并让lpstrFile指向这个空间,结果试了一下,结果还是如此,怎么回事呢?高人指教!*/rnrn
关于类CFiledialog的一个小问题
为什么在CFileDialog::DoModal() == IDOKrn之后写文件失败?读文件也不行了?为什么!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rnrn
有关CFileDialog的问题,请教
如何使文件对话框中显示我机器上c,d盘内容
急!!!一个关于CFileDialog类的问题
通过利用VC类库的CFILEDIALOG类选择打开数据文件RMC.TXT,解析出其中的时间和经纬度数据,在一个对话框中显示出时间和经纬度,每次只显示一个时间点的数据,通过点击对话框中的继续按钮处理显示下个点的数据。当处理到文件尾时给出提示。rnrnRMC.TXT的一小部分内容如下(一共很多) rnrn$BDRMC,153130.885,3946.4648,N,11625.4385,E,44.5,0.2,0.0,213,1,3,W,*54rn$BDRMC,153130.947,3946.4658,N,11625.4386,E,44.5,0.2,0.0,213,1,3,W,*59rn$BDRMC,153131.010,3946.4669,N,11625.4387,E,44.5,0.2,0.0,213,1,3,W,*50rn$BDRMC,153131.072,3946.4672,N,11625.4385,E,44.5,0.2,0.0,213,1,3,W,*5crn$BDRMC,153131.135,3946.4675,N,11625.4382,E,44.5,0.2,0.0,213,1,3,W,*5ern$BDRMC,153131.197,3946.4686,N,11625.4383,E,44.5,0.2,0.0,213,1,3,W,*5brn$BDRMC,153131.260,3946.4658,N,11625.4382,E,44.5,0.2,0.0,213,1,3,W,*52rn$BDRMC,153131.322,3946.4669,N,11625.4382,E,44.5,0.2,0.0,213,1,3,W,*57rn$BDRMC,153131.385,3946.4694,N,11625.4384,E,44.5,0.2,0.0,213,1,3,W,*5ern$BDRMC,153131.447,3946.4719,N,11625.4386,E,44.5,0.2,0.0,213,1,3,W,*51rn$BDRMC,153131.510,3946.4730,N,11625.4383,E,44.5,0.2,0.0,213,1,3,W,*5crn$BDRMC,153131.572,3946.4733,N,11625.4385,E,44.5,0.2,0.0,213,1,3,W,*5drn$BDRMC,153131.635,3946.4721,N,11625.4385,E,44.5,0.2,0.0,213,1,3,W,*5ern$BDRMC,153131.697,3946.4716,N,11625.4384,E,44.5,0.2,0.0,213,1,3,W,*53rn$BDRMC,153131.760,3946.4704,N,11625.4384,E,44.5,0.2,0.0,213,1,3,W,*59rn$BDRMC,153131.822,3946.4707,N,11625.4382,E,44.5,0.2,0.0,213,1,3,W,*55rn$BDRMC,153131.885,3946.4710,N,11625.4380,E,44.5,0.7,0.0,196,1,3,W,*57rn$BDRMC,153131.947,3946.4720,N,11625.4385,E,44.5,0.7,0.0,196,1,3,W,*5ernrn$BDRMC, 153130.885, 3946.4648,N, 11625.4385,E, 44.5,0.2,0.0,213,1,3,W, *54rn开始符号为$ 这个是时间 这个是纬度 经度 后面的不用管了 结尾符号*rnrn请哪位好手帮忙给解决一下 由于我比较菜 最好把整个程序帮忙贴出来并讲解一下rnrn非常感谢 谢谢
用CFileDialog问题请教
我在用CFileDialog的时候如下用的:rnCFileDialog FileDlg(TRUE, "bmp", "default", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "bmp files (*.bmp)|*.bmp|All files (*.*)|*.*||", this);rnrn可是打开文件对放框打开后,只能用.bmp选项,那个All files根本不管用呀,要是选中“All files (*.*)"后什么也看不到,再选回bmp files(*.bmp)也看不到了,这是怎么回事呀?谢了!
请教CFileDialog参数和一个CString问题...
bool CtestDlg::savetxtff()rnrn CFileDialog ffdlg(FALSE,"txt","*.txt");rn ffdlg.DoModal();rnrn return true;rnrnrn1、我现在这段代码是按照例子理解写的,按说法上至少会有一个保存窗口,文件类型是首先默认*.txt,默认已有一个txt的文件名在输入栏里,也就是说,我点一下保存,就会有个txt.txt的文件,但实际是一个文件名为*.exe,文件类型什么都没有的文件对话框,是不是参数搞错了? 看过很多例子,貌似都是说这样写的...rnrn2、想把rnCString textone;rnCString two;rnCString three;rn的内容,每一个是一行地写入到outtxtf.txt里,请教思路?rnrnrnrnrnrn
MFC 新手请教一个 CFileDialog 的问题
rn如何改写 CFileDialog 使 打开/保存 对话框像资源管理器一样 ? rnrn谢谢
CFileDialog 类在vc8中的问题
在vc6中以下是正确的,但到了VC8中就不行了,请问是怎么回事呢?rnrnCFileDialog FileDlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,"Flash Files|*.swf||",NULL);rnrn这是VC8中产生的出错提示:rn错误 1 error C2664: 'CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD)' : cannot convert parameter 5 from 'const char [20]' to 'LPCTSTR' e:\microsoft visual studio 8\myapps\vc++\vc++.mfc\mediaplayer\mediaplayer\mediaplayerdlg.cpp 165 rn
问一个CFileDialog的问题!
我遇到过这样的情况: |- 索引文件rn 父文件夹|- 子文件夹一rn |- 子文件夹二rn索引文件中包含子文件夹下的文件名称,在用CFileDialog进行浏览的时候,浏览到父文件夹下就能看到子文件夹下的一些类似文件镜像的东西,这是如何实现的呢,请各位指点!
关于CFileDialog的一个问题。
我在使用文件对话框时,对话框是显示出来了,但怎么看不到文件呢?我用的还是rn *.*呢?this指针为主框架类的指针(MFC)rn 代码如下:rn CFileDialog dlg(TRUE,_T("log"),NULL,OFN_HIDEREADONLY and OFN_OVERWRITEPROMPT,rn _T(" All Files (*.*) and *.* and "),this);rn rn if (dlg.DoModal()==IDOK)rn rn m_strLogFile = dlg.GetPathName();rn rnrn 请各位大虾指教。
CFileDialog的一个问题
用CFileDialog定义一个dlg的时候,如果把这个对话框的属性设置为保存的话,为什么他出来的标题是“另存为”而不是“保存为”,如果要变为“保存为”该怎么作那?
一个关于CFileDialog的问题
创建一个基于CFileDialog的类CMyDlg,用以下语句创建一个对象rnCMyDlg a;rna.Domodal();rn然后重载其中的OnOK()函数,以自己的方式打开文件,rn为什么重载后"打开"按钮不起作用,即点击后整个对话框消失.rn请问是什么原因,怎么解决.
关于CFileDialog的一个问题
CString strPath;rn CFileDialog fileDlg(FALSE, "mdb","Source.mdb", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "数据库文件 (*.mdb)|*.mdb|所有文件 (*.*)|*.*||", NULL);rn if (fileDlg.DoModal() == IDOK)rn strPath = fileDlg.GetPathName();rn //strPath = "E:\\123.mdb";/*这里这样写也不行*/rn if(CopyFile(".\\Source.mdb",strPath,FALSE)) rn AfxMessageBox("数据库备份成功!"); rn else rn AfxMessageBox("数据库备份失败!"); rn哪里出错了?如果给strPath赋值也不行,除非把创建CFileDialog注释掉,才会成功!帮帮我
问一个CFileDialog的问题
有无办法可以用CFileDialog选择一个文件夹??我想重载它的OnOK()函数,在点击打开的时候得到文件夹名字,发现不行的说。。。rn
关于CFileDialog的一个问题?
我写了一个继承自CSrollView的程序读取bmp文件,要求打开文件的对话框默认是bmp格式,应该在那里实现CFileDialog对象?
一个CFileDialog的问题
1)创建一个MFC windows应用程序,比如是对话框式的。rn2)添加一个BUTTONrn3)在BUTTON的响应函数中加入代码:rn CFileDialog dlg(1);rn if(dlg.DoModal()==IDOK)rn AfxMessageBox(dlg.GetPathName());rn return; rn运行程序,打开某个目录(如c:\test\)下的一个文件。rn这时如果不退出程序就没办法删除上面提到的这个目录。rn为什么?
请教Windows Mobile 的CFileDialog问题。
采用CFileDialog或者GetOpenFileNameEx,想让用户选择他想打开的文件。rn之前程序在WinCE系统上工作没有问题,现在移植到Windows Mobile系统上。rn出现的问题是,弹出的选择对话框无法识别zip文件,即使我文件过滤用*.*,rn也无法显示出zip压缩文件。但是我用系统的资源管理器,进入到相应文件夹下,rn是可以看到这个压缩文件的。请教大家,这个问题如何解决。代码如下:rnrn[code=c]CString zip_file_path;rnrnCFileDialog file_dialog(TRUE, NULL, NULL, NULL, TEXT("*.zip|*.zip||"));rnif (file_dialog.DoModal() != IDOK) rn return;rnrnzip_file_path = file_dialog.GetPathName();rn[/code]rnrn或者rnrn[code=c] rnOPENFILENAMEEX ofn = 0;rnTCHAR szFile[MAX_PATH] = 0;rnrnofn.lStructSize = sizeof(ofn);rnofn.lpstrFilter = _T("ZIP Files (*.*)/0*.*/0");rnofn.lpstrFile = szFile;rnofn.nMaxFile = sizeof(szFile)/sizeof(szFile[0]);rnofn.lpstrInitialDir = _T("\\DOWNLOAD");rnofn.lpstrTitle = _T("选择数据文件");rnofn.ExFlags = OFN_EXFLAG_THUMBNAILVIEW | OFN_EXFLAG_HIDEDRMPROTECTED;rnGetOpenFileNameEx(&ofn);rnrnCString strFileName = ofn.lpstrFile;[/code]
关于CFileDialog类
现在的情况是:我在另存为文件名里这样写:abc.doc它就保存成了doc的文件rn而我只要它保存为我指定的文件类型(假设为.txt)。比如如果写成abc.doc它就应该保存存成abc.doc.txtrn前面的统一为名字
CFileDialog类GetNextPathName函数
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT, "All Files(*.*)|*.*||", this);rn if(dlg.DoModal() == IDOK)rn rn POSITION pos = dlg.GetStartPosition();rnrn while(pos != NULL)rn rn CString strPathName = dlg.GetNextPathName(pos);rn CFile file;rn BOOL bResult = file.Open(strPathName, CFile::modeRead|CFile::shareDenyNone, NULL);rn 。。。。。。。。。rn rn rn 这段函数中CString strPathName = dlg.GetNextPathName(pos);返回下一个选定文件路径,但是有很多文件,我选了第一个文件,得到的还是第一个文件路径,并不是下一个也就是第二个文件路径,为什么?还有POSITION pos = dlg.GetStartPosition();返回文件名列表的第一个元素位置,这个POSITION是不是相等与序号或者索引??rn请各位赐教,谢谢!
请教扩展CFileDialog,报错问题。
1、派生CFileDialog类,重写函数OnFileNameChange如下:(其中CFilePreviewDlg派生自CFileDialog)rnvoid CFilePreviewDlg::OnFileNameChange()rnrn if (!GetPathName().IsEmpty())rn rn CFile file;rn file.Open(GetPathName(), CFile::modeRead);rn CString strPreview;rn file.Read(strPreview.GetBufferSetLength(file.GetLength()), file.GetLength());rn strPreview.ReleaseBuffer();rn file.Close();rn GetDlgItem(IDC_EDIT_PREVIEW)->SetWindowText(strPreview);rn rn return;rnrnrn2、在CMainFrame中响应菜单消息,如下打开文件对话框。rnvoid CMainFrame::OnFiledlgex() rnrn // TODO: Add your command handler code herern CFilePreviewDlg dlg(TRUE);rn dlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";rn dlg.m_ofn.lpstrTitle = "请选择要预览的文件:";rn dlg.m_ofn.Flags |= (OFN_HIDEREADONLY | OFN_ENABLETEMPLATE);rn dlg.m_ofn.hInstance = AfxGetInstanceHandle();rn dlg.m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DIALOG_OPENFILEPREV);rn dlg.m_ofn.lStructSize = 88;rn dlg.DoModal();rnrnrn3、第一次打开对话框能正确显示,也能正确预览文件内容。但是当切换目录选择其他文件时,会弹出异常对话框。rnrn4、去掉OnFileNameChange函数中的内容,异常对话框消失,但是切换其他目录选择其他文件时,对话框中内嵌的rn文件对话框显示不正确了。rnrn5、请帮忙看看这两个问题,谢谢。rn
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池