📄 subject_35891.htm
字号:
<p>
序号:35891 发表者:莫同心 发表日期:2003-04-10 10:25:33
<br>主题:如何在菜单中调用通用对话框类CFileDialog
<br>内容: <BR> 自己做了一个菜单,想在菜单中调用CFileDialog,请问该怎样做?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-04-10 13:23:57
<br>内容:1、关联菜单的Command处理函数;<BR>2、在函数体中构造CFileDialog的实例;<BR>3、启动CFileDialog对话框即可。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:俊俊 回复日期:2003-04-10 13:34:28
<br>内容:用ClassWizard给菜单项定义一个COMMAND消息函数,比如说你的菜单的ID是ID_XXX,那就先选中这个ID,然后选择右边框里的COMMAND消息,点击添加函数按钮,接受默认的函数名,在函数中编辑调用CFileDialog的代码<BR>比如说我们要打开一个bmp文件的话可以这样<BR>CFileDialog dlg(TRUE,"bmp","*.bmp");<BR>if(dlg.DoModal()==IDOK)<BR>{CFile file;<BR>VERIFY(file.Open(dlg.GetPathName(),CFile::modeRead));<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:莫同心 回复日期:2003-04-11 15:41:07
<br>内容:<BR> 谢谢,我还想问它的BMP文件读到哪里去了,怎么看不到文件??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:happywyg 回复日期:2003-04-12 08:18:06
<br>内容:dear 俊俊:<BR> 麻烦你解释一下你的程序好吗?我代表所有的菜鸟感谢你!!!<BR>程序中的bmp 是不是可以被替换?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-04-12 12:53:36
<br>内容:CFileDialog的构造原型如下:<BR>CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );<BR><BR>好像“俊俊”的写法有些问题,并且file打开后没有关闭的语句。<BR>打开的文件类型应该先说明类型,然后指定扩展名,并使用“|”号连起来,末尾应该是“||”。例如:<BR>CFileDialog fileDialog(TRUE,NULL,NULL,NULL,"JPG文件(*.jpg)|*.jpg|GIF文件(*gif)|*.gif|BMP文件(*.bmp)|*.bmp||");
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:俊俊 回复日期:2003-04-14 22:09:45
<br>内容:bmp文件读到内存中了,你当然看不见!这一步只是打开文件,并不能像画图板可以将图片显示出来!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:happywyg 回复日期:2003-04-20 10:42:07
<br>内容:俊俊,怎样才能显示各种文件,
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:最后疯狂 回复日期:2003-04-20 17:17:28
<br>内容: TCHAR szFilters[] =<BR> _T("you file(*.xxx)|*.xxx|所有文件(*.*)|*.*||") ;<BR><BR> CFileDialog OpenFileDlg(TRUE, "dic", "wjdict",<BR> OFN_HIDEREADONLY, szFilters) ;<BR><BR>增加一个过滤器,即可显示所有文件。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:happywyg 回复日期:2003-04-20 19:22:25
<br>内容:问题是只能显示而不能打开?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:最后疯狂 回复日期:2003-04-20 19:35:33
<br>内容:文件公用对话框只是让你选择文件,打开并读取其数据是你程序的工作,你得自己为它加入代码!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:happywyg 回复日期:2003-04-22 19:15:30
<br>内容:推荐以下,那有这方面的原代码?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:最后疯狂 回复日期:2003-04-22 23:02:49
<br>内容:CFile cfile(...);<BR><BR>char pbuf[100];<BR>UINT nBytesRead = cfile.Read( pbuf, 100 );<BR>...<BR>char pbuf[100];<BR>cfile.Write( pbuf, 100 );<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:莫同心 回复日期:2003-04-23 10:34:57
<br>内容:<BR>非常谢谢各位!253了先!<BR>程序是这样的<BR><BR>void CECGCOVERDlg::OnOpen() <BR>{<BR> // TODO: Add your command handler code here<BR> CFileDialog dlg(TRUE, "dat","*.dat");<BR> if(dlg.DoModal()==IDOK)<BR> {<BR> CStdioFile file;<BR> VERIFY(file.Open(dlg.GetFileName(),CFile::modeRead)|CFile::typeBinary);<BR><BR> }<BR>}<BR><BR> 下面怎么将这个dat文件数据读入MFC数阻类CptrArray()?!!<BR> 我用的是CStdioFile类,想以二进制方式打开dat文件,并把它存入 CPtrArray类数组。<BR> 但是CStdioFile的成员函数只有读文本型的两个函数 ReadString 和WrieString。<BR> 请问该怎么写这个程序?<BR> 感谢各位达人!!!<BR> <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:最后疯狂 回复日期:2003-04-23 18:18:13
<br>内容:CStdioFile是CFile的派生类,它继承了CFile的Write和Read函数。<BR><BR>还是看看例子吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:莫同心 回复日期:2003-04-24 09:29:08
<br>内容:<BR> 谢谢chemb了! <BR> 在上面程序中加了两行代码<BR><BR> double m_items[100];<BR> UINT nbytesRead=file.Read(m_items, 100);<BR><BR>整个程序为:<BR>***********************<BR>void CECGCOVERDlg::OnOpen() <BR>{<BR> // TODO: Add your command handler code here<BR> CFileDialog dlg(TRUE, "dat","*.dat");<BR> if(dlg.DoModal()==IDOK)<BR> {<BR> CStdioFile file;<BR> VERIFY(file.Open(dlg.GetFileName(),CFile::modeRead)|CFile::typeBinary);<BR> double m_items[100];<BR> UINT nbytesRead=file.Read(m_items, 100);<BR><BR> }<BR>}<BR> 从打开的文件file中读取100个字节存入 double类型的 CptrArray对象m_items中, 编译无错误,各位给看看有什么问题!<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:最后疯狂 回复日期:2003-04-24 13:12:32
<br>内容:>>double m_items[100];<BR>>>UINT nbytesRead=file.Read(m_items, 100);<BR><BR>一个double类型的变量占用4个字节,你必须确定读入的那个文件在被写入时,每4个字节一个double类型的数据。这样,在写入和读出时,数据才一致。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:莫同心 回复日期:2003-04-24 15:59:22
<br>内容:<BR> 呵呵,不太明白了.能不能说得详细些
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:---信风--- 回复日期:2003-04-24 20:11:42
<br>内容:double类型应该是8个字节。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:碧落 回复日期:2003-04-24 21:25:06
<br>内容:如果你的数据文件中每个数据之间有空格的话,那么照这种读法应该是读不出正确结果的,不会刚好匹配正确。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:最后疯狂 回复日期:2003-04-25 13:15:10
<br>内容:信风说得对,double是8个字节。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:莫同心 回复日期:2003-04-28 10:36:52
<br>内容:<BR> 我用的dat文件在被写入时是以每两个字节方式写入的, 次文件在Delphi中是word型的.<BR> 那么在VC中,该怎样以2字节方式来讲次文件读入数组!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -