网站导航免费论文 原创论文 论文搜索 作业答案 网学软件 学术大家 资料中心 会员中心 问题解答 定作论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 交易代码 > C语言代码 > 正文
对话框中的序列化读写
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 佚名 来源: 网络 发布时间: 10/11/10
大家知道序列化读写函数Serialize在文档视图的打开和关闭的时候能自动调用,对于数据的读写非常方便
那在对话抗中能否同样的利用这个Serialize函数呢?答案是肯定的。
比如我们可以重载Serialize函数如下
void CMyDiaryApp::Serialize(CArchive& ar)
{
    POSITION pos;
    WORD nCount;

    if (ar.IsStoring())
    {    // storing code
        nCount = (WORD) m_DiaryList.GetCount();
        ar << nCount;
        pos = m_DiaryList.GetHeadPosition();
        while(pos!=NULL)
        {
            CDiary * pDiary = m_DiaryList.GetNext(pos);
            ar << pDiary->m_date;
            nCount--;
        }
        ASSERT(nCount == 0);
    }
    else
    {    // loading code
        ar >> nCount;
        while(nCount--)
        {
            CDiary * pDiary = new CDiary;
            ar >> pDiary->m_date;
            m_DiaryList.AddTail(pDiary);
        }
    }
}
由于在对话框编辑中不会自动调用Serialize函数,于是可以自己编写OnRead()和OnSave()函数来显示的调用Serialize函数,从而达到合理的使用Serialize函数,重获序列化读写模式给我们带来的便捷,具体如下:
void CMyDiaryApp::OnRead()
{
    CFile file;
    if(file.Open("diary.dat",CFile::modeRead))
    {
        CArchive ar(&file,CArchive::load);
        Serialize(ar); // 调用 Serialize
        ar.Close();
        file.Close();
    }
}

void CMyDiaryApp::OnSave()
{
    CFile file;
    if(file.Open("diary.dat",CFile::modeCreate|CFile::modeWrite))
    {
        CArchive ar(&file,CArchive::store);
        Serialize(ar); // 调用 Serialize
        ar.Close();
        file.Close();
    }
}
然后对于 void CMyDiaryApp::OnSave()和 void CMyDiaryApp::OnRead()函数,我们在需要的时候可以随意的使用,通过上述方式,我们就达到了我们的目的
  • 上一篇资讯: [C语言代码]
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号