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

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

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




                                                                                    : 

      struct CRuntimeClass 

      { 

      // Attributes 

              LPCSTR m_lpszClassName; 

              int m_nObjectSize; 

              UINT m_wSchema; // schema number of the loaded class 

              CObject* (PASCAL* m_pfnCreateObject)(); // NULL =》 abstract class 

              CRuntimeClass* m_pBaseClass; 



              CObject* CreateObject(); 

              void Store(CArchive& ar) const; 

              static CRuntimeClass* PASCAL Load(CArchive& ar; UINT* pwSchemaNum); 



              // CRuntimeClass objects linked together in simple list 

              static CRuntimeClass* pFirstClass; // start of class list 

              CRuntimeClass* m_pNextClass;     // linked list of registered classes 

      }; 



                                                                                            167 


…………………………………………………………Page 230……………………………………………………………

                    第篇  勿在浮砂築高台 



                    你已经在上一节看过Load  函数,当时为了简化,我把它的参数拿掉,改为由屏幕上获 



                    得类别名称,事实上它应该是从文件中读一个类别名称。至于Store  函数,是把类别名 



                    称写入文件中: 



                    // Runtime class serialization code 

                    CRuntimeClass* PASCAL CRuntimeClass::Load(CArchive& ar; UINT* pwSchemaNum) 

                    { 

                        WORD nLen; 

                        char szClassName'64'; 

                        CRuntimeClass* pClass; 



                        ar 》》 (WORD&)(*pwSchemaNum) 》》 nLen; 



                        if (nLen 》= sizeof(szClassName) || ar。Read(szClassName; nLen) != nLen) 

                                return NULL; 

                        szClassName'nLen' = '0'; 



                        for (pClass = pFirstClass; pClass != NULL; pClass = pClass…》m_pNextClass) 

                        { 

                            if (lstrcmp(szClassName; pClass…》m_lpszClassName) == 0) 

                                return pClass; 

                        } 

                        return NULL; // not found 

                    } 



                    void CRuntimeClass::Store(CArchive& ar) const 

                            // stores a runtime class description 

                    { 

                            WORD nLen = (WORD)lstrlenA(m_lpszClassName); 

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