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

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

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


的C++ 类别库,附含在Borland C++ 之中。 



Application Framework 在对象导向领域中,这是一个专有名词。关于它的意义,本书 



第5章有不少介绍。基本上它可以说是一个更有凝聚力,关联性更强的类别库。并不是 



每一套C++ 类别库都有资格称为Application Framework ,不过MFC 和OWL 都可入 



列,IBM  的Open Class Library 也是。Application Framework  当然不一定得是C++ 类别 



库,Java 和Delphi 应该也都称得上。 



为使全书文字流畅精简,我用了一些缩写字: 



  API Application Programming Interface 



  DLL Dynamic Link Library 



  GUI Graphics User Interface 



  MDI Multiple Document Interface 



                                                                            31 


…………………………………………………………Page 54……………………………………………………………

                   深入湷觥 FC 



                   MFC Microsoft Foundation Class 



                   OLE Object Linking & Embedded 



                   OWL Object Windows Library 



                   SDK Software Development Kit 



                   SDI Single Document Interface 



                   UI    User Interface 



                   WinApp : Windows Application 



                  以下是本书使用之中英文名词对照表: 



                                                       、       、        。 

                                                   Edit ListBox Button。。。 

                   control           控制组件,如 



                   drag & drop       拖放(鼠标左键按下,选中图标后拖动,然后放开) 



                   Icon              图标(窗口缩小化后的小图样) 



                   linked…list       串行 



                   listbox           列表框、列表清单 



                   notification      通告消息(发生于控制组件) 



                   preemptive        强制性、先占式、优先权式 



                   process           进程(一个执行起来的程序) 



                   queue             队列 



                   template         template C++ 有所谓的class template,一般译为类别模板; 



                                    Windows 有所谓的dialog template,我把它译为对话框模板; 



                                    MFC 有所谓的Document Template,我没有译它(其义请见第7章 



                                    和第8章) 



                   window class      窗口类别(不是一种  C++  类別) 



                   window focus      窗口焦点(拥有焦点之窗口,将可获得键盘输入) 



32 


…………………………………………………………Page 55……………………………………………………………

                                                           第0章    你定要知道(導讀) 



 类别                         class 



 对象                         object 



 构造式                     constructor 



 析构式                     destructor 



 运算子                     operator 



 改写                         override 



 多载                         overloading,亦有他书译为「过荷」 



 封装                         Encapsulation 



 继承                         Inheritance 



 动态绑定                 Dynamic Binding,亦即后期绑定(late binding) 



 虚拟函数                 virtual function 



 多态                         Polymorphism,亦有他书译为「同名异式」 



 成员函数                 member function 



 成员变量                 data member ,亦有他书译为「数据成员」 



 基础类别                 Base Class ,亦即父类别 



 衍生类别                 Derived Class,亦即子类别 



另有一些名词很难说用什么中文字眼才好。例如〃double click〃,有时候我写「双击」, 



有时候我写「以鼠标快按两下」;而〃click〃,我可能用「选按」「选择」「以鼠标按一 



下」等字眼,完全视上下文而定。虽没有统一,但您在文字中一定会了解我的意思。我 



期盼写出一本读起来很顺又绝对不会让你误解意思的中文计算机书。还有些名词在某些场 



合使用中文而在某些场合使用原文,例如Class                       (类别)和Object      (对象)和Menu        (菜 



单),为的也是使上下文阅读起来舒服一些。这些文字的使用都肇基于我个人对文字的 



认知以及习惯,如果与您的风格不符,深感抱歉。我已尽力在一个处处需要英文名词的 



领域中写一本尽可能阅读顺畅的中文技术书籍。 



                                                                                              33 


…………………………………………………………Page 56……………………………………………………………

              深入湷觥 FC 



            本书符号习惯 



              斜体字表示函数、常数、变量、语言保留字、宏、识别码等等,例如: 



                CreateWindow               这是Win32  函数 



                strtok                     这是C Runtime 函数库的函数 



                WM_CREATE                   这是Windows 消息 



                ID_FILE_OPEN                这是资源识别码(ID ) 



                CDocument::Serialize       这是MFC 类别的成员函数 



                m_pNewViewClass             这是MFC 类别的成员变量 



                BEGIN_MESSAGE_MAP          这是MFC 宏 



               public                       这是C++ 语言保留字 



                当我解释程序操作步骤时,如果使用中括号,例如【File/New 】,表示选按File 菜单中 



                的New 命令项。或者用来表示一个对话窗,例如我写:【New Project 】对话窗。 



             磁盘内容与安装 



                本书光盘片内含书中所有的范例程序,包括源代码与EXE 档。中介文件(如。OBJ 



                和。RES 等)并未放入。所有程序都可以在Visual C++ 5。0 整合环境中制作出来。安装 



                方式很简单(根本没有什么安装方式):利用DOS 外部指令,XCOPY,把整个光盘片 



                拷贝到你的硬盘上即是了。 



            范例程序说明 



                ■  Generic (第1章):这是一个Win32 程序,主要用意在让大家了解Win32 程 



                  式的基本架构。 



                ■  Jbackup (第1章):这是一个Win32 console 程序,主要用意在让大家了解 



34 


…………………………………………………………Page 57……………………………………………………………

                                                 第0章    你定要知道(導讀) 



   Visual C++ 整合环境中也可以做很单纯的DOS…like 程序,而且又能够使用 



   Win32 API 。 



■   MFCcon  (第1章):这是一个很简单的MFC console 程序,主要用意在让大 



   家了解Visual C++ 整合环境中也可以做很单纯的DOS…like 程序,而且又能 



   够使用MFC classes 。 



■   MltiThrd (第1章):这是一个Win32 多线程程序,示范如何以CreateThread 做 



    出多个执行线程,并设定其虚悬状态、优先权、重新激活状态、睡眠状态。 



■    Frame1~8 (第3章):这些都是console 程序(所谓DOS…like 程序),仿真并 



   简化Application Framework  的六大核心技术。只有! ¨ Persistence! ¨  技术未仿真 



    出来,因为那牵扯太广。 



   □  Frame1 :仿真MFC 阶层架构以及application object 



   □  Frame2 :仿真MFC  的WinMain 四大动作流程 



   □  Frame3 :仿真CRuntimeClass 以及DYNAMIC 宏,组织起所谓的类别型录网 



   □  Frame4 :仿真IsKindOf (执行时期对象类别的鉴识能力,也就是所谓的RTTI ) 



   □  Frame5 :仿真Dynamic Creation (MFC 2。5  的作法)(在本新版中已拿掉) 



   □  Frame6 :仿真Dynamic Creation (MFC 4。x  的作法) 



   □  Frame7 :仿真Message Map 



   □  Frame8 :仿真mand Routing 



■   Hello 范例程序(第6章):首先以最小量(两个)MFC 类别,完成一个最最 



   简单的MFC 程序。没有Document/View …事实上这正是MFC 1。0 版的应用 



   程序风貌。本例除了提供你对MFC 程序的第一印象,也对类别的静态成员函 



   式应用于callback 函数做了一个示范。每有窗口异动(产生WM_PAINT), 



   就有一个〃Hello MFC〃 字符串从天而降。此外,也示范了空闲时间(idle time ) 



   的处理。 



                                                                             35 


…………………………………………………………Page 58……………………………………………………………

               深入湷觥 FC 



             ■   Scribble Step0~Step5 : ! ¨  Scribble! ¨  范例之于MFC 程序设计, 几乎相当于 



               ! § Generic! ¨  范例之于SDK 程序设计。微软的「官方手册」Visual C++ Class 



               Library User's Guide 全书即以本例为主轴,介绍这个可以让你在窗口中以鼠标 



               左键绘图的程序。Scribble 程序共有Step1~Step7,七个阶段的所有源代码都 



               可以在Visual C++ 5。0  的DEVSTUDIOVCMFCSAMPLESSCRIBBLE  目录中 



               找到。本书只采用Step1~Step5,并增列Step0。Step6 是OnLine Help 的制 



               作,Step7 是OLE Server  的制作,这两个主题本书从缺。 



             ■   Scribble Step0-由MFC AppWizard 做出来的空壳程序,也就是所谓的MFC 骨 



               干程序。完整源代码列于第4章「东圈西点完成程序骨干」一节。完整解说出 



               现在第7章。 



             ■   Scribble Step1-具备Document/View 架构(第8章):本例主旨在加上资料处 



               理与显示的能力。这一版的窗口没有卷动能力。同一文件的两个显示窗口也没 



               有能够做到实时更新的效果。当你在窗口甲改变文件内容,对映至同一文件的 



               窗口乙并不会实时修正内容,必须等WM_PAINT 产生(例如拉大窗口)。 



               这个版本已具备打印与预视能力,但并非「所见即所得」(What You See Is What You 



               Get ),打印结果明显缩小,这是因为映射模式采用MM_TEX T 。15寸监视器的 640 



               个图素换到300dpi 上才不过两英寸多一点。 



               我们可以在这个版本中学习以AppWizard 制作骨干,并大量运用ClassWizard 为我 



               们增添消息处理函数;也可以学习如何设计Document ,如何改写CView::OnDraw 和 



               CDocument::Serialize,这是两个极端重要之虚拟函数。 



             ■   Scribble Step2-修改使用者接口(第9章):这个版本变化了菜单,使程序多 



               了笔宽设定功能。由于菜单的变化,也带动了工具栏与状态列的变化。 



               从这个版本中我们可以学习如何使用资源编辑器,制作各式各样的程序资源。为了把 



               菜单命令处理函数放置在适当的类别之中,我们需要深入了解所谓的Message 



36 


…………………………………………………………Page 59……………………………………………………………

                                           第0章    你定要知道(導讀) 



   Mapping 和mand Routing。 



■   Scribble Step3-增加「笔划宽度对话框」(第10 章):这个版本做出「画笔宽 



   度对话框」,使用者可以在其中设定细笔宽度和粗笔宽度。预设的细笔为两个 



   图素(pixel )宽,粗笔为五个图素宽。 



   从这个版本中可以学习如何以对话框编辑器设计对话框模板,以ClassWizard 增设对 



   话盒处理函数,以及如何以MFC 提供的DDX/DDV 机制做出对话框控制组件 



    (control )的内容传递与内容查核。DDX   (Dialog Data eXchange )的目的在简化应用 



   程序取得控制组件内容的过程,DDV  (Dialog Data Validation )的目的则在加强应用 



   程序对控制组件内容之数值合理化检查。 



■    Scribble Step4-加强显示能力滚动条与分裂窗口(第11 章):Scribble 可以 



   对同一份Document 产生一个以上的Views ,但有一个缺点亟待克服,那就是 



   你在窗口A的绘图动作不能实时影响窗口B …即使它们是同一份资料的一体 



   两面! 



   Step4 解决上述问题。主要关键在于我们必须想办法通知所有同血源(同一份 



   Document )的兄弟(各个Views ),让它们一起行动。但因此却必须多考虑一个情况: 



   当使用者的一个鼠标动作可能引发许多许多程序
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!