追根究底,剖析mfc六大关键技术
我并不认为mfc减轻了程序员们的负担,mfc出现的目的虽然似乎是为了让程序员不用懂得太多就可以进行视窗编程,但本人在mfc里徘徊了很久很久(因为那时没有书本详细介绍mfc的原理),毫无收获.可能朋友们会说,怎么一定要了解mfc的具体呢,“黑箱”作业不行吗?这不是微软的初衷吗? 【程序编程相关:使用DUMPBIN命令】题外话: 【推荐阅读:在Windows中从DC读取文本行高的问】我们怎么能忍受“黑箱”作业?我们选择c++,就是因为它够自由,够艺术,我们可以在此放飞幻想.所以,我们要攻克mfc. 【扩展信息:数据库连接池的设计考虑】不行!!!如果这样,我宁愿永远不选择mfc!在学电脑之前,本人学习的东西大都与艺术不无关系,小学时参加过全国书画比赛获银奖.儿时的爱好就是在一张纸上随心所欲地画画!mfc“黑箱”就象一幅硕大的抽象画(抽象到你不能理解),它用铅笔勾画好线条,然后请你填颜色.伟大孙老师在剖析mfc的时候虽然尽心尽力,但可能由于篇幅所限,说得并不大清楚(我相信许多学员都有这方面的感受).在此,我突发奇想,想与大家一同分享一下著名的mfc六大关键技术.从什么地方开始讲起好呢?我觉得回到最初摸索mfc的时候,从基本谈起最好.因为我知道,一个走过来程序员,总是忘记了当初自己是怎么走过来的,忘记了一个学员最想知道的是什么.一个小小的问题(一两句话就可以解释的),足学以令手无寸铁的学员头大半个月,所以,我努力回忆当初是怎么让自己豁然开朗的.转入正题:mfc的六大关键技术包括:mfc程序的初始化过程.运行时类型识别(rtti).动态创建.永久保存.消息映射.消息传递.mfc程序的初始化过程1.设计一个简单完整mfc程序,产生一个窗口.当然这不能让appwizard自动为我们生成.我们可以在win32 application工程下面那样写:#include <afxwin.h>class myapp : public cwinapp{public: bool initinstance() //②程序入点 { cframewnd *frame=new cframewnd();//构造框架 m_pmainwnd=frame; //将m_pmainwnd设定为frame; frame->create(null,"最简单的窗口");//建立框架 frame->showwindow(sw_show); //显示框架 return true; //返回 }};myapp theapp; //①建立应用程序.设定链接mfc库,运行,即可看见一个窗口.
从上面,大家可以看到建立一个mfc窗口很容易,只用两步:一是从cwinapp派生一个应用程序类(这里是myapp),,然后建立应用程序对象(theapp),就可以产生一个自己需要的窗口(即需要什么样就在initinstance()里创建就行了).
整个程序,就改写一个initinstance()函数,创建那么一个对象(theapp),就是一个完整的窗口程序.... 下一页