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

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

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






    1997 年五月推出的Visual C++ 5。0 ,主要诉求在编译器的速度改善,并将Visual C++ 合 



    并到微软整个Visual Tools  的终极管理软件Visual Studio 97 之中。所有的微软虚拟开 



    发工具,包括Visual C++ 、Visual Basic 、Visual J++ 、Visual InterDev 、Visual FoxPro 、都 



    在Visual Studio 97  的整合之下有更密切的彼此奥援。至于程序设计方面,MFC 本身没 



    有什么变化(4。21 版),但附了一个ATL        (Active Template Library )2。1 版,使ActiveX 



    控制组件的开发更轻松些。 



    我想你会发现,微软正不断地为「为什么要使用MFC 」加上各式各样的强烈理由,并强 



    烈导引它成为Windows 程序设计的C++ 标准接口。你会看到愈来愈多的MFC/C++ 程 



    式码。对于绝大多数的技术人员而言,Application Framework  的抉择之道无它,「MFC 



    是微软公司钦定产品」,这个理由就很呛人了。 



纵览 MFC 



    MFC 非常巨大(其它application framework 也不差),在下一章正式使用它之前,让我 



    们先做个浏览。 



    请同时参考书后所附之MFC 架构图 



                                                                       329 


…………………………………………………………Page 392……………………………………………………………

               第篇    湷觥 FC  程式設計 



               MFC 类别主要可分为下列数大群组: 



                  ■ General Purpose classes 提供字符串类别、数据处理类别(如数组与串行),异 



                     常情况处理类别、文件类别。。。等等。 



                  ■ Windows API classes 用来封包Windows API ,例如窗口类别、对话框类别、 



                     DC 类别。。。等等。 



                  ■ Application framework classes 组成应用程序骨干者, 即此组类别, 包括 



                      Document/View 、消息邦浦、消息映射、消息绕行、动态生成、文件读写等等。 



                  ■ high level abstractions 包括工具栏、状态列、分裂窗口、卷动窗口等等。 



                   ■  operation system extensions 包括OLE、ODBC 、DAO 、MAPI 、WinSock、ISAPI 



                    等等。 



           General Purpose classes 



                也许你使用MFC  的第一个目标是为了写Windows 程序,但并不是整个MFC 都只为 



                此目的而活。下面这些类别适用于Windows ,也适用于DOS。 



            CObject 



                绝大部份类别库,往往以一个或两个类别,做为其它绝大部份类别的基础。MFC 亦复如 



                此。CObject 是万类之首,凡类别衍生自CObject 者,得以继承数个对象导向重要性质, 



                包括RTTI (执行时期型别鉴识)、Persistence    (对象保存)、Dynamic Creation (动态生 



                成)、Diagnostic (错误诊断)。本书第3章对于这些技术已有了一份DOS 环境下的模 



                拟,第8章另有MFC 相关源代码的探讨。其中,「对象保存」又牵扯到CArchive,「诊 



                断」又牵扯到CDumpContext,「执行时期型别鉴识」以及「动态生成」又牵扯到 



                CRuntimeClass。 



           数据处理类别 (collection classes) 



                所谓collection,意指用来管理一「群」对象或标准类型的资料。这些类别像是Array 或 



330 


…………………………………………………………Page 393……………………………………………………………

                                                         第5章    總觀Application Framework  



  List 或Map 等等,都内含针对元素的「加入」或「删除」或「巡访」等成员函数。Array 



   (数组)和List      (串行)是数据结构这门课程的重头戏,大家比较熟知,Map                                (可视之 



  为表格)则是由成双成对的两两对象所构成,使你很容易由某一对象得知成对的另一物 



  件;换句话说一个对象是另一个对象的键值(key )。例如,你可以使用String…to…String 



  Map ,管理一个「电话…人名」数据库;或者使用Word…to…Ptr Map ,以16 位数值做为 



  一个指针的键值。 



  最令人侧目的是,由于这些类别都支持Serialization,一整个数组或串行或表格可以单一 



  一进程序代码就写到文件中(或从文件读出)。第8章的Scribble Step1 范例程序中你就会 



  看到它的便利。 



  MFC 支持的collection classes 有: 



                                          CObject 

                                          CObject 



          CArray (template)             CList (template)            CMap (template) 

           CArray (template)            CList (template)            CMap (template) 



             CByteArray                    CPtrList                 CMapWordToPtr 

              CByteArray                                            CMapWordToPtr 



            CDWordArray                    CObList                  CMapPtrToWord 

             CDWordArray                    CObList                 CMapPtrToWord 



              CObArray                    CStringList                CMapPtrToPtr 

              CObArray                    CStringList                 CMapPtrToPtr 



              CPtrArray                Lists of user types          CMapWordToOb 

              CPtrArray                Lists of user types          CMapWordToOb 



             CStringArray                                           CMapStringToPtr 

             CStringArray         Typed Template Collections        CMapStringToPtr 



              CUIntArray                CTypedPtrArray              CMapStringToOb 

              CUIntArray                CTypedPtrArray              CMapStringToOb 



             CWordArray                  CTypedPtrList             CMapStringToString 

             CWordArray                  CTypedPtrList             CMapStringToString 



          Arrays of user types          CTypedPtrMap               Maps of user types 

          Arrays of user types           CTypedPtrMap               Maps of user types 



杂项类别 



    ■ CRect 封装Windows  的RECT  结构。这个类别在Windows 环境中特别有用, 



        因为CRect 常常被用作MFC 类别成员函数的参数。 



    ■ CSize   封装Windows  的SIZE 结构。 



    ■   CPoint 封装Windows  的POINT 结构。这个类别在Windows 环境中特别有用, 



                                                                                                331 


…………………………………………………………Page 394……………………………………………………………

                   第篇    湷觥 FC  程式設計 



                   因为CPoint 常常被用作MFC 类别成员函数的参数。 



                      ■  CTime 表现绝对时间, 提供许多成员函数, 包括取得目前时间( static 



                        GetCurrentTime)、将时间资料格式化、抽取特定字段(时、分、秒)等等。它 



                        对于+ 、…、+= 、…+ 等运算子都做了多载动作。 



                      ■  CTimeSpan  以秒数表现时间,通常用于计时码表。提供许多成员函数,包括把 



                        秒数转换为日、时、分、秒等等。 



                      ■  CString 用来处理字符串。支持标准的运算子如= 、+= 、《 和》 。 



               异常处理类别 (exception handling classes) 



                   所谓异常情况(exception ),是发生在你的程序执行时期的不正常情况,像是文件打不 



                   开、内存不足、写入失败等等等。我曾经在第2章最后面介绍过异常处理的观念及相 



                   关的MFC 类别,并在第4章「Exception Handling」一节介绍过一个简单的例子。与「异 



                   常处理」有关的MFC 类别一共有以下11 种: 



                                                   CException 

                                                    CException 



                                                   CArchiveException 

                                                    CArchiveException 



                                                     CDaoException 

                                                     CDaoException 



                                                     CDBException 

                                                      CDBException 



                                                     CFileException 

                                                      CFileException 



                                                   CMemoryException 

                                                    CMemoryException 



                                                 CNotSupportedException 

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