友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第175章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                             while (nNewCount……) 

                             { 

                         for 

                                 ar 》》 newData; 

                        loop 

                                 AddTail(newData);            operator》》 被多载( overloading )化 

                             } 

                         } 

                               _AFX_INLINE CArchive& AFXAPI operator》》 (CArchive& ar;  

                     } 

                                                                       CObject*& pOb) 

                                       { pOb = ar。ReadObject (NULL); return ar; } 



                                                               调用 CArchive::ReadObject 

                                               下页 

                     



518 


…………………………………………………………Page 581……………………………………………………………

                                                                                             第8章    Document…View  深入探討 



                                     CObject* CArchive::ReadObject(const CRuntimeClass* 

                                     pClassRefRequested) 

                                     { 

                                         。。。 

                                         // attempt to load next stream as CRuntimeClass 

                                         UINT nSchema; 

                                         DWORD obTag; 

                                         CRuntimeClass* pClassRef = ReadClass (pClassRefRequested; 

                                                                              &nSchema; &obTag); 



                                         // check to see if tag to already loaded object 

                                                                                                                A 

                                    C    CObject* pOb; 

                                         if (pClassRef == NULL) 

                                         {  。。。  } 

                                         else 

                                         { 

                                             // allocate a new object based on the class just acquired 

                                                                                           IMPLEMENT_SERIAL(CStroke;。。。) 

                                             pOb = pClassRef…》CreateObject(); 

                                                                                            曾展开出一个函数如下,此即动态生 



                                                                                            成的奥秘: 

                                             // Add to mapping array BEFORE de…serializing 

                                             CheckCount(); 

                                                                         CObject* PASCAL CStroke::CreateObject() 

                                             m_pLoadArray…》InsertAt(m_nMapCount++; pOb); 

                                                                          CObject* PASCAL CStroke::CreateObject() 

                                                                          { 

                                                                           { 

                                                                           return new CStroke; 

                                                                            return new CStroke; 

                                                                          } 

                                             // Serialize the object with schema no。 set in the archive 

                                                                           } 

                                             UINT nSchemaSave = m_nObjectSchema; 

                                             m_nObjectSchema = nSchema; 

                                             pOb…》Serialize(*this); 

                                             m_nObjectSchema = nSchemaSave; 

                                         }                                        调用 CStroke::Serialize 



                                         return pOb;                         D 

                                     } 



                                      CRuntimeClass* CArchive::ReadClass(const CRuntimeClass* pClassRefRequested; 

                                   A         UINT* pSchema; DWORD* pObTag) 

                                      { 

                                                                      FFFF 

                                          WORD wTag;        本例读入 

                                          *this 》》 wTag; 

                                          。。。 

                                          CRuntimeClass* pClassRef; 

                                          UINT nSchema; 

                                          if (wTag == wNewClassTag) 

                                          { 

                                              // new object follows a new class id 

                                              if ((                                      (*this; &nSchema)) == NULL) 

                                                     pClassRef = CRuntimeClass::Load 

                                                  。。。 

                                          } 

                                          else 

                                          {                                               B 

                                              DWORD nClassIndex; 

                                              //判断nCLassIndex 为旧类别,于是从类别型录网中取出 

                                              // 其CRuntimeClass,放在pClassRef  

                                                                                    中。 

                                     C 

                                              。。。 

                                          } 

           
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!