MFC编程点滴系列1-MFC起源与简介

这几天空闲时在看一本书,叫MFC Black Book。

MFC的书看得很多了,看到这本书还是被它的名字所吸引。

书比较老了(97年的),笔者用的还是VC5老古董,但是书中有些地方还是比较有意思的。书的目标读者是中级到高级的MFC编程人员。其实大家都可以看看,它讲了一些MFC的实现原理和怎样绕过MFC的束缚,对于一个MFC程序员,还是有价值的。

于是,我想根据自己的经验并结合这本书的内容,写一个MFC编程点滴系列。把我认为值得借鉴的一些经验与大家分享。当MFC势态日微时希望能引起某些同好的共鸣。


MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在Windows环境下编写C++应用程序的一个框架。是的,MFC只是Windows API的一个thin wrapper。相对于非面向对象的API来说,MFC是早期Windows桌面程序RAD的利器。从上世纪90年代初开始,MFC就开始为MS服役了,当时编程语言还是C, Pascal, Cobol, Fortran的天下。直到C++98前,作为面向对象的C++语言还没有一个公认的标准,这就是为什么老版本的MFC里有很多Microsoft Specific的原因,很多MFC的设计和实现被人诟病,其中很大的原因是因为MFC诞生在C++确立标准以前,可以说大部分是历史遗留问题。再回到上世纪90年代初,当时提起Borland公司可是鼎鼎大名,它的Borland C++中集成了OWL(Object Windows Library),曾经风光无限。这个OWL就是MFC当时最大的竞争对手。但MS就是MS,怎能允许另一家公司的编程语言在自己的地盘上撒野,于是1992年推出了MFC,当时还是DOS版的。但是直到1995年,MFC与Visual C++一直是处于追赶的角色,直到1998年VC6(MFC6.0)全胜。Borland从1999年停止了OWL开发。之后Borland又以Delphi和JBuilder窜红,但是人员被挖,经营状况不佳,产品更新跟不上,逐渐在编程语言领域丧失了优势,现在打开Borlan的主页,公司的标语是“Improving the Software Delivery Process Through Open ALM”,呵呵。MS always plays hard ball.

想想现在Java在Windows平台受到C#强有力挑战,Sun又因巨亏已被Oracle收购,Sun会不会步Borland的后尘?其实,编程语言,只是个工具,工具的好坏,还要看做工具的人。

再回到MFC诞生之前,当OOP与C++开始盛行,当Borland大红大紫,MS需要一个“先进”的东东,击败竞争对手,同时走在技术前沿。所以当Microsoft Foundation Classes这个东东出现的时候,程序员看到了一个先进的、OOP的工具,而Borland看到了一个强有力的竞争对手。

我一直觉得MFC应该是一帮绝顶聪明的人做的,因为Bill不会让平庸的人去做任何关于Microsoft Foundation的东东,哪怕是一根螺钉。

接下来,VC6以后的事情,有兴趣的TX可以看看我的前一篇博文“MFC死了吗?

 

/

下面这几个问题来自MFC Black Book,有兴趣的MFC程序员可以看看自己能不能解答?

1. 一个MFC程序必须具备的类是什么?

2. 怎样手动建立一个Message Map?

3. 怎样向一个Document关联其它View?

4. 为什么CRect不是从CObject派生的?

5. 知道CCmdTarget这个类是干什么用的吗?知道有那些类从它派生?

6. 知道一个MDI程序得到某个消息后,消息的传递是什么顺序吗?

 

本节完。

下节预告“MFC的消息机制”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值