CFileDialog选择一个要打开的文本文件后,在view中显示。。

LeeTop 2005-07-01 09:17:47
CFileDialog选择一个要打开的文本文件的后,在view中显示。。
我看了一下书。。
他讲得不是很清楚,又没给出例子。。
谁给我讲解一下,或者贴出个教程链接来。。。

3Q~3Q喽。。。
...全文
284 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeeTop 2005-07-03
  • 打赏
  • 举报
回复
谢谢大家了..
LeeTop 2005-07-03
  • 打赏
  • 举报
回复
我那个2进制文件的是自定义的编码,翻译成ASCII码的class,我已经写好了的....
LeeTop 2005-07-02
  • 打赏
  • 举报
回复
OnFileOpen 它里面做了哪些工作呢?
pizi198219 2005-07-02
  • 打赏
  • 举报
回复
其实方法很多,搂主所说的修改哦OnFileOpen()也可以实现;
因为OnFileOpen();最终还是要调用OnOpenDocument(m_szfilename);
只要将其重写,自己在Doc类中加入一个文件指针对文件进行读取,然后再view中调用Doc类中的文件指针将其数据用textout();输出就行了..我也是个菜鸟,如果有说的不对的地方还请见谅~~
实现方法如下:
在Doc类中加入CFile* m_pData;变量
OnOpenDocument(m_szfilename)
{//省略
m_pData->Open(m_szfilename);
}
就可以取得文件指针了。
剩下的就不用说了吧。。
在view调用Doc类中的成员变量就可以对文件中的数据进行读取了。。
然后剩下的就只是如何输出了~~
goodboyws 2005-07-02
  • 打赏
  • 举报
回复
CEditView::SerializeRaw实现了保存视图文本到文件的功能
至于自己做OnFileOpen, MFC的特点或者说是缺点就是很多东西用不着自己做,你也很难弄明白它是怎么做的,还是接受MFC吧
goodboyws 2005-07-02
  • 打赏
  • 举报
回复
CEditView
pizi198219 2005-07-02
  • 打赏
  • 举报
回复
其实调用CArchive类也可以很轻松的实现,
我从好多的书上看到过,mfc自带的Serialize只能实现一般的文件的读写,,
常用的大文件读取,或者其他的操作,大多数还要自己定义方法
CArchive &ar也有自带的获取文件的成员函数可以直接获取文件指针,查找MSDN就可以找到。ar.GetFile(m_szfilename).(我没记错的话)
你说的那个2进制的文件翻译成为文本文件要是什么样子的?

如果你的那个2进制的文件本身就是ASCII的话,你根本没有必要进行翻译,直接按字节输出就行了。操作系统会直接按照ASCII给你显示出来。如果你的数据01还有别的意义,比如说有特殊的含义,那你最好说情楚点。。
LeeTop 2005-07-02
  • 打赏
  • 举报
回复
up. up ...
xing_xing_xing 2005-07-02
  • 打赏
  • 举报
回复
1.添加一个菜单资源
2.在View类里响应此命令,示例如下
void CExView::OnFileOpenTest()
{
CFileDialog dlg(TRUE);
if(dlg.DoModal() == IDOK)
{
CFile file;
if(!file.Open(dlg.GetPathName(),CFile::modeRead))
{
return;
}

int len = file.GetLength();
unsigned char *pBuf = new unsigned char[len];
file.Read(pBuf,len);

CString str = "abc";
//你的转换函数
//Covert(pBuf,len,str);

GetEditCtrl().SetWindowText(str);

delete []pBuf;
file.Close();
}
}

这样的话都没有用到文档视图结构。直接用对话框也可以完成
xing_xing_xing 2005-07-02
  • 打赏
  • 举报
回复
在文档的读取数据完成之后,会设置编辑视图的内容,可以在这里完成转换工作
#include "mainfrm.h"
void CMyDoc::Serialize(CArchive& ar)
{
// CEditView 包含一个处理所有序列化的编辑控件
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
if(ar.IsLoading()) //读取
{
CEdit& edt =
((CEditView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView())->GetEditCtrl();
CString str;
edt.GetWindowText(str);
str.MakeUpper(); //转换成大写
edt.SetWindowText(str);
}
}
LeeTop 2005-07-02
  • 打赏
  • 举报
回复
引用goodboyws(深夜不眠者):
---------------------------------------------------------------------------------------
CEditView::SerializeRaw实现了保存视图文本到文件的功能
至于自己做OnFileOpen, MFC的特点或者说是缺点就是很多东西用不着自己做,你也很难弄明白它是怎么做的,还是接受MFC吧
---------------------------------------------------------------------------------------

因为我那打开那个文件是2进制文件,得先处理一下翻译成文本文件,再显示出来....
所以想搞懂OnFileOpen是怎样实现打开文件在view中显示得...
computersoftdiy 2005-07-01
  • 打赏
  • 举报
回复
我也很想知道这个问题!!呵呵,也做过!!做得不是很满意!!!!
mayazhao 2005-07-01
  • 打赏
  • 举报
回复
看我的程序不过有点问题。
http://community.csdn.net/Expert/topic/4118/4118017.xml?temp=.2195398
mayazhao 2005-07-01
  • 打赏
  • 举报
回复
我也碰到这个问题。目前读写是成功的。
LeeTop 2005-07-01
  • 打赏
  • 举报
回复
我看了一下:
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)

void CT01Doc::Serialize(CArchive& ar)
{
// CEditView contains an edit control which handles all serialization
((CEditView*)m_viewList.GetHead())->SerializeRaw(ar);
}
这里的Serialize(CArchive& ar)函数,我还是不太懂。

如果自己写个OnFileOpen该怎么写呢?
LeeTop 2005-07-01
  • 打赏
  • 举报
回复
我去看看。。
vcmute 2005-07-01
  • 打赏
  • 举报
回复
第六步选择CEditView
LeeTop 2005-07-01
  • 打赏
  • 举报
回复
怎么个序列化呢?
poooorgun 2005-07-01
  • 打赏
  • 举报
回复
简单一点就fscanf()然后textout()
umbrella1984 2005-07-01
  • 打赏
  • 举报
回复
你要加序列化代码~在VC里建个edit视图例子,里面就是一个完整的例子。

16,551

社区成员

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

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

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