首页 > 其他 > 详细

MFC-01-Chapter01:Hello,MFC---1.2 MFC简介

时间:2014-03-30 17:32:26      阅读:543      评论:0      收藏:0      [点我收藏+]

1.2 MFC简介

MFC是Microsoft提供的放置Windows API的面向对象的包装的C++类库。MFC大约封装了好几百个类,其中有一些可以直接调用,有些类可以作为用户自己的类的基类。一些MFC类比较简单,比如CPoint类代表一个二维数据点;一些类比较复杂,比如CWnd类,它封装了窗口的功能。在MFC程序中,我们并不经常直接用Windows API,而是从MFC类创建并调用其中的成员函数。

MFC也是一个应用程序的框架结构。不仅是类的集合,还帮助定义了应用程序的结构并为应用程序处理许多杂物。以CWinApp类为例,该类代表应用程序本身,MFC几乎封装了应用程序操作的所有方面;框架结构提供WinMain函数,而WinMain函数反过来调用应用程序对象的成员函数使程序运行下去;Run是WinMain调用CWinApp的成员函数,它提供一个消息循环,将消息送到应用程序的窗口。框架结构还提供抽象功能,例如文档/视图体系结构在API建造了功能强大的基础功能。

1.2.1 C++/MFC好处

使用面向对象思想进行开发有以下优点:
  1、易维护
    采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
  2、质量高
    在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
  3、效率高
    软件开发时根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
  4、易扩展
    由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

MFC能像C++一样吗?

  想给应用程序添加一个工具栏浮在窗口?没有问题,MFC提供了一个CToolBar类。

  需要一个链表或者可以调整尺寸的数组?很容易,CList和CArray以及其它MFC类提供封装的容器。

  开发ActiveX控件复杂吗?也很简单啊,COleControl和COlePropertyPage这些类简化了ActiveX的开发过程。

1.2.2 MFC设计思想

每当问道大神应该如何学习Java、如何学习C++、如何学习QT…,大神们总会这样跟你说:“重要的不是语言和工具,而是思想”。

MFC的设计思想及预期:

  1 MFC应该提供给Windows OS提供面向对象的接口

    通过编写类封装窗口、对话框及其它对象,引入虚函数来完成。

  2 MFC不能增加对应用程序内存造成不必要的开销

    MFC的设计人员今早就如何将窗口、菜单等包装作出选择。

1.2.3 文档/视图体系结构

MFC应用程序框架结构的基石是“文档/视图体系结构”。它定义了一种体系结构,该结构依靠文档对象保存应用程序的数据,并依靠视图对象控制视图中显示的数据。MFC在类CDocument和CView中为文档和视图提供基础结构。CWinApp、CFrameWnd和其它类与CDocument、CView合作,将所有片段连在了一起。

1.2.4 MFC类的分层结构

大多数MFC类都是从CObject中直接或者间接派生出来的,继承CObject的类具有3个重要特性:

  1 串行化支持

         对象的永久数据流出或流入存储介质的进行

  2 运行时类信息支持

         运行时类信息(RTCI)允许在运行时检索对象的类名称和其它信息

  3 诊断和调试支持

         对CObject派生类的实例执行有效检查,并将状态信息转存到一个调试窗口

1.2.5 AFX函数

不是所有的MFC函数都是类成员函数。MFC以全局函数的形式提供了自己各类的API函数,名字以Afx开头。类成员函数只能在所属的对象说明体重被调用,而Afx函数则任何地方都可以调用。

bubuko.com,布布扣

MFC-01-Chapter01:Hello,MFC---1.2 MFC简介,布布扣,bubuko.com

MFC-01-Chapter01:Hello,MFC---1.2 MFC简介

原文:http://www.cnblogs.com/ultrasound/p/3633011.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!