【vc++精品源码栏目提醒】:网学会员在vc++精品源码频道为大家收集整理了“【精品】【MFC六大关键技术】深入解析【MFC封装】运行机制的奥秘 - 其它资料“提供大家参考,希望对大家有所帮助!
MFC 六大关键技术MFC 六大关键技术之初始化过程 我并不认为 MFC 减轻了程序员们的负担,MFC 出现的目的虽然似乎是为了让程序员不用懂得太多就【可以进行视窗编程】,但本人在 MFC 里徘徊了很久很久(因为那时没有 ,毫无收获。
可能朋友们会说,书本详细介绍 MFC 的原理) 【怎么一定要了解 MFC 的具体 ,呢】“黑箱”作业不行吗?这不是微软的初衷吗? ! 不行!!如果这样,我宁愿永远不选择 MFC!在学电脑之前,本人学习的东西大都与艺术不无关系,小学时参加过全国书画比赛获银奖。
儿时的爱好就是在一张纸上随心所欲地画画!MFC“黑箱”就象一幅硕大的抽象画(抽象到你不能理解) ,它用铅笔勾画好线条,然后请你填颜色。
我们怎么能忍受“黑箱”作业?我们选择 C,就是因为它够自由,够艺术,我们可以在此放飞幻想。
所以,我们要攻克 MFC。
伟大孙老师在剖析 MFC 的时候虽然尽心尽力,但可能由于篇幅所限,说得并不大清楚(我相信许多学员都有这方面的感受)。
在此,我突发奇想,想与大家一同分享一下著名的MFC 六大关键技术。
从什么地方开始讲起好呢?我觉得回到最初摸索 MFC 的时候,从基本谈起最好。
因为我知道,一个走过来程序员,总是忘记了 , 【当初自己是怎么走过来的】 忘记了【一个学员最想知道的是什么】 ,足学以令手无寸铁 。
一个小小的问题(一两句话就可以解释的)的学员头大半个月,所以,我努力回忆【当初是怎么让自己豁然开朗的】 。
转入正题,MFC 的六大关键技术包括: MFC 程序的初始化过程 运行时类型识别(RTTI) 动态创建 永久保存 消息映射 消息传递MFC 程序的初始化过程 1、设计一个简单完整 MFC 程序,产生一个窗口。
当然这不能让 AppWizard 自动为我们生成。
我们可以在 Win32 Application 工程下面那样写:include <afxwin.h>class MyApp : public CWinApp public: BOOL InitInstance //②程序入点 CFrameWnd Framenew CFrameWnd//构造框架 m_pMainWndFrame //将 m_pMainWnd 设定为 Frame Frame->CreateNULLquot最简单的窗口quot//建立框架 Frame->ShowWindowSW_SHOW //显示框架 return true //返回 MyApp theApp //①建立应用程序。
设定链接 MFC 库,运行,即可看见一个窗口。
从上面,大家可以看到建立一个 MFC 窗口很容易,只用两步:一是【从 CWinApp 派 】 】生一个应用程序类(这里是 MyApp) ,然后【建立应用程序对象(theApp) ,就可以产生一个自己需要的窗口即【需要什么样就在 InitInstance里创建】就行了。
【改写一个 整 个 程 序 , 就InitInstance函数】【创建 ,那么一个对象(theApp) 】 【这就是“黑箱”作业】的力就是一个完整的窗口程序。
魅 !! !! 我们想 在我们正想为微软鼓掌的时候,我们突然觉得心里空荡荡的,知道微软帮我们做了什么事情?而我们想编自己的程序时又【需要做什么事情】 ,那怕在上面几行的程序里面,我们还有不清楚的地方,比如,干嘛有一个m_pMainWnd 指针变量,它从哪里来,又要到哪里去呢?想一想在 DOS 下编程是多么美妙的一件事呵,我们需要什么变量,就声明什么变量,需要什么样的函数,就编写什么样的函 !数,或者引用函数库……但是现在我们怎么办!! MFC 要达到这种效果,它 我们可以逆向思维一下,是怎么做的呢?首先我们要弄明白,VC 不是一种语言,它就象我们学c 语言的时候的一个类似记事本的编辑器(请原谅我的不贴切的比喻),所以,在 VC 里面我们用的是 C语言编程,C才是根本(初学者总是以为 VC 是一门什么新的什么语言,一门比 C先进很多的复杂语言,汗)。
说了那么多,我想用一句简单的话概括【“MFC‘黑箱’就是帮助我们插入了‘C代码’ 】的东西”。
既然 MFC 黑箱帮我们插入了代码,那么大家想想它会帮我们插入什么样的代码呢?他 【每会帮我们插入求解一元二次方程的代码吗?当然不会,所以它插入的实际上是次编写窗口