MFC-01-Chapter01:Hello,MFC---1.2 MFC简介
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函数则任何地方都可以调用。
MFC-01-Chapter01:Hello,MFC---1.2 MFC简介的更多相关文章
- MFC下调用控制台和控制台下MFC库的支持
1.MFC下调用控制台 在CWinApp的InitInstance中对话框的DoModal之前加入 AllocConsole(); // 开辟控制台 SetConsoleTitle(_T(" ...
- VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html 上一讲中讲了VS20 ...
- 在共享DLL中使用MFC 和在静态库中使用MFC的区别
使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义. ...
- MFC学习笔记(一): 不用MFC向导如何新建一个MFC程序
使用Visual Studio新建一个空项目,项目命名为HelloMFC,完成后,打开项目属性页面,将配置属性选项卡中的常规项打开,将其中的MFC的使用属性栏改为:在静态库中使用MFC或者在共享DLL ...
- VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)
上一节中鸡啄米讲了CFile文件操作类,本节主要来说说MFC异常处理. 在鸡啄米C++编程入门系列的最后一节鸡啄米:C++编程入门系列之五十(异常处理)中,鸡啄米讲了C++标准异常的处理机制,如果你还 ...
- MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC(转)
原文转自 https://blog.csdn.net/albertsh/article/details/52838419 1.使用标准Windows库 使用WINDOWS SDK API库,不使用MF ...
- mfc中Button、Edit Control和MFC EditBrowse Control的用法
[前(fei)言(hua)] 写LL(1)分析器被CString转string卡了一个多小时也是醉了. 趁着还算清醒写下这次用到的控件的使用方法好了. 这次实验的mfc用到了四个控件:Edit Con ...
- VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)
上一节中鸡啄米讲了定时器Timer的用法,本节介绍下文件操作类CFile类的使用. CFile类概述 如果你学过C语言,应该知道文件操作使用的是文件指针,通过文件指针实现对它指向的文件的各种操作.这些 ...
- VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...
- VS2010/MFC编程入门之四十二(MFC常用类:CString类)
上一节鸡啄米讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类. CString类简介 CString类作为MFC的常用类,当之无愧.可以这样说,只要是从事MFC开发,基 ...
随机推荐
- MVC 外网 上传 下载 实现方式(一)
本人在实现第三方文件存储时,为实现Web网络的上传和下载 的实现费了一些时间,然后总结到的一些问题: 如有思路狭隘之处还望指正! 文件上传时: 实现方式 为: 客户端=>第三方=>服务器( ...
- validate插件深入学习-02 常用方法和validate对象的方法
①检查表单元素是否有效 valid() 在表单内添加<button id="check">检查</button> $('#check').click(fun ...
- [bzoj2743][HEOI2012]采花(树状数组+离线)
2743: [HEOI2012]采花 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 1832 Solved: 954[Submit][Status] ...
- 修改CMD字符编码
1.参考网址: 1.1.http://blog.useasp.net/archive/2012/04/24/how_to_use_UTF8_encoding_in_Windows_CMD.aspx 1 ...
- 转载ali面
引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字. 写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善. 之前LZ写过一篇<回答阿里社招面试如何准备,顺便谈谈 ...
- 自定义UI集成微信、QQ、微博分享功能
目前社会化分享是一个非常常见的功能,通过阅读官方文档可以进行对应平台的分享.在项目中原本有微信的分享,后来需要集成QQ和微博的分享,于是想着用ShareSDK,在使用的过程中发现ShareSDK中的w ...
- SPSS数据分析—对数线性模型
我们之前讲Logistic回归模型的时候说过,分类数据在使用卡方检验的时候,当分类过多或者每个类别的水平数过多时,单元格会划分的非常细,有可能会导致大量单元格频数很小甚至为0,并且卡方检验虽然可以分析 ...
- u盘文件恢复
同事的一个u盘,在别的机器上用过之后,插到自己的机器上,被360报警有木马,处理完后,一些文件和文件夹不见了. 拿到我的机器上,360弹出框问要不要处理,列表里显示有几个文件夹被隐藏起来了,选择显示后 ...
- SQL Developer新建连接
1.打开SQL Developer,新建sys连接(sys为系统管理员拥有最高权限): 2.新建system连接(system为本地管理员,拥有次高权限): 3.新建scott(scott为普通用户, ...
- 爹地,我找到了!15个极好的Linux find命令示例
爹地,我找到了!15个极好的Linux find命令示例 http://blog.jobbole.com/48931/ 妈咪,我找到了!15个实用的Linux find命令示例 http://blog ...