首页 IP地址查询 | Alexa排名查询 | 手机归属地查询
设为首页 收藏本站
  • 网络编程网络编程
  • 软件编程软件编程
  • 数据库技术数据库技术
  • 编程学院
  • 业界资讯 业界资讯
  • 源码中心源码中心
  • 会员中心会员中心
  • 页面导航: 首页MFC组件RichEdit → 使用RichEdit(二)将数据保存到文件

    使用RichEdit(二)将数据保存到文件

    发布:jeaye 发布日期:2008-10-05 字体:[增加 减小] 类型:原创

    如何把里面的数据写入到文件?

    RichEdit控件中为我们提供了一个函数long StreamOut(int nFormat, EDITSTREAM &es)

    1.我们来讲讲一些介绍,当然你懂了也可以不用看。
    EDITSTREAM是什么?
    它是一个结构,它有三个成员变量,这里我们只要用到二个就够了。
    typedef struct _editstream
    {
     DWORD_PTR dwCookie;  // 一般我们用来存参数
     DWORD   dwError;  // Last error
     EDITSTREAMCALLBACK pfnCallback; //回调函数
    } EDITSTREAM;

    这个回调函数的格式为

    //这个回调名称是可以变的(废话)
    DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb)
    {
     //写入文件
     ((CFile *)(LONGLONG)(dwCookie))->Write(pbBuff,cb);

     return 0;
    }

     


    2.现在我来讲讲如何实现

     a)创建文件或者打开文件
     b)设置回调函数
     c)调用StreamOut
     d)回调函数中写入文件
     e)记得要关闭文件

    那么我就从代码上讲解给大家听
    bool SaveMessage(LPCTSTR pszFileName)
    {
     //首先,我们得创建一个文件
     CString strFileName=pszFileName;

     //打开文件
     if (strFileName.IsEmpty()==true)
     {
      CFileDialog FileDlg(FALSE,TEXT("RTF"),0,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,TEXT("信息文件(*.RTF)|*.RTF||"),this);
      if (FileDlg.DoModal()==IDOK) strFileName=FileDlg.GetPathName();
      else return true;
     }

     //打开文件
     CFile File;
     if (File.Open(strFileName,CFile::modeWrite|CFile::modeCreate,NULL)==FALSE) return false;

     //构造数据
     EDITSTREAM EditStream;
     EditStream.pfnCallback=SaveCallBack; //这是我们的回调函数
     EditStream.dwCookie=(DWORD)(LONGLONG)(&File);

     //写入文件
         StreamOut(SF_RTF,EditStream);
     File.Close();

     return true;
    }

    //保存回调
    DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb)
    {
     //写入文件
     ((CFile *)(LONGLONG)(dwCookie))->Write(pbBuff,cb);

     return 0;
    }


    3.那么有人会问,保存的文件只能是RTF吗?

    当然也可以是TXT文件,你们有没有注意到StreamOut的第一个参数,SF_RTF就是RTF文件,要是SF_TEXT就是TXT文件了

     


    下载源代码
    为配合网络严查,文章评论将关闭敬请谅解.
    同 类 文 章
    最 近 更 新
    热 点 排 行