如果是文档视图,可以从Document那边开始,获得CArchive &ar对象。但是Dialog我从哪里去弄这个CAarchive? 从CFiledialog 对象那边?无从下手。谢谢

解决方案 »

  1.   

    看看源码啦,呵呵,以前就这样搞了一个Dialog,FormView的打印预览,和Doc-View模式里面的一模一样。
      

  2.   

    cindy0000 什么意思? API函数??
      

  3.   

    you can use this in your contructor function, 
    then the ar can associate the file.
    you can operate on it.CFile file;
    if(file.Open("Personlist.txt",CFile::modeRead))
    {
    CArchive ar(&file,CArchive::load);

    file.Close();
    }
    然后你可以重载
    void CxxDlg::Serialize(CArchive& ar) 
    {
    if (ar.IsStoring())
    {
    }
    else
    {
    }
    }
      

  4.   

    其实CArchive一定有一个文件相关联的,在MFC中看不到他,而在Dialog应用程序中你就要自己去关联他。然后有CArchive的操作付《 ,》来读和写文件的。在CDialog中要是有你自己定义的类对象,要记住重载他的《,》操作付,基本变量可以直接用《,》读写。:)
      

  5.   

    guopo(某年某月) 兄已经解释得很清楚了
      

  6.   

    在对话框中声明一下Serialize(CArchive &ar)函数
    然后再.cpp中定义如下(例子参考)
    void CAttendanceDlg::Serialize(CArchive &ar)
    {
    if (ar.IsStoring() && m_sFileExt=="atd")
    {
    ar<<m_iTop;
    ar<<m_iBottom;
    ar<<m_iLeft;
    ar<<m_iRight;
    ar<<m_iMonths;
    for(int i=0;i<=m_iMonths;i++)
    {
    ar<<sYearTotal[i].iPay;
    ar<<sYearTotal[i].iFactPay;
    ar<<sYearTotal[i].iHoliday;
                       for(int iIndex = 0; iIndex < sYearTotal[i].iHoliday; ++iIndex)
    ar<<sYearTotal[i].ArrayHoliday[iIndex];
    ar<<sYearTotal[i].iDayItems;
    for(int j=0;j<=sYearTotal[i].iDayItems;j++)
    {
    ar<<sYearTotal[i].sAttend[j].tAmOnDuty;
    ar<<sYearTotal[i].sAttend[j].tAmOffDuty;
    ar<<sYearTotal[i].sAttend[j].tPmOnDuty;
    ar<<sYearTotal[i].sAttend[j].tPmOffDuty;
    }
    }
    }
    else
    {
    ar>>m_iTop;
    ar>>m_iBottom;
    ar>>m_iLeft;
    ar>>m_iRight;
    ar>>m_iMonths;
    for(int i=0;i<=m_iMonths;i++)
    {
    ar>>sYearTotal[i].iPay;
    ar>>sYearTotal[i].iFactPay;
    ar>>sYearTotal[i].iHoliday;
    for(int iIndex = 0; iIndex < sYearTotal[i].iHoliday; ++iIndex)
    ar>>sYearTotal[i].ArrayHoliday[iIndex];
    ar>>sYearTotal[i].iDayItems;
    for(int j=0;j<=sYearTotal[i].iDayItems;j++)
    {
    ar>>sYearTotal[i].sAttend[j].tAmOnDuty;
    ar>>sYearTotal[i].sAttend[j].tAmOffDuty;
    ar>>sYearTotal[i].sAttend[j].tPmOnDuty;
    ar>>sYearTotal[i].sAttend[j].tPmOffDuty;
    }
    }
    }}
      

  7.   

    今天碰到神仙了,感谢大家的回答。
    guopo,请到这里再拿50分。这里的20分我先给其他的前辈了。
    http://www.csdn.net/expert/topic/902/902459.xml?temp=.3788263