1 / 8
文档名称:

MFC,一开始就错了.doc

格式:doc   大小:28KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MFC,一开始就错了.doc

上传人:好用的文档 2021/7/26 文件大小:28 KB

下载得到文件列表

MFC,一开始就错了.doc

文档介绍

文档介绍:MFC,一开始就错了
MFC,一开始就错了
谨以此文祭奠过去多少年下来,日日夜夜学****MFC源代码的宝贵时光。
曾经以为MFC是世界上最神圣无比的东西,发誓在没彻底弄透MFC之前,绝不越雷池半步,碰都不要去碰LISP、ERLANG、PYTHON、VCL、ATL、STL、LOKI、BOOST各种美妙的好东西。即使一再听到高人说MFC设计得不好,非常糟糕,也都至死而不悔,然后只要稍微听到有人在说MFC的伟大,心里就特别高兴。买了各种各样的VC方面的书,什么四大天王、什么几十百千例、什么VC项目实例,彻夜苦读,单步调试,一次又一次地徘徊在MFC套来套去的各种美妙代码之中,观察里面各个对象的值。一次又一次地感叹MFC的伟大,一直在想,这辈子,如果能彻底地掌握MFC里面的一切秘密,朕就心满意足了。终于有一天,终于彻底醒悟,原来MFC真不是好东西,不过就是那些伎俩而已,真不该将它看得如此的伟大。这种念头一起来,再回过头来看MFC的一坨一坨代码,只觉得清晰无比,又感觉代码之中充满了各种无奈。接着再看看那些VC方面的书,除了四大天王还稍微有些可取之处,其他的任何一本,奇臭无比,没有一行代码经得起推敲, 文笔也糟糕无比,其内容又一再重复,抄来抄去,真正是一本又一本的狗屎。 感叹一下:这些书牺牲了多少宝贵的树木,又折磨死了多少读者的脑细胞,实在罪大恶极。
在MFC大河日下的当今的大环境之下,在下也不想对它落井添石,毕竟也在其上学到不少好东西,特别是阅读代码的能力,试问这么糟糕复杂的框架都可以精通,天下还有什么代码能看不懂(别自信满满,你敢碰BOOST里面的那些奇技***巧,匪夷所思的幻码吗)。但实在忍受不了躯体内另一个人日日夜夜,旦夕不停的诉求,兼之又一直恨铁不成钢,又为自己失去的青春阵痛不已。而VC2008中BCG的出现之后,VC2010还依然保留着那些蠢笨无比的BCG文件,不思悔改,终于让某彻底对MFC死心了,这货没得救了。
好吧,废话少说,赶紧进入正题。
国内C++界中一大侠说过,任何东西,都要先抓住其主干,其他的一切细节,都可以留待以后慢慢补充,否则,一开始就陷入细节,想跳出来就不容易了。大侠此语,实在有道理。(不知为什么,此大侠后期一直在对C++表示不满,当然,人家现在的境界,岂是我等小民所能体会)。不说其他,就说在C++中,必须站在一个高度上,纵观全局,才能将一切看得通通透透。于是,下面就尝试爬上高峰,来俯瞰MFC中的众生。MFC的主干,在下看来,既不是什么六大关键技术,也不是什么文档视图结构,更不是COM的封装,而是为了将原始的API中的各种对象,好比窗口、GDI、设备环境等,都映射成相应的多线程安全的C++对象,好比将HWND搞成CWnd,以期减轻WINDOWS下界面开发的工作量。
这种想法,其实也无可厚非,如果真能封装得好,确实可以提高生产代码效率,但是从C++和WINDOWS的设计观念中来看,这种映射,还是存在很大的问题,稍后再述。问题在于,MFC的实现,异常丑陋呆板,通过几个全局的线程安全局部变量的映射表,将句柄(Handle,此词译得相当令人恶心)与其相应的C++对象指针形成一一对应,并且指定,在大部分的消息处理和参数传递