友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

深入浅出MFC第2版(PDF格式)-第94部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!

                       CFileException fe; 

                       CFile* pFile = NULL; 

                       pFile = GetFile(lpszPathName; CFile::modeCreate | 

                               CFile::modeReadWrite | CFile::shareExclusive; &fe); 



                       CArchive saveArchive(pFile; CArchive::store | 

                                            CArchive::bNoFlushOnDelete); 

                       saveArchive。m_pDocument = this; 

                                                          虽然看起来像是调用CDocument::Serialize;但事实上 

                       saveArchive。m_bForceFlat = FALSE; 

                                                          因为Serialize是虚拟函数;而CScribbleDoc 已改写 

                       TRY 

                                                          它,而且目前的this指针是指向CScribbleDoc对象 

                       { 

                           CWaitCursor wait;              (别忘了整个追踪路线的起源是Scribble Docment 

                                                          我会在下一章消息绕行这一主题中解释更详尽一些), 

                           Serialize(saveArchive);  

                           saveArchive。Close();           所以这里调用的是CScribbleDoc::Serialize函数;哈 

                           ReleaseFile(pFile; FALSE);     ,这就是虚拟函数的妙用! 

                       } 

                       。。。 

                   }                          void CScribbleDoc::Serialize(CArchive& ar) 

                                               void CScribbleDoc::Serialize(CArchive& ar) 

                                               { 

                                                { 

                                                  。。。 

                                                   。。。 

                                                  m_strokeList。Serialize(ar); 

                                                   m_strokeList。Serialize(ar); 

                                               } 

                                                } 



                                                         m_strokeList 是个CObList对象  



                   void CObList::Serialize(CArchive& ar) 

                   { 

                       CObject::Serialize(ar); 

                       if (ar。IsStoring()) 

                                            本例之CObList 对象内有4个元素,所以输出资料0004 

                       { 

                           ar。WriteCount(m_nCount); 

                           for (CNode* pNode = m_pNodeHead; 

                                pNode != NULL; pNode = pNode…》pNext) 

                      for 

                           { 

                      loop                          CArchive 已针对
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!