程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的 。
虚拟函数和动态约束
MFC以“C++”为基?。?自然支持虚拟函数和动态约束 。但是作为一个编程框架,有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下 。例如,CWnd封装 Windows窗口对象时,每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承 。如果这些函数都设计成虚拟函数 , 由于数量太多,实现起来不现实 。于是 , MFC建立了消息映射机制 , 以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题 。
这样 , 通过虚拟函数和消息映射,MFC类提供了丰富的编程接口 。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架 。MFC编程框架将在适当的时候、适当的地方来调用程序的代码 。本书将充分的展示MFC调用虚拟函数和消息处理函数的内幕,让读者对MFC的编程接口有清晰的理解 。
MFC的宏观框架体系
如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来 。这样封装的结果对程序员来说,是一套开发模板(或者说模式) 。针对不同的应用和目的,程序员采用不同的模板 。例如,SDI应用程序的模板 , MDI应用程序的模板 , 规则DLL应用程序的模板 , 扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板,等等 。
这些模板都采用了以文档-视为中心的思想,每一个模板都包含一组特定的类 。典型的MDI应用程序的构成将在下一节具体讨论 。
为了支持对应用程序概念的封装 , MFC内部必须作大量的工作 。例如,为了实现消息映射机制,MFC编程框架必须要保证首先得到消息,然后按既定的方法进行处理 。又如,为了实现对DLL编程的支持和多线程编程的支持,MFC内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息 。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序 。
总之,MFC封装了Win32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口 , 简化了Windows编程 。同时 , MFC支持对底层API的直接调用 。
MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理 , 等等 。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件 。
- 为啥这种塑料袋不建议装肉食
- 违章停车扣分吗罚多少钱3分200
- 南韩丝面料容易起球吗 南韩丝面料的优缺点
- 管道如何和法兰垂直连接 管道法兰的一些基本选择是什么
- 自制西梅干西梅汁
- 食在广州味在顺德还是味在潮汕 广东化州十大特色美食
- 口碑两极化的影视剧 星球大战的外传有哪些
- 10公里和10千米是有很大区别
- 负面情绪多的人怎么调整 如何远离每天都是负面情绪的人
- 《水调歌头·明月几时有》的全诗
