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

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

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






C++ 是一个复杂的语言,AFX 小组预期MFC  的使用者不可能人人皆为C++ 专家,所 



以他们并没有采用所有的C++ 高阶性质(例如多重继承)。许多「麻烦」但「几乎一 



成不变」的Windows 程序动作都被隐藏在MFC 类别之中, 例如WinMain 、 



RegisterClass 、Window Procedure 等等等。 



 虽说这些被隐藏的Windows 程序动作几乎是一成不变的,但它们透露了Windows 程序 



 的原型奥秘,这也是为什么我要在本书之中锲而不舍地挖出它们的原因。 



                                                                     325 


…………………………………………………………Page 388……………………………………………………………

             第篇    湷觥 FC  程式設計 



              为了让MFC 尽可能地小,尽可能地快,AFX 小组不得不舍弃高度的抽象(导至过多的 



              虚拟函数),而引进他们自己发明的机制,尝试在对象导向领域中解决Windows 消息 



              的处理问题。这也就是本书第9章深入探讨的Message Mapping 和Message routing 机 



              制。注意,他们并没有改变C++ 语言本身,也没有扩大语言的功能。他们只是设计了 



              一些令人拍案叫绝的宏,而这些宏背后隐藏着巨大的机制。 



              了解这些宏(以及它们背后所代表的机制)的意义,以及隐藏在MFC 类别之中的那 



              些足以曝露原型机密的「麻烦事儿」,正是我认为掌握MFC 这套Application Framework 



              的重要手段。 



              就如同前面那些形而上的定义,MFC 是一组凝聚性强、组织性强的类别库。如果你要利 



              用MFC 发展你的应用程序,必须同时引用数个必要类别,互相搭配奥援。图5…3 是一 



              个标准的MFC 程序外貌。隐藏在精致画面背后更重要的是,就如我在前面说过,对象 



              与对象之间的关系已经存在,消息的流动程序也都已设定。当你要为这个程序设计真正 



              的应用功能,不必在意诸如「我如何得知使用者按左键?左键按下后我如何激活某一个 



              函数?参数如何传递过去。。。」等琐事,只要专注在左键之后真正要做的功能动作就好。 



                               窗口标题 



           菜单及工具栏中已提供标准之基础功能 

                                                                 菜单(menu) 

           ,如文件对话框、打印机设定、打印预                                     工具栏(toolbar) 



           视窗口、LRU (最近使用过的)文件清 



           单、MDI 窗口菜单、About 对话框;并 

                                                                 MDI 风格 

           提供了一些半成品,如剪贴簿功能、求 



           助(Help)系统。 



                    状态列(statusbar)                              键盘状态指示窗 

                                                                (indicator pane) 



                                          图5…3 标准MFC 程序的风貌。 



326 


…………………………………………………………Page 389……………………………………………………………

                                             第5章    總觀Application Framework  



白头宫女话天宝:Visual C++ 与 MFC 



     微软公司于1992/04 推出C/C++ 7。0 产品时初次向世人介绍了MFC 1。0 ,这个初试啼声 



     的产品包含了20;000 行C++ 源代码,60 个以上的Windows 相关类别,以及其它的 



     一般类别如时间、数据处理、文件、内存、诊断、字符串等等等。它所提供的,其实是 



     一个〃thin and efficient C++ transformation of the Windows API〃。其32 位版亦在 



     1992/07 随着Win32 SDK 推出。 



     MFC 1。0 获得的回响带给AFX 小组不少鼓舞。他们的下一个目标放在: 



        ■  更高阶的架构支持 



        ■ 罐装组件(尤其在使用者接口上) 



     前者成就了Document/View 架构,后者成就了工具栏、状态列、打印、预览等极受欢迎 



     的UI 性质。当然,他们并没有忘记兼容性与移植性。虽然AFX 小组并未承诺MFC 可以 



     跨不同操作系统如UNIX XWindow 、OS/2 PM 、Mac System 7 ,但在其本家(Windows 产 



     品线)身上,在16 位Windows 3。x 和32 位Windows 95 与Windows NT 之间的 



     移植性是无庸置疑的。虽然其16 位产品和32 位产品是分别包装销售,你的原始 



     码通常只需重新编译联结即可。 



     Visual C++ 1。0 (也就是C/C++ 8。0 )搭配MFC 2。0 于1993/03 推出,这是针对Windows 



     3。x 的16 位产品。接下来又在1993/08 推出在Windows NT 上的Visual C++ 1。1 for 



     Windows NT ,搭配的是MFC 2。1 。这两个版本有着相同的基本性质。MFC 2。0  内含近 



     60;000 行C++ 程序代码,分散在100 个以上的类别中。Visual C++ 整合环境的数个重要 



     工具(大家熟知的Wizards )本身即以MFC 2。0 设计完成,它们的出现对于软件生产效 



     率的提升有极大贡献。 



     微软在1993/12 又推出了16 位的Visual C++ 1。5 ,搭配MFC 2。5 。这个版本最大的进步 



     是多了OLE2 和ODBC 两组类别。整合环境也为了支持这两组类别而做了些微改变。 



                                                                         327 


…………………………………………………………Page 390……………………………………………………………

                 第篇    湷觥 FC  程式設計 



                  1994/09,微软推出Visual C++ 2。0 ,搭配MFC 3。0 ,这个32 位版本主要的特征在于 



                  配合目标操作系统(Windows NT 和Windows 95 ),支持多执行线程。所有类别都是 



                  thread…safe 。UI 对象方面,加入了属性表(Property Sheet )、miniframe 窗口、可随处停 



                  驻的工具栏。MFC collections 类别改良为template…based 。联结器有重大突破,原使用的 



                  Segmented Executable Linker 改为Incremental Linker,这种联结器在对OBJ 档做联结 



                  时,并不每次从头到尾重新来过,而只是把新资料往后加,旧资料加记作废。想当然耳, 



                  EXE 档会累积许多不用的垃圾,那没关系; 透过Win32 memory…mapped file; 操作系统 



                   (Windows NT 及Windows 95 )只把欲使用的部份加载,丝毫不影响执行速度。必要时 



                  程序员也可选用传统方式联结,这些垃圾自然就不见了。对我们这些终日受制于editbuild



                  run…debug 轮回的程序员; Incremental Linker 可真是个好礼物。 



                  1995/01,微软又加上了MAPI      (Messaging API )和WinSock 支持,推出MFC 3。1  (32 位 



                  元版),并供应13 个通用控制组件,也就是Windows 95 所提供的tree 、tooltip 、spin、 



                  slider、progress 、RTF edit 等等控制组件。 



                  1995/07,MFC 有了3。2 版,那是不值一提的小改版。 



                  然后就是1995/09 的32 位MFC 4。0 。这个版本纳入了DAO 数据库类别、多执行线程 



                  同步控制类别,并允许制作OCX containers 。搭配推出的Visual C++ 4。0 编译器,也终 



                  于支持了template、RTTI 等C++ 语言特性。IDE 整合环境有重大的改头换面行动,Class 



                  View 、Resource View 、File View 都使得项目的管理更直觉更轻松,Wizardbar 则活脱脱 



                  是一个简化的ClassWizard 。此外,多了一个极好用的ponents Gallery ,并允许程序 



                  员订制AppWizard 。 



                  1996 年上半年又推出了MFC 4。1 ,最大的焦点在ISAPI          (Internet Server API )的支持, 



                  提供五个新类别, 分别是CHttpServer 、CHttpFilter 、CHttpServerContext 、 



                  CHttpFilterContext、CHtmlStream,用以建立交互式Web 应用程序。整合环境方面也对 



                  应地提供了一个ISAPI Extension Wizard 。在附加价值上,Visual C++ 4。1 提供了Game 



                  SDK,帮助开发Windows 95 上的高效率游戏软件。Visual C++ 4。1 还提供不少个由协力 



328 


…………………………………………………………Page 391……………………………………………………………

                                           第5章    總觀Application Framework  



    公司完成的OLE 控制组件(OCXs ),这些OLE 控制组件技术很快就要全面由桌上跃 



    到网上,称为ActiveX 控制组件。不过,遗憾的是,Visual C++ 4。1  的编译器有些臭虫, 



    不能够制作VxD    (虚拟装置驱动程序)。 



    1996 年下半年推出的MFC 4。2 ,提供对ActiveX 更多的技术支持,并整合Standard C++ 



    Library 。它封包一组新的Win32 Internet 类别(统称为WinInet ),使Internet 上的程 



    式开发更容易。它提供22 个新类别和40 个以上的新成员函数。它也提供一些控制元 



    件,可以绑定(binding)近端和远程的资料源(data sources )。整合环境方面,Visual C++ 



    4。2 提供新的Wizard 给ActiveX 程序开发使用,改善了影像编辑器,使它能够处理在 



    Web 服务器上的两个标准图档格式:GIF 和JPEG 。 



    1997 年五月推出的Visual C++ 5。0 ,主要诉求在编译器的速度改善,并
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!