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

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

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



…………………………………………………………Page 364……………………………………………………………

                   第篇    欲善工事先利其器 



                      选按图左ResourceView 中的一套Menu,于是右侧出现Menu 编辑器。 



                      假设我在菜单上添加一份popup 菜单,内有“JJHou”                  和“MJChen”  两个项目。不但RC 



                      档的MENU 资源有了变化: 



                       IDR_MYTYPE MENU PRELOAD DISCARDABLE 

                       BEGIN 

                           。。。 

                       POPUP 〃MyFamily〃 

                           BEGIN 

                               MENUITEM 〃JJHou〃;   ID_MYFAMILY_JJHOU 

                               MENUITEM 〃MJChen〃;  ID_MYFAMILY_MJCHEN 

                           END 

                       END 



                      STRINGTABLE 也多了两个字符串定义,作为状态列消息: 



                       STRINGTABLE DISCARDABLE 

                       BEGIN 

                           ID_MYFAMILY_JJHOU   〃J。J。Hou is a Good man〃 

                           ID_MYFAMILY_MJCHEN  〃M。J。Chen is a Good woman〃 

                       END 



                       此外,RESOURCE。H 也多了两个常数定义: 



                       #define ID_MYFAMILY_JJHOU     32771 

                       #define ID_MYFAMILY_MJCHEN    32772 



302 


…………………………………………………………Page 365……………………………………………………………

                                     第4章    Visual C++  整合性軟體開發環境 



    此外也造成。CLW 档的变化,好让ClassWizard 知悉。ClassWizard 将在稍后介绍。 



加速键 (Accelerator)编辑器 



    AppWizard  已经为骨干程序中的许多标准菜单项目设计了加速键。通常加速键是两个按 



    键的组合(例如Alt + N ),用以取代鼠标在层层菜单中的拉下、选按动作。所有的加速 



    键设定都集中在RC 文件的加速键表格中,双击其中任何一个,就会出现加速键编辑器为 



    你服务。你可以利用它改变加速键的按键组合。 



    选按图左ResourceView 中的一个Accelerator,于是右侧出现Accelerator 编辑器。你可以直 



    接在每一个项目上修改内容。 



                                                                  303 


…………………………………………………………Page 366……………………………………………………………

              第篇    欲善工事先利其器 



         对话框 (Dialog)编辑器 



              任何一个由AppWizard 产生出来的骨干程序,都有一个很简单朴素的〃About〃 对话框: 



              选按图左ResourceView 中的IDD_ABOUTBOX,右侧出现Dialog 编辑器并将About 对话框加载。 



              图右方有一个工具箱,内有许多控制组件(control ): 



              你可以在编辑器中任意改变对话框及控制组件的大小和位置,也可以任意拖拉工具箱内 



              的组件放入对话框中。这些动作最后组成RC 文件中的对话框模板(Dialog template),也 



              就是对话框外貌的文字描述,像这样: 



304 


…………………………………………………………Page 367……………………………………………………………

                                                 第4章    Visual C++  整合性軟體開發環境 



        IDD_ABOUTBOX DIALOG DISCARDABLE  0; 0; 217; 55 

        CAPTION 〃About Scribble〃 

        STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 

        FONT 8; 〃MS Sans Serif〃 

        BEGIN 

            ICON    IDR_MAINFRAME;IDC_STATIC;11;17;20;20 

            LTEXT   〃Scribble Version 1。0〃;IDC_STATIC;40;10;119;8;SS_NOPREFIX 

            LTEXT   〃Copyright 251 1996〃;IDC_STATIC;40;25;119;8 

            DEFPUSHBUTTON  〃OK〃;IDOK;178;7;32;14;WS_GROUP 

        END 



Console 程序的项目管理 



      MFC AppWizard 会自动帮我们做出一个骨干程序的所有必须文件,建立起一个项目。但 



      如果你想写一个「血统单纯」的纯粹C++ 程序呢?第1章曾经介绍过所谓的console 程 



      式。第3章的所有范例程序也都是console 程序。 



      架构单纯的程序,如果文件只有一两个,直接使用命令列就可以了: 



               CL xxx。CPP  



      如果组织架构比较复杂一点,文件有好几个,可以寻求项目管理员的协助。在Visual C++ 



      整合环境中建立一个conole 程序项目的步骤如下: 



      1。 选按整合环境的【File/New 】,然后选择【Projects 】附页,选按〃Win32 Console 



      Application〃 ,并填写画面右端的项目名称和位置: 



                                                                                       305 


…………………………………………………………Page 368……………………………………………………………

                第篇    欲善工事先利其器 



                  2。 按下【OK 】钮,回到整合环境主画面,你可以选按【File/New 】并选择【Files 】 



                    附页,然后选按〃C/C++ Header File〃 或〃C++ Source File〃  以开启文件并撰写 



                    程序代码。开启的文件会自动加入此项目中。 



306 


…………………………………………………………Page 369……………………………………………………………

                                   第4章    Visual C++  整合性軟體開發環境 



3。 你可以选按整合环境的【Project/Setting】菜单项目,从中获得并修改整个项目 



  的环境设定。我曾经在第1章提过,  console  程序必须在编译时指定 



  /D_CONSOLE 常数,并在联结时指定subsystem:console,这在以下两个画面中 



  都可以看到(那是项目管理员自动为我们设定好的): 



                                                                     307 


…………………………………………………………Page 370……………………………………………………………

               第篇    欲善工事先利其器 



               第1章讨论console 程序时,我曾经说过,程序使用MFC 与否,关系到C runtime library 



               的单线程版或多线程版。是的,这项设定放在【General 】附页之中: 



               你在这里所做的设定,会自动影响项目所联结的C runtime library 的版本。 



308 


…………………………………………………………Page 371……………………………………………………………

                                         3 



     浅出  MFC 程序设计 



深入湷觥FC 

                2nd Edition 



                                               309 


…………………………………………………………Page 372……………………………………………………………

                           MFC           

              第篇 湷觥          〕淌皆O計 



 310 


…………………………………………………………Page 373……………………………………………………………

                                    第5章    總觀Application Framework  



  第5章 



      总观 Application Framework 



    带艺术气息的软件创作行为将在Application Framework出现后逐渐成为工匠技术, 



             而我们都将成为软件IC装配厂里的男工女工。 



          但,不是亨利福特,我们又如何能够享受大众化的汽车? 



     或许以后会出现「纯手工精制」的软件,可我自己从来不嫌机器馒头难吃。 



什么是 Application Framework? 



   还没有学习任何一套Application Framework  的使用之前,就给你近乎学术性的定义,我 



   可以想象对你而言绝对是「形而上的」(超物质的无形哲理),尤其如果你对对象导向 



    (Object Oriented )也还没有深刻体会的话。形而上者谓之道,形而下者谓之器,我想能 



   够舍器而直接近道者,几稀!但是,「定义」这种东西又似乎宜开宗明义摆在前头。我 



   诚挚地希望你在阅读后续的技术章节时能够时而回来看看这些形而上的叙述。当你有所 



   感受,技术面应该也进入某个层次了。 



                                                            311 


…………………………………………………………Page 374……………………………………………………………

             第篇    湷觥 FC  程式設計 



          侯捷怎么说 



              首先我们看看侯捷在其无责任书评中是怎么说的: 



             演化(revolution)永远在进行,但这个世界却不是每天都有革命性 (revolution)的事物 



             发生。动不动宣称自己(或自己的产品)是划时代的革命性的,带来的影响就像时下满 



             街跑的大师一样使我们渐渐无动于衷( 大师不可能满街跑)  ! 但是Application 



             Framework 的的确确在我们软件界称得上具有革命精神。 



             什么是Application Framework?Framework 这个字眼有组织、框架、体制的意思, 



              Application Framework不仅是一般性的泛称,它其实还是对象导向领域中的一个专有名 



             词。 



             基本上你可以说;Application Framework是一个完整的程序模型,具备标准应用软件所 



             需的一切基本功能,像是文件存取、打印预视、资料交换。。。,以及这些功能的使用接口 



              (工具栏、状态列、菜单、对话框)。如果更以术语来说,Application Framework 就是 



              由一整组合作无间的「对象」架构起来的大模型。喔不不,当它还没有与你的程序产生 



             火花的时候,它还只是有形无体,应该说是一组合作无间的「类别」架构起来的大模型。 



             这带来什么好处呢?程序员只要带个购物袋到「类别超级市场」采买,随你要买MDI 或 



             OLE 或 ODBC 或Printing Preview,回家后就可以轻易拼凑出一个色香味俱全的大餐。 



              「类别超级市场」就是C++ 类别库,以产品而言,在Microsoft 是MFC,在Borland 



             是OWL,在IBM 则是OpenClass。这个类别库不只是类别库而已,传统的函数库(C 



             Runtime 或Windows API)乃至于一般类别库提供的是生鲜超市中的一条鱼一支葱一颗 



             大白菜,彼此之间没有什么关联,主掌中馈的你必须自己选材自己调理。能够称得上 



             Application Framework 者,提供的是火锅拼盘(就是那种带回家通通丢下锅就好的那 



             种),依你要的是白菜火锅鱼头火锅或是麻辣火锅,菜色带调理包都给你配好。当然这 



             样的火锅拼盘是不能够就地吃的,你得给它加点能量。放把火烧它吧,这火就是所谓的 



             application object (在MFC 程序中就是衍生自CWinApp 的一个全域性对象)。是这 



312 


…………………………………………………………Page 375……………………………………………………………

                                  第5章    總觀Application Framework  



个对象引起了连锁反应(一连串的 'new'),使每一个形(类别)有了真正的体(对象), 



把应用程序以及Application Framework 整个带动起来。一切因缘全由是起。 



Application Framework 带来的革命精神是,程序模型已经存在,程序员只要依个人需求 



加料就好:在衍生类别中改写虚拟函数,或在衍生类别中加上新的成员函数。这很像你 



在火锅拼盘中依个人口味加盐添醋。 



由于程序代码的初期规模十分一致(什么样风格的程序应该使用什么类别,是一成不变 



的),而修改程序以符合私人需要的基本动作也很一致(我是指像「开辟一个空的骨干 



函数」这种事情),你动不了Application Framework 的大架构,也不需要动。这是福利 



不是约束。 



应用程序代码骨干一致化的结果,使优越的软件开发工具如CASE (puter Aid 



Software Engineering)tool 容易开发出来。你的程序代码大架构掌握在Application 



Framework 设计者手上, 于是他们就有能力制作出整合开发环境(  Integrated 



Development Environment,IDE)了。这也是为什么Microsoft、Borland、Symantec、 



Wat、IBM 等公司的整合开发环境进步得如此令人咋舌的原因了。 



有人说工学院中唯一保有人文气息的只剩建筑系,我总觉得信息系也勉强可以算上。带 



艺术气息的软件创作行为(我一直是这么认为的)将在Application Framework 出现后 



逐渐成为工匠技术,而我们都将只是软件IC 装配厂里的男工女工。其实也没什么好顾 



影自怜,功成名就的冠冕从来也不曾落在程序员头上;我们可能像纽约街头的普普 



 ( 

  POP)工作者,自认为艺术家,可别人怎么看呢?不得而知!话说回来,把开发软件 



这件事情从艺术降格到工技,对人类只有好处没有坏处。不是亨利福特,我们又如何能 



够享受大众化的汽车?或许以后会出现「纯手工精制」的软件,谁感兴趣不得而知,我 



自己嘛。。。唔。。。倒是从来不嫌机器馒头难吃。 



如果要三言两语点出Application Framework 的特质,我会这么说:我们挖出别人早写 



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