输入输出文件流

本文介绍了使用MFC框架进行文件的读写及字符串的序列化过程。通过两个按钮触发的操作,实现字符串到文件的写入以及从文件读取字符串到编辑框中展示。此外还介绍了UpdateData函数的作用及其在数据同步中的使用方法。

首先建立一个单文档视图,记得VIEW的父类要选CFORMVIEW。这样的话可以在VIEW的界面中出现一个类似于对话框的东西,然后在上面放上两个对话框和两个编辑框。对两个编辑框创建两个控件变量。针对两个对话框做两个点击操作,代码如下:

void CfilestreamView::OnBnClickedButton1()

{

     // TODO: 在此添加控件通知处理程序代码

 

         // 用屏幕输入内容更新m_Var1 m_Var2

     UpdateData(TRUE);

 

     // 创建文件C:/ARC.ARC

     CFile f;

     f.Open(_T("c://arc.arc"),CFile::modeCreate|CFile::modeWrite);

 

     // 创建一个CArchive 对象,并将文件与对象关联

     CArchive ar(&f,CArchive::store);

    CString st1,st2;

     m_edit1.GetWindowText(st1);

     m_edit2.GetWindowText(st2);

     // 串行化m_Var1 m_Var2 到文档

     ar<<st1<<st2;

 

    

 

     // 关闭文档

     ar.Close();

 

     // 关闭文件

     f.Close();

 

}

 

void CfilestreamView::OnBnClickedButton2()

{

     // TODO: 在此添加控件通知处理程序代码

         CFile f;

     if ( f.Open(_T("c://arc.arc"),CFile::modeRead )== FALSE )

     {    MessageBox(_T("Open file ERROR"),_T("ARCH for Windows"));

         return;

     }

 

     // 创建一个CArchive 对象,并将文件与对象关联

     CArchive ar(&f,CArchive::load);

    CString st3,st4;

     // 从对象中抽取数据并赋值给成员变量

     ar>>st3>>st4;

 

 

     m_edit1.SetWindowTextW(st3);

     m_edit2.SetWindowTextW(st4);

     // 关闭文档

     ar.Close();

 

     // 关闭文件

     f.Close();

 

     // 更新屏幕显示

     UpdateData(FALSE);

 

 

}

 

///////////////////////////////////////////////////

也可以对控件创建两个VALUE型的CString变量,这样就可以直接更简单的来实现了。

 

 

 

 

关于UpdageData()函数的介绍:

BOOL UpdateData(

  BOOL bSaveAndValidate = TRUE

);

//ParametersbSaveAndValidate Flag that indicates whether dialog box is being initialized (FALSE)or data is being retrieved (TRUE).

  翻译一下:UpdateData,顾名思义,是用来刷新数据的。

  UpdateData(TRUE) -- 刷新控件的值到对应的变量

  UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1oneditchanged()中需要加入UpdateData(TRUE);

  简单的说,如果Updatedata(TRUE) == 将控件的值赋值给成员变量;

  Updatedata(FALSE) == 将成员变量的值赋值给控件;

转载于:https://www.cnblogs.com/ainima/archive/2010/03/25/6332032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值