MFC程序设计之来龙去脉

 MFC程序设计
             之来龙去脉
 题记:前些日子一直想写这个东西,做了一个开头放在我的BLOG上(但是名为<MFC框架程序WINMAIN函数分析>),到后来就没有再管了,其实那只是冰山一角.具体MFC是怎么运行的,还是没有交待清楚,虽然自己的BLOG很少有人光顾,但是本着做事儿就要做到底的心态,继续完成该文。
 说明:1、本文作者在VS2003中跟踪代码,此代码为VS2003中拷贝,使用MFC7。
       2、不同框架的MFC程序由所不同,本文以单文档为例。
          3、本文读者需要有一定的SDK的基础,不需要太多,至少知道它的基本框架和来龙去脉即可!
          4、文章只想起到说明作用,所以代码会有一些删除。
 学MFC,竟然还不知道MFC的MAIN函数在什么地方?怎么运行的?实在不高明。
 看过候捷(JJHOU)老师的《深入浅出MFC》的,对它一定很熟悉。呵呵,本文是献给没有看过那本书,但是又很希望学习MFC程序设计的朋友的。(没有看过那本书的朋友还不赶快去买?)其实本文,主要是对《深入浅出MFC》第六章的一个总结和补充罢了!(本文有该书不同的地方,也有一些笔者自己的见解!)
 言归正传。
 假如你用AppWizard一步一步NEXT下来,然后在CLASSVIEW中去找寻WINMAIN函数,那么你只有失望。MFC最大的特点是什么?封装!MFC的确封装的太好了,以至于很多想学习MFC的人都望而却步。闲话少说,还是继续我们今天的话题,MAIN函数!实话告诉你吧,即使你搜索所有的MFC生成的文件,都无法发现WINMAIN的字眼,那么它就近在什么地方呢?
 我相信你已经想到,MAIN函数应该在主要的应用程序文件中。难道是“您定义的程序名.cpp”这个文件?不错就是它。再Crtl+F一下,看有没有我们要找的WINMAIN函数?看来你又要失望了,但是你注意有这样一句:
 
/
// The one and only CMyApp object

 CMyApp theApp;   //本人建立的工程名为My。
 
 
 是不是很特别,再注意一下那句注释“The one and only CMyApp object”,每个应用程序有且只用一个CMyApp对象。我想你应该想到了,WinMain函数每个程序也只能有一个,那么这个全局对象跟WinMain函数肯定有莫大的关系?没错,相信你的直觉。
 特别注意:深晓C++细节的人一定知道,全局对象优先于MAIN函数执行的道理。如果你不知道也没关系,那么我在这里告诉你:“全局对象优先于MIAN函数执行,且构建于栈中,切记,切记!”
 现在,我们该深入WinMain运行机制了,确切的说,应该是MFC的机制!
 首先,看看MFC的库文件把,它能给我们带来许多惊喜。(vc6的相应的目录是\Microsoft Visual Studio\VC98\MFC\SRC;VC7相应的目录是\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc)
 现在我们就从这个全局下手,开始今天的旅途。
 CMyApp theApp;
 此时,系统会执行CMyApp的父类(CWinApp)构造函数,再执行CMyApp的构造函数。(先有老爹,再有儿子!),此时就会调用CWin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HsiaoShawn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值