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

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

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






                     有极佳的示范。 



                   ■  CView 此类别负责将文件内容呈现到显示装置上:也许是屏幕,也许是打印 



                     机。文件内容的呈现由虚拟函数OnDraw 负责。由于这个类别实际上就是你在 



                     屏幕上所看到的窗口(外再罩一个外框窗口),所以它也负责使用者输入的第 



                     一线服务。例如第8章的Scribble Step1 范例,其View 类别便处理了鼠标的 



                     按键动作。 



              High level abstractions 



                   视觉性UI 对象属于此类,例如工具栏CToolBar、状态列CStatusBar、对话框列 



                   CDialogBar。加强型的View 也属此类,如可卷动的ScrollView 、以对话框为基础的 



334 


…………………………………………………………Page 397……………………………………………………………

                                                  第5章    總觀Application Framework  



       CFormView、小型文字编辑器CEditView、树状结构的CTreeView,支持RTF 文件格式 



       的CRichEditView 等等。 



   Afx 全域函数 



       还记得吧,C++ 并不是纯种的对象导向语言(SmallTalk 和Java 才是)。所以,MFC 



       之中得以存在有不属于任何类别的全域函数,它们统统在函数名称开头冠以Afx 。 



       下面是几个常见的Afx 全域函数: 



       函数名称                                  说明 



       AfxWinInit           被WinMain  (由MFC 提供)调用的一个函数,用做MFC GUI 



                            程序初始化的一部份,请看第6章的「AfxWinInit  AFX  内部 



                            初始化动作」一节。如果你写一个MFC console 程序,就得 



                            自行调用此函数(请参考Visual C++ 所附之Tear 范例程序)。 



       AfxBeginThread       开始一个新的执行线程(请看第14 章,# 756 页)。 



       AfxEndThread         结束一个旧的执行线程(请看第14 章,# 756 页)。 



       AfxFormatString1     类似printf  一般地将字符串格式化。 



       AfxFormatString2     类似printf  一般地将字符串格式化。 



       AfxMessageBox        类似Windows API  函数MessageBox 。 



       AfxOutputDebugString  将字符串输往除错装置(请参考附录D ,# 924 页)。 



       AfxGetApp            取得application object (CWinApp 衍生对象)的指针。 



       AfxGetMainWnd        取得程序主窗口的指针。 



       AfxGetInstance       取得程序的instance handle 。 



       AfxRegisterClass     以自定的WNDCLASS 注册窗口类别(如果MFC 提供的数个 



                            窗口类别不能满足你的话)。 



MFC 宏 (macros) 



       CObject 和CRuntimeClass 之中封装了数个所谓的object services ,包括「取得执行时期 



       的类别信息」(RTTI )、Serialization  (文件读写)、动态产生对象。。。等等。所有衍生自CObject 



                                                                                 335 


…………………………………………………………Page 398……………………………………………………………

               第篇    湷觥 FC  程式設計 



               的类别,都继承这些机能。我想你对这些名词及其代表的意义已经不再陌生…如果你没 



               有错过第3章的「MFC 六大技术仿真」的话。 



               ■  取得执行时期的类别信息(RTTI ),使你能够决定一个执行时期的对象的类别 



                 信息,这样的能力在你需要对函数参数做一些额外的类型检验,或是当你要针 



                 对对象属于某种类别而做特别的动作时,份外有用。 



               ■ Serialization   是指将对象内容写到文件中,或从文件中读出。如此一来对象的 



                 生命就可以在程序结束之后还延续下去,而在程序重新激活之后,再被读入。 



                 这样的对象可说是〃persistent〃  (永续存在)。 



               ■  所谓动态的对象生成(Dynamic object creation ),使你得以在执行时期产生一 



                 个特定的对象。例如document 、view 、和frame 对象就都必须支持动态对象 



                 生成,因为framework 需要在执行时期产生它们(第8章有更详细的说明)。 



               此外,OLE 常常需要在执行时期做对象的动态生成动作。例如一个OLE server 程序必 



               须能够动态产生OLE items ,用以反应OLE client 的需求。 



               MFC 针对上述这些机能,准备了一些宏,让程序能够很方便地继承并实作出上述四大 



               机能。这些宏包括: 



               宏名称                             提供机能                    出现章节 



               DECLARE_DYNAMIC          执行时期类别信息            第3章、第8章 



               IMPLEMENT_DYNAMIC        执行时期类别信息            第3章、第8章 



               DECLARE_DYNCREATE        动态生成                    第3章、第8章 



               IMPLEMENT_DYNCREATE      动态生成                    第3章、第8章 



               DECLARE_SERIAL            对象内容的文件读写          第3章、第8章 



               IMPLEMENT_SERIAL          对象内容的文件读写          第3章、第8章 



               DECLARE_OLECREATE OLE     对象的动态生成             不在本书范围之内 



               IMPLEMENT_OLECREATE OLE   对象的动态生成             不在本书范围之内 



336 


…………………………………………………………Page 399……………………………………………………………

                                           第5章    總觀Application Framework  



我也已经在第3章提过MFC  的消息映射(Message Mapping)与命令绕行(mand 



Routing)两个特性。这两个性质系由以下这些MFC 宏完成: 



宏名称                           提供机能                      出现章节 



DECLARE_MESSAGE_MAP           声明消息映射表数据结构         第3章、第9章 



BEGIN_MESSAGE_MAP          开始消息映射表的建置           第3章、第9章 



ON_MAND                    增加消息映射表中的项目         第3章、第9章 



ON_CONTROL                                     增加消息映射表中的项目         本书未举例 



ON_MESSAGE                   增加消息映射表中的项目         ??? 



ON_OLECMD                     增加消息映射表中的项目         本书未举例 



ON_REGISTERED_MESSAGE       增加消息映射表中的项目         本书未举例 



ON_REGISTERED_THREAD_       增加消息映射表中的项目         本书未举例 



MESSAGE 



ON_THREAD_MESSAGE          增加消息映射表中的项目         本书未举例 



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